Kolejna gra 2D napisana w Qt Creatorze

4

Witam
Napisałem następną grę 2D w Qt Creatorze w C++. Możecie ją obejrzeć na youtube

Kod jest tutaj
https://github.com/bandytaczasu/MouseCar/tree/master

3

Spoko, tylko dzwięk straszy.

3

nie mam czasu analizować teraz kodu ale parę rzeczy od razu rzuca się w oczy: W niektórych plikach pełno komentarzy ba jeden plik to prawie w większości wy komentowany kod, potrzebny refactor, miejscami długaśne funkcje/konstruktory, widzę pokomentowane delete(qt parent-children), puste destruktory. zapoznaj się z https://github.com/KDE/clazy . No i widzę użycie plików .ui nie widzę potrzeby.

ale ogólnie fajnie jak na projekcik jako pomysł do napisania i zapoznania się właśnie z qt.

4

Dodaj jakichś ludzi do rozjeżdżania.
Dopasuj wielkość auta to ulicy.

1

takie micromachines w wersji wczesnej alpha
fajne, ale do miana gry to chyba jeszcze daleko

0

@revcorey: Dzięki za opinię.

3

potrzebny refactor

Ja bym to zostawił i zaczął pisać kolejną grę ;) @ŁukaszS fajny projekt, wszystko działa, jest co pokazać, jeśli udało Ci się zrobić taką grę jaką zamierzałeś na początku to gratuluję.

Jeśli chodzi o jakieś konstruktywne komentarze, to może postaraj się w przyszłości nadawać swoim typom znaczące, konkretne nazwy. Weźmy naprzykład taki MyRect. Nazwa sama w sobie nie za wiele znaczy, a jest tam ukryte całkiem sporo logiki. Tworzysz jego instancję by obsłużyć logikę samochodu oraz by....ustawić tło. Nie jest to zbyt czytelna separacja. Jakbyś od początku nazwał ten typ MyCar to najpewniej nie próbowałbyś go potem użyć do obsługi tła, ale stworzyłbyś osobny typ, albo użył prostej funkcji co w tym przypadku byłoby chyba bardziej wskazane.

Jakbyś osiągnął taką separację, to skracanie kodu niektórych konstruktorów będzie bardziej naturalnie. Naprzykład konstruktor MyScene i ten fragment

// ....

QScrollArea scrollArea;

 MyRect *rect = new MyRect();
 this->addItem(rect);
// rect->setPos(480, 480);
 rect->setPos(100, 100);
 rect->setFlag(QGraphicsItem::ItemIsMovable, true);
// rect->setRotation(rect->initAngle-30);
 rect->currentAngle = rect->rotation();
 rect->posX = rect->pos().x();
 rect->posY = rect->pos().y();
 rect->rotatingWithMouse();
 const QRectF &newRect = QRectF();
 rect->ensureVisible(newRect, 5000, 5000);

 QBrush brush;
 const QColor rectColor = Qt::transparent;

 //...

I teraz jakbyś miał odseparowany MyCar zamiast MyRect do wszystkiego, mógłbyś stworzyć w nim taki kontruktor (this jest zbędny ale tak łatwiej było mi edytować)

MyCar::MyCar(int posX, int posY)
{
 this->setPos(posX, posY);
 this->setFlag(QGraphicsItem::ItemIsMovable, true);
// this->setRotation(this->initAngle-30);
 this->currentAngle = this->rotation();
 this->posX = this->pos().x();
 this->posY = this->pos().y();
 this->rotatingWithMouse();
 const QRectF &newRect = QRectF();
 this->ensureVisible(newRect, 5000, 5000);
}

Tym samym ten wybrany fragment MyScene skróciłby się do takiej postaci

// ....

QScrollArea scrollArea;

 MyCar *car = new MyCar(100, 100);
 this->addItem(car);

 QBrush brush;
 const QColor rectColor = Qt::transparent;

 //...

1 użytkowników online, w tym zalogowanych: 0, gości: 1