Написване на игра - Life - за Android, използваща C и Qt за един час
Здравейте! Наскоро видях публикации от рода на „направи игра живот в java за един час“, „направи игра живот в python за час“ на публични страници като TP, затова реших да направя публикация, да направя живот на играта за android с помощта на ++ и Qt библиотеки за един час.
Важно е да се отбележи, че играта отнема
100 реда код (с изключение на h файлове, символи за пренасяне и т.н.), както и факта, че създадената игра ще работи под Windows, и под Android, и под Linux, и под ios и под mac os x.
И така, нека започнем. Мисля, че знаете правилата на играта. Има поле с клетки. Клетката може да бъде жива или мъртва. След завой, ако има 3 живи около мъртва клетка, тя става жива. Ако около живата клетка има 1 или 0 живи клетки, тя става мъртва и също така става мъртва, ако около нея има повече от 3 живи клетки. По принцип всичко, можете да прочетете повече в Уикипедия.
И така трябва да имаме:
Поле с N * M клетки, бутон "Нова игра", бутон "Стартиране на еволюцията". Полето е изпълнено с прави гуолници, първоначално всички празни. Когато щракнете върху клетка, тя става черна или бяла, в зависимост от това кой цвят е бил там преди.
2. Логика. Трябва да имаме двуизмерен масив (използвайки QT вектор), в който 0 е мъртва клетка, а 1 е жива клетка. Целта ми беше да създам игра за около час и така тези 0 и 1 съответстват на черно-белите цветове на полигоните. Съответно имаме масив с указатели към нашите правоъгълници. Това не е добре, защото логиката трябва да бъде отделена от графичния интерфейс, но за да намаля размера на кода, реших да направя това.
Функциите за броене на съседи за всяка от клетките трябва да бъдат приложени, като се знае позицията на клетката в X и Y. След всяко преместване изчисляваме броя на съседите за всяка от клетките и в зависимост от състоянието на клетката и броя на съседите му, добавете клетката към масива (вектор), за да промените нейното състояние. Ако в 1 ход не е добавена 1 клетка, тогава играта приключва, покажете броя на ходовете на потребителя
И ето как изглежда GUI:

Изтеглете Qt Creator от официалния сайт на Qt (qt.io), изберете безплатната опция за GPL приложения. Нека започнем, създайте нов проект с помощта на QWidget, с графична форма

Нека да преминем към създаването. Превключете в режим на проектиране и добавете "Графичен изглед" и 2 бутона в формуляра. Приблизително както на следващата снимка и като щракнете с десния бутон на мишката върху фигурата, изберете (Compose on Grid)

GUI е готов! Сега трябва да преминем директно към програмирането.
QGraphicsView е приспособление, което може да показва графики. QGraphicsView показва елементи, които се намират на QScene. На QScene ние поставяме елементите в декартова координатна система и с помощта на QGrahicsView го показваме (можете да завъртате, увеличавате и т.н.).
Артикулите се предлагат в различни видове. Има прости - QGraphicsRectItem е многоъгълник, който между другото ни е необходим. Има QGraphicsPixMapItem, който ще покаже изображение за нас. Има QGraphicsLineItem - това е линия. Други.