Създаване на "Тетрис" игра pyqt5 урок №12
Tetris игра - една от най-популярните, създавани някога компютърни игри. Оригиналната игра е проектиран и програмирани от български програмист Alekseem Pazhitnovym през 1985. От този момент, Tetris е достъпна в почти всяка компютърна платформа в много варианти.
Той призова Tetris пъзел игра с падащи блокове. В тази игра, ние имаме седем различни цифри, по-долу: S-образни, Z-образни, T-образни, L-форма, фигура, линия, форма, "Огледало L», и фигурата на площада. Всяка една от тези цифри се формира с четири квадрата. Цифрите падат надолу върху дъската. Целта на Tetris игра - движат и да сменят парчетата, така че те се приземи, колкото е възможно. Ако ние сме в състояние да генерира множество, множество паузи и ние да получите точки. Ние играем Tetris за толкова дълго, колкото ние се изкачат на върха.
PyQt5 - инструмент, предназначен за създаване на приложения. Има и други библиотеки, които са насочени към създаването на компютърни игри. Въпреки това PyQt5 и други приложения на библиотеката могат да бъдат използвани за създаване на прости игри. Създаване на компютърна игра - чудесен начин за увеличаване на умения за програмиране.
дизайн
Ние не разполагаме с изображения за нашия Tetris, обръщаме tetrominoes използващи достъпни софтуерни инструменти в PyQt5 API рисунка. Зад всеки от компютърни игри, има математически модел. По същия начин, в Tetris.
Някои идеи се оценяват в играта:
Ние използваме QtCore.QBasicTimer (), за да се създаде игра линия.
tetrominoes изготвени
Данните се движат по "куб на кубчета" (не "пиксел по пиксел").
Математически, на борда - това е просто списък с номера.
Баркодът се състои от четири класа: Tetris, съвет, Tetrominoe и форма. Клас Tetris организира играта. Board - това е мястото, където логиката на играта е писано. Клас Tetrominoe съдържа имената на всички части на Tetris и Shape клас съдържа код за части на Tetris.
Играта е малко по-опростени за по-лесно разбиране. Играта започва веднага след старта си. Ние можем да пауза в играта, като натиснете клавиша р. Интервал веднага ще хвърли блок в долната част на Tetris. Играта идва с постоянна скорост, ускорение не се изпълнява. Точки - броя на линиите, които изтриват.
Board клас например се създава, и се очаква да бъде в центъра на приложение една джаджа.
Ние създаваме лента на състоянието, където ще видите съобщение. Ще покажем три възможни съобщения: броят на линиите вече дистанционно, пауза съобщението, или съобщение "Game Over". msgStatusbar - е сигнал на потребителя, който се осъществява в Борда на директорите на класа. showMessage () - Тази вградена метод, който показва съобщение в лентата на състоянието.
Тази линия започва играта.
Персонализирана сигнал е създаден. msgStatusbar - сигнал, който се активира, когато искаме да напишете съобщение или очила в лентата на състоянието.
Този клас променливи съвет. BoardWidth BoardHeight и определяне на размера на дъската в блокове. Скорост определя скоростта на играта. Всеки 300 мс цикъл ще започне нова игра.
Методът initBoard (), ние се инициализира някои важни променливи. Частично self.board - списък от числа от 0 до 7. Това е местоположението на различни форми и оставя парчетата на дъската.
shapeAt () метод се определя от вида на формата в този блок.
Board може да бъде динамично преоразмерява. В резултат на това, размера на блока може да варира. squareWidth () изчислява ширината на прости квадратни пиксела и го връща. Board.BoardWidth - е размерът на дъската в блокове.
Рисуване игри е разделен на два етапа. Първата стъпка, обръщаме всички фигури, или да напуснат форми, които са отпаднали в долната част на дъската. Всички кутиите се съхраняват в списък с променливи self.board на. Достъп до променлива се получава като се използва метод shapeAt ().
Следващата стъпка - рисува паднал части.
keyPressEvent на метод (), ние проверяваме клавиши. Ако натиснете клавиша със стрелка надясно, ние се опитваме да се движат от страна на дясно. Ние казваме "опита", защото някои от тях не може да бъде в състояние да се движат.
Стрелка нагоре ще се обърнат към лявата част на инцидента.
Ключ "Space" веднага ще хвърлят падане парче на дъното.
Натискането «г», част слиза с една единица. Това може да се използва, за да се ускори леко падането на.
Методът tryMove (), ние се опитваме да се движат нашите парчета. Ако цифрата е на ръба на борда или е в непосредствена близост до някоя друга част се връщаме "фалшиво". В противен случай, ние се движат по текущата падане парче на нова позиция.
Таймерът за събитие, ние или да създадете нов дял, след като предишната част, която падна на дъното, или да продължим с падащ лист на един ред надолу.
clearBoard () метод, очиства Tetrominoe.Noshape борда чрез инсталиране на всеки бордово устройство.
Ако част удари дъното, което наричаме removeFullLines (метод). Ние намираме всичко пълна гама и да ги изтриете. Ние правим това чрез преместване на всички линии над текущата пълна линия, която отстранява един ред надолу. Моля, имайте предвид, че сме стартирали процедурата за изтриване на линии. В противен случай, тя няма да работи правилно. В нашия случай, ние използваме наивен гравитацията. Това означава, че се части могат да се носят над празните пространства.
newPiece () метод създава нова случайна част от Tetris. Ако частта не може да влезе в изходна позиция, играта свършва.
Клас Tetrominoe съдържа имената на всички възможни форми. Ние също имаме NoShape за празното пространство.
Класът Shape съхранява информация за частите на Tetris.
CoordsTable комплект съдържа всички възможни стойности на координатите на нашите парчета от Tetris. Това е шаблон, от която всички парчета да вземат техните координати.
Веднъж създаден, ние създаваме един празен списък с координати. Списъкът ще се съхранява на координатите на части на Tetris.
Изображението по-горе ще ви помогне да разберете малко повече стойности на координатите. Например, комплектът (0, 1), (0, 0), (1, 0), (1, 1) е Z-формата. Схема илюстрира фигурата.
rotateLeft () метод се обръща към лявата част. На площада не трябва да се сменят. Ето защо ние просто се върнете препратка към текущия обект. Новата част е създадена, както и неговите координати са определени в един от превърнаха части.
Това е игра на тетрис в PyQt5.