logo

Kā izstrādāt spēli Python

Pielāgojamākā valoda ir Python, ko izmanto gandrīz visās nozarēs, tostarp spēļu izstrādē, tīmekļa izstrādē, mašīnmācībā, mākslīgajā intelektā un GUI lietojumprogrammās.

Spēle ir izstrādāta, izmantojot pygame pakotni, kas ir Python iebūvēta funkcija. Ar elementāru Python programmēšanas izpratni mēs varam izveidot vizuāli pievilcīgas spēles ar atbilstošu animāciju, skaņas efektiem un mūziku, izmantojot pygame moduli.

Lai izveidotu videospēles, tiek izmantota vairāku platformu bibliotēka Pygame. Tam ir skaņu bibliotēkas un datora vizuālie materiāli, lai nodrošinātu atskaņotāju ar tipisku spēļu pieredzi.

Pete Shinners to izstrādā, lai aizstātu PySDL.

Pygame priekšnosacījumi

Lai apgūtu Pygame, mums ir jāsaprot Python programmēšanas valoda.

veids java

Pygame instalēšana

Lai instalētu Pygame, atveriet komandrindas termināli un ievadiet šo komandu.

 pip install pygame 

Mēs to varam instalēt arī caur IDE. Lai iegūtu papildu instalēšanas rokasgrāmatu, apmeklējiet mūsu pilno pygame pamācību (https://www.javatpoint.com/pygame). Šeit jūs atradīsiet visus būtiskos pygame skaidrojumus.

Vienkāršs Pygame piemērs

Šis ir vienkārša pygame loga izveides piemērs.

 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() 

Izvade:

java vesels skaitlis
Kā izstrādāt spēli Python

Paskaidrojums:

Piegādātais kods atver 400 x 500 pikseļu Pygame logu un sāk cilpu, kas visu laiku vēro notikumus. Cilpa maina mainīgo “pabeigts” uz True, kas beidz cilpu un beidz programmu, ja tiek konstatēts QUIT notikums (parasti, kad lietotājs aizver logu). Atjaunina displeju un nodrošina, ka visas izmaiņas tiek parādītas ekrānā, pateicoties metodei 'pygame.display.flip()'. Īsumā sakot, kods ģenerē nelielu Pygame logu, kas paliek aktīvs, līdz lietotājs to atmet, parādot programmas pamatstruktūru, kas ir balstīta uz notikumiem.

java Būla virkne

Visas grafikas tiks zīmētas pygame logā.

Izpratīsim iepriekš minētās programmas pamata sintaksi.

    importēt pygame:Tas ir modulis, kas sniedz mums piekļuvi visām Pygame funkcijām.siltums ():To izmanto, lai inicializētu katru no pygame nepieciešamajiem moduļiem.display.set_mode((platums, augstums)):To izmanto, lai pielāgotu loga izmēru. Tas atdos priekšmetu virspusē. Grafiskās darbības tiek veiktas caur virsmas objektu.event.get():Rezultāts ir tukša notikumu rinda. Ja mēs to nenosaucam, operētājsistēma uztvers spēli kā nereaģējošu, un logu ziņojumi sāks uzkrāties.IZIET:Noklikšķinot uz krusta pogas loga stūrī, tā tiek izmantota, lai noraidītu notikumu.display.flip():Visi spēles atjauninājumi tiek atspoguļoti tajā. Mums ir jāsazinās ar displeju ikreiz, kad veicam izmaiņas.flip() ir funkcija.

Uz Pygame virsmas var uzzīmēt jebkuru formu, ieskaitot skaistus fontus un attēlus. Daudzas Pygame iebūvētās metodes ļauj uz ekrāna zīmēt ģeometriskas formas. Šīs veidlapas atspoguļo pirmos soļus spēles izveidē.

Apskatīsim tālāk redzamo veidlapas ilustrāciju, kas tiek uzzīmēta uz ekrāna.

Piemērs -

 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() 

Izvade:

Kā izstrādāt spēli Python

Paskaidrojums:

Dotā Python programma, izmantojot Pygame pakotni, izveido grafisku logu ar tajā iezīmētām dažādām ģeometriskām formām. Programma izveido 400 x 300 pikseļu Pygame logu un pēc tam sāk cilpu, kas visu laiku vēro notikumus, pārliecinoties, ka logs paliek atvērts, līdz lietotājs to aizver. Tas notīra ekrānu šīs cilpas sākumā un pēc tam izmanto Pygame zīmēšanas rutīnas, lai izveidotu dažādas formas ar atšķirīgu krāsu un līniju platumu. Šīs formas ietver līnijas, daudzstūrus, elipses, apļus un lokus. Katrai formai ir noteiktas atbilstošās koordinātas un īpašības. Visbeidzot, 'pygame.display.flip()' tiek izmantots, lai atsvaidzinātu displeju. Programma pārtrauc pygame darbību pēc loga aizvēršanas.

sql ddl komandas

Lietojumprogramma kalpo kā Pygame zīmēšanas iespēju pielāgošanās un daudzveidības piemērs un nodrošina ietvaru interaktīvu grafisko lietojumprogrammu izstrādei. Izstrādātāji Pygame grafiskajā vidē var izveidot plašu vizuālo komponentu klāstu, pielāgojot tādus parametrus kā koordinātas, krāsas un līniju platumu. Tas ļauj izveidot interaktīvas multivides lietojumprogrammas, spēles un simulācijas.

Piemērs — Snake spēles izstrāde, izmantojot Pygame

Programma -

java saraksta virkne
 # 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() </=>

Izvade:

Kā izstrādāt spēli Python

Ja čūska pieskaras sev, tā pārtrauks spēli un parādīs šādu ziņojumu.

Kā izstrādāt spēli Python

Lai atsāktu, vienkārši noklikšķiniet uz pogas Labi. Pycharm terminālis parāda mūsu rezultātu (mēs izmantojām Pycharm IDE, bet jūs varat izmantot jebkuru Python IDE).

Kā izstrādāt spēli Python

Paskaidrojums:

Paredzētais Python skripts izmanto Pygame pakotni, lai izveidotu vienkāršu Snake spēli. Tas nosaka klases gan čūskai, gan atsevišķiem kubiem, kas veido tās ķermeni. Pygame tiek izmantots, lai iestatītu spēles logu, kurā ir režģa struktūra un kustīga čūska. Pēc 'uzkodas' kubiņa apēšanas čūska pagarinās, un, ja tā ieskrien sevī vai robežsienās, spēle ir beigusies.

Lai pārvaldītu čūskas virzienu, ģenerētu uzkodas nejaušos režģa punktos, atklātu sadursmes starp čūskas galvu un ķermeni, atjauninātu spēles stāvokli un pārzīmētu spēles logu, spēles loģikai ir jāapstrādā lietotāja ievade. Lai kontrolētu spēļu mijiedarbību un vizuālos atjauninājumus, skripts izmanto Pygame notikumu apstrādes un zīmēšanas metodes. Tam ir arī pamata ziņojumu lodziņa funkcija, kas izmanto Tkinter, lai parādītu spēlētājiem ziņojumus, piemēram, kad viņi zaudē spēli. Kopumā skripts parāda galvenās idejas Pygame spēļu programmēšanai un piedāvā elementāru senās Snake spēles atveidojumu.