logo

Ako vytvoriť hru v Pythone

Najprispôsobivejším jazykom je Python, ktorý sa používa takmer v každom odvetví, vrátane vývoja hier, vývoja webu, strojového učenia, umelej inteligencie a GUI aplikácií.

Hra je vyvinutá pomocou balíka pygame, ktorý je vstavanou funkciou Pythonu. So základným porozumením programovania v Pythone môžeme pomocou modulu pygame vytvárať vizuálne príťažlivé hry s vhodnou animáciou, zvukovými efektmi a hudbou.

Na vytváranie videohier sa používa multiplatformová knižnica s názvom Pygame. Má zvukové knižnice a počítačové vizuálne prvky, ktoré hráčovi poskytujú typický herný zážitok.

Pete Shinners ju vyvíja, aby nahradila PySDL.

Predpoklady pre Pygame

Aby sme sa naučili Pygame, musíme pochopiť programovací jazyk Python.

reťazec na char java

Inštalácia Pygame

Ak chcete nainštalovať Pygame, otvorte terminál príkazového riadka a zadajte nasledujúci príkaz.

 pip install pygame 

Môžeme ho nainštalovať aj cez IDE. Ďalšieho sprievodcu inštaláciou nájdete v našom kompletnom návode na pygame ( https://www.javatpoint.com/pygame ). Tu nájdete všetky základné vysvetlenia pygame.

Jednoduchý príklad Pygame

Tu je nasledujúci príklad vytvorenia jednoduchého okna 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() 

Výkon:

Ako vytvoriť hru v Pythone

Vysvetlenie:

Java vylepšená slučka

Dodaný kód otvorí okno Pygame s rozmermi 400 x 500 pixelov a spustí slučku, ktorá neustále sleduje udalosti. Cyklus zmení premennú 'done' na True, čo ukončí cyklus a ukončí program, ak sa zistí udalosť QUIT (zvyčajne keď používateľ opustí okno). Aktualizuje zobrazenie a zabezpečí, aby sa všetky zmeny zobrazili na obrazovke vďaka metóde 'pygame.display.flip()'. Stručne povedané, kód vygeneruje malé okno Pygame, ktoré zostane aktívne, kým ho používateľ nezavrie, pričom zobrazuje základnú štruktúru programu, ktorá je riadená udalosťami.

Všetka grafika sa nakreslí v okne pygame.

býci vs vôl

Poďme pochopiť základnú syntax vyššie uvedeného programu.

    importovať pygame:Je to modul, ktorý nám umožňuje prístup ku všetkým funkciám Pygame.teplo():Používa sa na inicializáciu každého z potrebných modulov pygame.display.set_mode((šírka, výška)):Používa sa na nastavenie veľkosti okna. Vráti položku na povrchu. Grafické akcie sa vykonávajú cez povrchový objekt.event.get():Výsledkom je prázdny front udalostí. Ak to nezavoláme, operačný systém bude hru vnímať ako nereagujúcu a začnú sa hromadiť správy v okne.UKONČIŤ:Keď klikneme na tlačidlo krížika v rohu okna, použije sa na zrušenie udalosti.display.flip():Všetky aktualizácie hry sa v nej prejavia. Vždy, keď vykonáme nejaké zmeny, musíme kontaktovať displej. flip() je funkcia.

Na povrch Pygame je možné nakresliť akúkoľvek formu, vrátane krásnych fontov a obrázkov. Početné vstavané metódy v Pygame vám umožňujú kresliť geometrické tvary na obrazovku. Tieto formuláre predstavujú prvé kroky pri vytváraní hry.

Pozrime sa na nasledujúcu ilustráciu formulára nakresleného na obrazovke.

Príklad -

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

Výkon:

pytónový had vs anakonda
Ako vytvoriť hru v Pythone

Vysvetlenie:

Daný program Python pomocou balíka Pygame vytvorí grafické okno s rôznymi geometrickými tvarmi nakreslenými v ňom. Program vytvorí okno Pygame s rozmermi 400 x 300 pixelov a potom spustí slučku, ktorá neustále sleduje udalosti, pričom sa uistí, že okno zostane otvorené, kým ho používateľ neopustí. Na začiatku tejto slučky vyčistí obrazovku a potom použije kresliace postupy Pygame na vytvorenie rôznych foriem s rôznymi farbami a šírkami čiar. Tieto tvary zahŕňajú čiary, mnohouholníky, elipsy, kruhy a oblúky. Každý formulár má definované vlastné súradnice a vlastnosti. Nakoniec, 'pygame.display.flip()' sa používa na obnovenie zobrazenia. Program ukončí pygame po zatvorení okna.

Aplikácia slúži ako príklad adaptability a rozmanitosti kresliacich schopností Pygame a poskytuje rámec pre vývoj interaktívnych grafických aplikácií. Vývojári môžu vytvárať širokú škálu vizuálnych komponentov v grafickom prostredí Pygame úpravou parametrov, ako sú súradnice, farby a šírky čiar. To umožňuje vytváranie interaktívnych multimediálnych aplikácií, hier a simulácií.

Príklad – Vývoj hry Snake pomocou Pygame

Program -

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

Výkon:

Ako vytvoriť hru v Pythone

Ak sa had dotkne sám seba, ukončí hru a zobrazí nasledujúcu správu.

Ako vytvoriť hru v Pythone

Ak chcete pokračovať, jednoducho kliknite na tlačidlo OK. Terminál Pycharm zobrazuje naše skóre (použili sme Pycharm IDE, ale môžete použiť akékoľvek Python IDE).

binárny strom prechodu zásielkového obchodu
Ako vytvoriť hru v Pythone

Vysvetlenie:

Poskytnutý skript Python používa balík Pygame na vytvorenie jednoduchej hry Snake. Stanovuje triedy pre hada a samostatné kocky, ktoré tvoria jeho telo. Pygame sa používa na nastavenie herného okna, ktoré obsahuje mriežkovú štruktúru a pohyblivého hada. Po zjedení kocky 'snack' sa had predĺži a ak narazí do seba alebo do hraničných múrov, hra sa končí.

Aby bolo možné riadiť smer hada, generovať občerstvenie v náhodných bodoch na mriežke, zisťovať kolízie medzi hlavou a telom hada, aktualizovať stav hry a prekresľovať herné okno, logika hry musí zvládnuť vstup používateľa. Na ovládanie herných interakcií a vizuálnych aktualizácií skript využíva metódy spracovania udalostí a kreslenia Pygame. Má tiež základnú funkciu správy, ktorá používa Tkinter na zobrazenie správ hráčovi, napríklad keď prehrá hru. Celkovo scenár ukazuje kľúčové myšlienky v programovaní hier Pygame a ponúka základné prevedenie starej hry Snake.