logo

Как да разработите игра в Python

Най-адаптивният език е Python, който се използва в почти всяка индустрия, включително разработка на игри, уеб разработка, машинно обучение, изкуствен интелект и GUI приложения.

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

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

Pete Shinners го разработва, за да заеме мястото на PySDL.

Предпоставки за Pygame

Трябва да разберем езика за програмиране Python, за да научим Pygame.

аля манаса

Инсталиране на Pygame

За да инсталирате Pygame, отворете терминал на командния ред и въведете следната команда.

декодиране на base64 javascript
 pip install pygame 

Можем да го инсталираме и през IDE. За допълнително ръководство за инсталиране посетете нашия пълен урок за pygame (https://www.javatpoint.com/pygame). Тук ще намерите всички основни обяснения на pygame.

Прост пример за Pygame

Ето следния пример за създаване на прост прозорец на pygame.

 import pygame pygame.init() screen = pygame.display.set_mode((400,500)) done = False while not done: for event in pygame.event.get(): if event.type == pygame.QUIT: done = True pygame.display.flip() 

Изход:

Как да разработите игра в Python

Обяснение:

Предоставеният код отваря прозорец на Pygame с размери 400x500 пиксела и стартира цикъл, който следи за събития през цялото време. Цикълът променя променливата 'done' на True, което завършва цикъла и програмата, ако бъде открито събитие QUIT (обикновено когато потребителят напусне прозореца). Актуализира дисплея и гарантира, че всички промени се показват на екрана благодарение на метода „pygame.display.flip()“. Казано накратко, кодът генерира малък прозорец на Pygame, който остава активен, докато потребителят не го отхвърли, показвайки основна програмна структура, която се управлява от събития.

Всички графики ще се рисуват в прозореца на pygame.

Нека разберем основния синтаксис на горната програма.

научете селен
    импортиране на pygame:Това е модулът, който ни дава достъп до всички функции на Pygame.топлина():Той се използва за инициализиране на всеки от необходимите модули на pygame.display.set_mode((ширина, височина)):Използва се за регулиране на размера на прозореца. Това ще върне предмета на повърхността. Графичните действия се извършват чрез повърхностния обект.event.get():Резултатът е празна опашка от събития. Ако не го извикаме, операционната система ще възприеме играта като неотговаряща и съобщенията в прозореца ще започнат да се натрупват.ИЗХОД:Когато щракнете върху бутона с кръст в ъгъла на прозореца, той се използва за отхвърляне на събитието.display.flip():Всички актуализации на играта се отразяват в него. Трябва да се свързваме с дисплея всеки път, когато правим промени. flip() е функция.

Всяка форма може да бъде начертана върху повърхността на Pygame, включително красиви шрифтове и картини. Множество вградени методи в Pygame ви позволяват да рисувате геометрични фигури на екрана. Тези форми представляват първите стъпки в създаването на игра.

Нека разгледаме следната илюстрация на формуляр, който се рисува на екран.

пример -

 import pygame from math import pi pygame.init() # size variable is using for set screen size size = [400, 300] screen = pygame.display.set_mode(size) pygame.display.set_caption('Example program to draw geometry') # done variable is using as flag done = False clock = pygame.time.Clock() while not done: # clock.tick() limits the while loop to a max of 10 times per second. clock.tick(10) for event in pygame.event.get(): # User did something if event.type == pygame.QUIT: # If user clicked on close symbol done = True # done variable that we are complete, so we exit this loop # All drawing code occurs after the for loop and but # inside the main while done==False loop. # Clear the default screen background and set the white screen background screen.fill((0, 0, 0)) # Draw on the screen a green line which is 5 pixels wide. pygame.draw.line(screen, (0, 255, 0), [0, 0], [50, 30], 5) # Draw on the screen a green line which is 5 pixels wide. pygame.draw.lines(screen, (0, 0, 0), False, [[0, 80], [50, 90], [200, 80], [220, 30]], 5) # Draw a rectangle outline pygame.draw.rect(screen, (0, 0, 0), [75, 10, 50, 20], 2) # Draw a solid rectangle pygame.draw.rect(screen, (0, 0, 0), [150, 10, 50, 20]) # This draw an ellipse outline, using a rectangle as the outside boundaries pygame.draw.ellipse(screen, (255, 0, 0), [225, 10, 50, 20], 2) # This draw a solid ellipse, using a rectangle as the outside boundaries pygame.draw.ellipse(screen, (255, 0, 0), [300, 10, 50, 20]) # Draw a triangle using the polygon function pygame.draw.polygon(screen, (0, 0, 0), [[100, 100], [0, 200], [200, 200]], 5) # This draw a circle pygame.draw.circle(screen, (0, 0, 255), [60, 250], 40) # This draw an arc pygame.draw.arc(screen, (0, 0, 0), [210, 75, 150, 125], 0, pi / 2, 2) # This function must write after all the other drawing commands. pygame.display.flip() # Quite the execution when clicking on close pygame.quit() 

Изход:

Как да разработите игра в Python

Обяснение:

Дадената Python програма създава графичен прозорец с начертани в него различни геометрични фигури с помощта на пакета Pygame. Програмата създава прозорец на Pygame с размери 400x300 пиксела и след това стартира цикъл, който следи за събития през цялото време, като се уверява, че прозорецът остава отворен, докато потребителят го напусне. Той изчиства екрана в началото на този цикъл и след това използва процедурите за рисуване на Pygame, за да създаде разнообразие от форми с различни цветове и ширини на линиите. Тези форми включват линии, многоъгълници, елипси, кръгове и дъги. Всяка форма има своите правилни координати и дефинирани свойства. И накрая, 'pygame.display.flip()' се използва за опресняване на дисплея. Програмата прекратява pygame при затваряне на прозореца.

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

vb и vb мрежа

Пример - Разработване на игра Snake с помощта на Pygame

програма -

 # Snake Tutorial Using Pygame import math import random import pygame import tkinter as tk from tkinter import messagebox class cube(object): rows = 20 w = 500 def __init__(self, start, dirnx=1, dirny=0, color=(255, 0, 0)): self.pos = start self.dirnx = 1 self.dirny = 0 self.color = color def move(self, dirnx, dirny): self.dirnx = dirnx self.dirny = dirny self.pos = (self.pos[0] + self.dirnx, self.pos[1] + self.dirny) def draw(self, surface, eyes=False): dis = self.w // self.rows i = self.pos[0] j = self.pos[1] pygame.draw.rect(surface, self.color, (i * dis + 1, j * dis + 1, dis - 2, dis - 2)) if eyes: centre = dis // 2 radius = 3 circleMiddle = (i * dis + centre - radius, j * dis + 8) circleMiddle2 = (i * dis + dis - radius * 2, j * dis + 8) pygame.draw.circle(surface, (0, 0, 0), circleMiddle, radius) pygame.draw.circle(surface, (0, 0, 0), circleMiddle2, radius) # This class is defined for snake design and its movement class snake(object): body = [] turns = {} def __init__(self, color, pos): self.color = color self.head = cube(pos) self.body.append(self.head) self.dirnx = 0 self.dirny = 1 def move(self): for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() keys = pygame.key.get_pressed() # It will manage the keys movement for the snake for key in keys: if keys[pygame.K_LEFT]: self.dirnx = -1 self.dirny = 0 self.turns[self.head.pos[:]] = [self.dirnx, self.dirny] elif keys[pygame.K_RIGHT]: self.dirnx = 1 self.dirny = 0 self.turns[self.head.pos[:]] = [self.dirnx, self.dirny] elif keys[pygame.K_UP]: self.dirnx = 0 self.dirny = -1 self.turns[self.head.pos[:]] = [self.dirnx, self.dirny] elif keys[pygame.K_DOWN]: self.dirnx = 0 self.dirny = 1 self.turns[self.head.pos[:]] = [self.dirnx, self.dirny] # Snake when hit the boundary wall for i, c in enumerate(self.body): p = c.pos[:] if p in self.turns: turn = self.turns[p] c.move(turn[0], turn[1]) if i == len(self.body) - 1: self.turns.pop(p) else: if c.dirnx == -1 and c.pos[0] = c.rows - 1: c.pos = (0, c.pos[1]) elif c.dirny == 1 and c.pos[1] &gt;= c.rows - 1: c.pos = (c.pos[0], 0) elif c.dirny == -1 and c.pos[1] <= 0 1 0: c.pos="(c.pos[0]," c.rows - 1) else: c.move(c.dirnx, c.dirny) def reset(self, pos): self.head="cube(pos)" self.body="[]" self.body.append(self.head) self.turns="{}" self.dirnx="0" self.dirny="1" # it will add the new cube in snake tail after every successful score addcube(self): dx, dy="tail.dirnx," tail.dirny if dx="=" and self.body.append(cube((tail.pos[0] 1, tail.pos[1]))) elif -1 + 1: self.body.append(cube((tail.pos[0], tail.pos[1] 1))) -1: self.body[-1].dirnx="dx" self.body[-1].dirny="dy" draw(self, surface): for i, c enumerate(self.body): i="=" c.draw(surface, true) c.draw(surface) drawgrid(w, rows, sizebtwn="w" rows x="0" y="0" l range(rows): draw grid line pygame.draw.line(surface, (255, 255, 255), (x, 0), w)) (0, y), (w, y)) this class define game surface redrawwindow(surface): global width, s, snack is used to surface.fill((0, 0, 0)) s.draw(surface) snack.draw(surface) drawgrid(width, surface) pygame.display.update() randomsnack(rows, item): positions="item.body" while true: len(list(filter(lambda z: z.pos="=" positions)))> 0: continue else: break return (x, y) # Using Tkinter function to display message def message_box(subject, content): root = tk.Tk() root.attributes(&apos;-topmost&apos;, True) root.withdraw() messagebox.showinfo(subject, content) try: root.destroy() except: pass # main() function def main(): global width, rows, s, snack width = 500 rows = 20 win = pygame.display.set_mode((width, width)) s = snake((255, 0, 0), (10, 10)) snack = cube(randomSnack(rows, s), color=(0, 255, 0)) flag = True clock = pygame.time.Clock() while flag: pygame.time.delay(50) clock.tick(10) s.move() if s.body[0].pos == snack.pos: s.addCube() snack = cube(randomSnack(rows, s), color=(0, 255, 0)) for x in range(len(s.body)): if s.body[x].pos in list(map(lambda z: z.pos, s.body[x + 1:])): print(&apos;Score: 
&apos;, len(s.body)) message_box(&apos;You Lost!
&apos;, &apos;Play again...
&apos;) s.reset((10, 10)) break redrawWindow(win) pass main() </=>

Изход:

краен автомат
Как да разработите игра в Python

Ако змията се докосне, тя ще прекрати играта и ще покаже следното съобщение.

Как да разработите игра в Python

За да възобновите, просто щракнете върху бутона OK. Терминалът Pycharm показва нашия резултат (ние използвахме Pycharm IDE, но вие можете да използвате всяка Python IDE).

Как да разработите игра в Python

Обяснение:

Предоставеният Python скрипт използва пакета Pygame, за да създаде ясна игра Snake. Той установява класове както за змията, така и за отделните кубчета, които изграждат нейното тяло. Pygame се използва за настройка на прозореца на играта, който включва мрежова структура и движеща се змия. След като изяде кубче „закуска“, змията се удължава и ако се натъкне на себе си или на граничните стени, играта приключва.

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