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:
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.
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
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] >= 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('-topmost', 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('Score: ', len(s.body)) message_box('You Lost! ', 'Play again... ') s.reset((10, 10)) break redrawWindow(win) pass main() </=>
Výkon:
Ak sa had dotkne sám seba, ukončí hru a zobrazí nasledujúcu správu.
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
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.