Как да програмирате игра в Python с Pygame (със снимки)

Съдържание:

Как да програмирате игра в Python с Pygame (със снимки)
Как да програмирате игра в Python с Pygame (със снимки)

Видео: Как да програмирате игра в Python с Pygame (със снимки)

Видео: Как да програмирате игра в Python с Pygame (със снимки)
Видео: Работа с файлами в Python. Чтение и запись данных 2024, Април
Anonim

Това е въведение в Pygame за хора, които вече познават Python. Тази статия ще ви научи на стъпките за изграждане на проста игра, в която играчът избягва подскачащите топки.

Стъпки

Част 1 от 8: Инсталиране на Pygame

Стъпка 1. Изтеглете Pygame

Намерете го за вашата платформа от

Стъпка 2. Стартирайте инсталатора

Стъпка 3. Проверете дали инсталацията е работила

Отворете терминал на Python. Въведете „import pygame“. Ако не виждате грешки, Pygame е успешно инсталиран.

    импортирайте pygame

Част 2 от 8: Настройване на основен прозорец

Стъпка 1. Отворете нов файл

Стъпка 2. Импортирайте Pygame

Pygame е библиотека, която осигурява достъп до графични функции. Ако искате повече информация за това как работят тези функции, можете да ги потърсите на уебсайта на Pygame.

    импортиране на pygame от pygame.locals внос *

Стъпка 3. Задайте разделителната способност на прозореца

Ще направите глобална променлива за разделителната способност на екрана, така че да може да бъде посочена в няколко части на играта. Също така е лесно да се намери в горната част на файла, така че да може да се промени по -късно. За напреднали проекти поставянето на тази информация в отделен файл би било по -добра идея.

    разделителна способност = (400, 300)

Стъпка 4. Определете някои цветове

Цветовете в pygame са (RBGA, които варират в стойности между 0 и 255. Алфа стойността (A) не е задължителна, но другите цветове (червено, синьо и зелено са задължителни).

    бяло = (255, 255, 255) черно = (0, 0, 0) червено = (255, 0, 0)

Стъпка 5. Инициализирайте екрана

Използвайте променливата за разделителна способност, която беше дефинирана по -рано.

    screen = pygame.display.set_mode (резолюция)

Стъпка 6. Направете цикъл на игра

Повторете определени действия във всеки кадър от нашата игра. Направете цикъл, който винаги ще се повтаря, за да премине през всички тези действия.

    докато е вярно:

Стъпка 7. Оцветете екрана

    screen.fill (бял)

Стъпка 8. Покажете екрана

Ако стартирате програмата, екранът ще стане бял и след това програмата ще се срине. Това е така, защото операционната система изпраща събития в играта и играта не прави нищо с тях. След като играта получи твърде много необработени събития, тя ще се срине.

    докато True:… pygame.display.flip ()

Стъпка 9. Управлявайте събития

Вземете списък на всички събития, настъпили във всеки кадър. Ще ви пука само за едно събитие, събитието за отказ. Това се случва, когато потребителят затвори прозореца на играта. Това също ще предотврати срив на нашата програма поради твърде много събития.

    докато True: … за събитие в pygame.event.get (): if event.type == QUIT: pygame.quit ()

ProgramPygamePart1
ProgramPygamePart1

Стъпка 10. Изпробвайте го

Ето как трябва да изглежда кодът сега:

    импортиране на pygame от pygame.locals внос * резолюция = (400, 300) бяло = (255, 255, 255) черно = (0, 0, 0) червено = (255, 0, 0) екран = pygame.display.set_mode (резолюция), докато True: screen.fill (бял) pygame.display.flip () за събитие в pygame.event.get (): if event.type == QUIT: pygame.quit ()

Част 3 от 8: Създаване на игрален обект

Стъпка 1. Направете нов клас и конструктор

Задайте всички свойства на обекта. Също така предоставяте стойности по подразбиране за всички свойства.

    клас Ball: def _init _ (self, xPos = резолюция [0] / 2, yPos = разделителна способност [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball"

Стъпка 2. Определете как да нарисувате обекта

Използвайте свойствата, които са дефинирани в конструктора, за да нарисувате топката като окръжност, както и да предадете повърхност във функцията, за да нарисувате обекта. Повърхността ще бъде екранният обект, създаден с помощта на разделителната способност по -рано.

    def draw (self, surface): pygame.draw.circle (повърхност, черно, (self.x, self.y), self.radius)

Стъпка 3. Направете екземпляр от класа, както и да кажете на цикъла на играта да изтегли топката във всеки цикъл

    ball = Ball () while True:… ball.draw (екран)

Стъпка 4. Накарайте обекта да се движи

Създайте функция, която ще актуализира позицията на обекта. Извикайте тази функция във всеки цикъл на играта.

    клас Ball:… def update (self): self.x += self.dx self.y += self.dy

Стъпка 5. Ограничете честотата на кадрите

Топката ще се движи много бързо, защото играта се върти стотици пъти в секунда. Използвайте часовника на Pygame, за да ограничите честотата на кадрите до 60 кадъра в секунда.

    clock = pygame.time. Clock () while True:… clock.tick (60)

Стъпка 6. Дръжте топката на екрана

Добавете проверки във функцията за актуализиране, за да обърнете посоката на топката, ако тя удари един от ръбовете на екрана.

    клас Ball:… def update (self):… if (self.x <= 0 или self.x> = резолюция [0]): self.dx *= -1 if (self.y <= 0 или self.y > = резолюция [1]): self.dy *= -1

ProgramPygamePart2
ProgramPygamePart2

Стъпка 7. Изпробвайте го

Ето как трябва да изглежда кодът сега:

    импортиране на pygame от pygame.locals внос * резолюция = (400, 300) бяло = (255, 255, 255) черно = (0, 0, 0) червено = (255, 0, 0) екран = pygame.display.set_mode (резолюция) клас Ball: def _init _ (self, xPos = резолюция [0] / 2, yPos = разделителна способност [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw draw (self, surface): pygame.draw.circle (повърхност, черно, (self.x, self.y), self.radius) def update (self): self.x += self.dx self.y += self.dy if (self.x <= 0 или self.x> = резолюция [0]): self.dx *= -1 if (self.y <= 0 или self.y> = резолюция [1]): self.dy *= -1 ball = Ball () часовник = pygame.time. Clock () while True: екран. попълнете (бяло) ball.draw (екран) ball.update () pygame.display.flip () clock.tick (60) за събитие в pygame.event.get (): if event.type == QUIT: pygame.quit ()

Част 4 от 8: Организиране на играта

Стъпка 1. Използвайте класове, за да организирате всичко

Играта ще се усложни. Използвайте обектно-ориентирани техники, за да организирате кода си.

Стъпка 2. Направете цикъла на играта в клас

Тъй като нашата игра вече съдържа данни, включително вашите игрови обекти и функции, има смисъл да превърнете игралния цикъл в клас.

    класа игра ():

Стъпка 3. Добавете конструктор

Тук ще създадете екземпляри на някои игрови обекти, ще създадете нашия екран и часовник и ще инициализирате Pygame. Pygame трябва да бъде инициализиран, за да използва определени функции като текст или звук.

    class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (резолюция) self.clock = pygame.time. Clock ()

Стъпка 4. Обработвайте събития във функция

    class game ():… def handleEvents (self): за събитие в pygame.event.get (): if event.type == QUIT: pygame.quit ()

Стъпка 5. Направете цикъла на играта функция

Извикайте функцията за обработка на събития всеки цикъл.

    class game ():… def run (self): while True: self.handleEvents () self.screen.fill (бяло) self.clock.tick (60) pygame.display.flip ()

Стъпка 6. Работете с множество игрови обекти

В момента този код трябва да извиква draw и update на нашия обект всеки кадър. Това би станало объркано, ако имате много предмети. Нека добавим нашия обект към масив и след това актуализираме и нарисуваме всички обекти в масива всеки цикъл. Сега можете лесно да добавите друг обект и да му дадете различна начална позиция.

    class game (): def _init _ (self):… self.gameObjects = self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100))… def run (self): while True: self.handleEvents () за gameObj в self.gameObjects: gameObj.update () self.screen.fill (бяло) за gameObj в self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip ()

ProgramPygamePart3
ProgramPygamePart3

Стъпка 7. Изпробвайте го

Ето как трябва да изглежда кодът сега:

    импортиране на pygame от pygame.locals внос * резолюция = (400, 300) бяло = (255, 255, 255) черно = (0, 0, 0) червено = (255, 0, 0) екран = pygame.display.set_mode (резолюция) клас Ball: def _init _ (self, xPos = резолюция [0] / 2, yPos = разделителна способност [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw draw (self, surface): pygame.draw.circle (повърхност, черно, (self.x, self.y), self.radius) def update (self): self.x += self.dx self.y += self.dy if (self.x <= 0 или self.x> = резолюция [0]): self.dx *= -1 if (self.y <= 0 или self.y> = резолюция [1]): self.dy *= -1 class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (резолюция) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100)) def handleEvents (self): за събитие в pygame.event.get (): if event.type == QUIT: pygame.quit () def run (self): while True: self.handleEvent s () за gameObj в self.gameObjects: gameObj.update () self.screen.fill (бяло) за gameObj в self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display. flip () game (). run ()

Част 5 от 8: Добавяне на обект на играч

Стъпка 1. Направете клас на играч и конструктор

Ще направите друг кръг, който се контролира от мишката. Инициализирайте стойностите в конструктора. Радиусът е единствената важна стойност.

    class Player: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad

Стъпка 2. Определете как да нарисувате обекта на плейъра

Ще бъде по същия начин, по който сте нарисували другите обекти на играта.

    клас Player:… def draw (self, surface): pygame.draw.circle (surface, red, (self.x, self.y), self.radius)

Стъпка 3. Добавете контрол на мишката за обекта на плейъра

Във всеки кадър проверявайте местоположението на мишката и задайте местоположението на обектите на играчите до тази точка.

    клас Player:… def update (self): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1]

Стъпка 4. Добавете обект на играч към gameObjects

Създайте нов екземпляр на плейъра и го добавете към списъка.

    class game (): def _init _ (self):… self.gameObjects.append (Player ())

ProgramPygamePart4
ProgramPygamePart4

Стъпка 5. Изпробвайте го

Ето как трябва да изглежда кодът сега:

    импортиране на pygame от pygame.locals внос * резолюция = (400, 300) бяло = (255, 255, 255) черно = (0, 0, 0) червено = (255, 0, 0) екран = pygame.display.set_mode (резолюция) клас Ball: def _init _ (self, xPos = резолюция [0] / 2, yPos = разделителна способност [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw draw (self, surface): pygame.draw.circle (повърхност, черно, (self.x, self.y), self.radius) def update (self): self.x += self.dx self.y += self.dy if (self.x <= 0 или self.x> = резолюция [0]): self.dx *= -1 if (self.y <= 0 или self.y> = резолюция [1]): self.dy *= -1 клас Играч: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" def draw (self, surface): pygame.draw.circle (surface, red, (self.x, self.y), self.radius) def update (self): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_ режим (резолюция) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Player ()) self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100)) def handleEvents (self): за събитие в pygame.event.get (): if event.type == QUIT: pygame.quit () def run (self): while True: self.handleEvents () за gameObj в self.gameObjects: gameObj.update () self.screen.fill (бяло) за gameObj в self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game (). бягай ()

Част 6 от 8: Създаване на обекти във взаимодействие с плейъра

Стъпка 1. Променете функциите за актуализиране

За да могат обектите да си взаимодействат, те ще трябва да имат достъп един до друг. Нека добавим друг параметър към Update, който да премине в списъка на gameObjects. Ще трябва да го добавите както към обекта на плейъра, така и към обектите Ball. Ако имате много игрови обекти, наследяването може да ви помогне да запазите всичките си подписи на метода еднакви.

    class Ball:… def update (self, gameObjects):… class Player:… def update (self, gameObjects):

Стъпка 2. Проверете за сблъсъци между играча и топките

Преминете през всички обекти на играта и проверете дали типът на обектите е топка. След това използвайте радиусите на двата обекта и формулата за разстояние, за да проверите дали се сблъскват. Кръговете са наистина лесни за проверка на сблъсъци. Това е най -голямата причина да не използвате друга форма за тази игра.

    class Player:… def update (self, gameObjects):… за gameObj в gameObjects: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2:

ProgramPygamePart5
ProgramPygamePart5

Стъпка 3. Прекратете играта, ако играчът получи „удар“

Нека просто излезем от играта засега.

    if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: pygame.quit ()

Стъпка 4. Изпробвайте го

Ето как трябва да изглежда кодът сега:

    импортиране на pygame от pygame.locals внос * резолюция = (400, 300) бяло = (255, 255, 255) черно = (0, 0, 0) червено = (255, 0, 0) екран = pygame.display.set_mode (резолюция) клас Ball: def _init _ (self, xPos = резолюция [0] / 2, yPos = разделителна способност [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw draw (self, surface): pygame.draw.circle (повърхност, черно, (self.x, self.y), self.radius) def update (self, gameObjects): self.x += self.dx self.y += self.dy if (self.x <= 0 или self.x> = резолюция [0]): self.dx *= -1 if (self.y <= 0 или self.y> = резолюция [1]): self.dy *= -1 клас Играч: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" def draw draw (self, surface): pygame.draw.circle (повърхност, червено, (self.x, self.y), self.radius) def update (self, gameObjects): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] за gameObj в gameObjects: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: pygame.quit () class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (резолюция) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Player ()) self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100)) def handleEvents (self): за събитие в pygame.event.get (): if event.type == QUIT: pygame.quit () def run (self): while True: self.handleEvents () за gameObj в self.gameObjects: gameObj.update (self.gameObjects) self.screen.fill (бяло) за gameObj в self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game (). run ()

Част 7 от 8: Добавяне на контролер за игри за създаване на обекти

Стъпка 1. Създайте клас контролер на игра

Контролерите за игри са отговорни за "стартирането" на играта. Той е различен от нашия клас игри, който отговаря за рисуването и актуализирането на всички наши обекти. Контролерът периодично ще добавя още една топка към екрана, за да направи играта по -трудна. Добавете конструктор и инициализирайте някои основни стойности. Интервалът ще бъде времето преди добавянето на друга топка.

    клас GameController: def _init _ (self, interval = 5): self.inter = интервал self.next = pygame.time.get_ticks () + (2 * 1000) self.type = "контролер на играта"

Стъпка 2. Добавете функцията за актуализиране

Това ще провери колко време е минало от момента на добавяне на топка или от началото на играта. Ако времето е повече от интервала, ще нулирате времето и ще добавите топка.

    клас GameController:… def update (self, gameObjects): if self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Ball ())

Стъпка 3. Дайте на топките произволни скорости

Ще трябва да използвате произволни числа, за да правите играта различна всеки път. Скоростите на топките обаче сега са число с плаваща запетая вместо цяло число.

    клас GameController:… def update (self, gameObjects): if self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Ball (xVel = случаен ()*2, yVel = случаен ()*2))

Стъпка 4. Поправете функцията за теглене

Функцията за теглене няма да приема поплавъци. Нека преобразуваме позицията на топката в цели числа, преди топките да бъдат изтеглени.

    клас Ball:… def draw (self, surface): pygame.draw.circle (surface, black, (int (self.x), int (self.y)), self.radius)

Стъпка 5. Определете метод на теглене за контролера на играта

Тъй като това е игрален обект, основният цикъл ще се опита да го нарисува. Ще трябва да определите функция за теглене, която не прави нищо, за да не се срине играта.

    клас GameController:… def draw (self, screen): pass

Стъпка 6. Добавете контролера за игра към gameObjects и премахнете 2 топки

Сега играта трябва да породи топка на всеки пет секунди.

    class game (): def _init _ (self):… self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ())

ProgramPygamePart6
ProgramPygamePart6

Стъпка 7. Изпробвайте го

Ето как трябва да изглежда кодът сега:

    импортиране на pygame от произволен импорт на случаен принцип от pygame.locals внос * резолюция = (400, 300) бяло = (255, 255, 255) черно = (0, 0, 0) червено = (255, 0, 0) екран = pygame. display.set_mode (резолюция) клас Ball: def _init _ (self, xPos = резолюция [0] / 2, yPos = резолюция [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw draw (self, surface): pygame.draw.circle (повърхност, черно, (int (self x), int (self.y)), self.radius) def update (self, gameObjects): self.x += self.dx self.y += self.dy if (self.x <= 0 или self. x> = резолюция [0]): self.dx *= -1 if (self.y <= 0 или self.y> = резолюция [1]): self.dy *= -1 клас Играч: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" def draw draw (self, surface): pygame.draw.circle (повърхност, червено, (self.x, self.y), self.radius) def update (self, gameObjects): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] за gameObj в играта Обекти: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius)* * 2: pygame.quit () клас GameController: def _init _ (self, interval = 5): self.inter = интервал self.next = pygame.time.get_ticks () + (2 * 1000) self.type = "контролер на игра "def update (self, gameObjects): if self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Ball (xVel = random ()*2, yVel = random ()*2)) def draw (self, screen): pass class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (резолюция) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ()) def handleEvents (self): за събитие в pygame.event.get (): if event.type == QUIT: pygame.quit () def run (self): while True: self.handleEvents () за gameObj в self.gameObjects: gameObj.update (self.gameObjects) self.screen.fill (бяло) за gameObj в self.gameO bjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game (). run ()

Част 8 от 8: Добавяне на резултат и завършване на играта

Стъпка 1. Добавете резултат към класа на контролера на играта

Създайте обект на шрифт и променлива за резултат. Ще нарисувате шрифта във всеки кадър, за да покажете резултата и да увеличите резултата във всеки кадър в актуализацията.

    клас GameController: def _init _ (self, interval = 5):… self.score = 0 self.scoreText = pygame.font. Font (Няма, 12) def update (self, gameObjects):… self.score += 1 def draw (self, screen): screen.blit (self.scoreText.render (str (self.score), True, черно), (5, 5))

Стъпка 2. Променете начина, по който играта завършва

Нека се отървем от напускането, когато играчът открие сблъсък. Вместо това ще зададете променлива в плейъра, която играта може да провери. Когато е зададен gameOver, спрете актуализирането на обекти. Това ще замрази всичко на място, така че играчът да може да види какво се е случило и да провери резултата си. Обърнете внимание, че обектите все още се рисуват, просто не се актуализират.

    class Player: def _init _ (self, rad = 20):… self.gameOver = False def update (self, gameObjects):… за gameObj в gameObjects: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: self.gameOver = True class game (): def _init _ (self): … Self.gameOver = False def run (self): while True: self.handleEvents () ако не self.gameOver: за gameObj в self.gameObjects: gameObj.update (self.gameObjects) if gameObj.type == "player": self.gameOver = gameObj.gameOver

ProgramPygameFinal
ProgramPygameFinal

Стъпка 3. Изпробвайте го

Ето как трябва да изглежда готовият код сега:

    импортиране на pygame от произволно импортиране на случаен принцип от pygame.locals внос * резолюция = (400, 300) бяло = (255, 255, 255) черно = (0, 0, 0) червено = (255, 0, 0) екран = pygame. display.set_mode (резолюция) клас Ball: def _init _ (self, xPos = резолюция [0] / 2, yPos = резолюция [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw draw (self, surface): pygame.draw.circle (повърхност, черно, (int (self. x), int (self.y)), self.radius) def update (self, gameObjects): self.x += self.dx self.y += self.dy if (self.x <= 0 или self. x> = резолюция [0]): self.dx *= -1 if (self.y <= 0 или self.y> = резолюция [1]): self.dy *= -1 клас Играч: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" self.gameOver = False def draw (self, surface): pygame.draw.circle (повърхност, червено, (self.x, self.y), self.radius) def update (self, gameObjects): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] за gameObj в gameObjects: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: self.gameOver = Истински клас GameController: def _init _ (self, interval = 5): self.inter = интервал self.next = pygame.time.get_ticks () + (2*1000) self. type = "game controller" self.score = 0 self.scoreText = pygame.font. Font (Няма, 12) def update (self, gameObjects): if self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter*1000) gameObjects.append (Ball (xVel = random ()*2, yVel = random ()*2)) self.score + = 1 def draw (self, screen): screen.blit (self.scoreText.render (str (self.score), True, black), (5, 5)) class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (резолюция) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ()) self.gameOver = False def handleEvents (self): за събитие в pygame.event.get (): ако ev ent.type == QUIT: pygame.quit () def run (self): while True: self.handleEvents () ако не self.gameOver: за gameObj в self.gameObjects: gameObj.update (self.gameObjects) if gameObj. тип == "играч": self.gameOver = gameObj.gameOver self.screen.fill (бяло) за gameObj в self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game (). run ()

Препоръчано: