/
Leonidvgol
/
Arkanoid
Обзор
Документация
Войти
/
Leonidvgol
/
Arkanoid
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
brick.cpp
91 строка
2 KB
Leonid_Golovyrin
Изменен способ генерации шариков из блоков, добавлено ограничение минимальной и максимальной скорости шарика, добавлен угол наклона боковых стен
10 апр 2025, 15:58
10 апр 2025, 15:58
d4f72eb
Код
Авторство
О чём код?
#include "brick.h" Brick::Brick(b2World* world, float column, float row, float columnMax, float rowMax, float resist) : GameObject(world), column (column), row (row), columnMax (columnMax), resist(resist) { width = WIDTH / columnMax; height = HEIGHT / (2 * rowMax); b2BodyDef bodyDef; bodyDef.type = b2_staticBody; bodyDef.position.Set(((WIDTH - (width * (columnMax - 1))) / 2 + width * column) / SCALE, - (height / 2 + height * row) / SCALE); bodyDef.linearDamping = 0; body = world->CreateBody(&bodyDef); setBody(body); b2PolygonShape box; box.SetAsBox(width / 2 / SCALE, height / 2 / SCALE); b2FixtureDef fixtureDef; fixtureDef.friction = 0.0f; fixtureDef.density = 10.0f; fixtureDef.shape = &box; body->CreateFixture(&fixtureDef); setRect(-width / 2, -height / 2, width, height); } void Brick::hitBrick() { } void Brick::setIntensity() { intensity = 155 + (10 * resist); } SimpleBrick::SimpleBrick(b2World* world, float column, float row, float columnMax, float rowMax, float resist) : Brick(world, column, row, columnMax, rowMax, resist) { setIntensity(); setBrush(QColor(0,intensity,0)); } void SimpleBrick::hitBrick() { --resist; if (resist<=0) { markForRemoval(); markForAdd(0); } else { setIntensity(); setBrush(QColor(0,intensity,0)); } } GoodBrick::GoodBrick(b2World* world, float column, float row, float columnMax, float rowMax, float resist) : Brick(world, column, row, columnMax, rowMax, resist) { setIntensity(); setBrush(QColor(0,0,intensity)); } void GoodBrick::hitBrick() { --resist; if (resist<=0) { markForRemoval(); markForAdd(1); } else { setIntensity(); setBrush(QColor(0,0,intensity)); } } BadBrick::BadBrick(b2World* world, float column, float row, float columnMax, float rowMax, float resist) : Brick(world, column, row, columnMax, rowMax, resist) { setIntensity(); setBrush(QColor(intensity,0,0)); } void BadBrick::hitBrick() { --resist; if (resist<=0) { markForRemoval(); markForAdd(2); } else { setIntensity(); setBrush(QColor(intensity,0,0)); } } void Brick::updateGraphics() { setPos(body->GetPosition().x * SCALE, -body->GetPosition().y * SCALE); }