logo

Cum se dezvoltă un joc în Python

Cel mai adaptabil limbaj este Python, care este folosit în aproape orice industrie, inclusiv în dezvoltarea jocurilor, dezvoltarea web, învățarea automată, inteligența artificială și aplicațiile GUI.

Jocul este dezvoltat folosind pachetul pygame, care este o caracteristică încorporată a lui Python. Cu o înțelegere rudimentară a programării Python, putem crea jocuri atrăgătoare din punct de vedere vizual, cu animație, efecte sonore și muzică adecvate, utilizând modulul pygame.

O bibliotecă multi-platformă numită Pygame este folosită pentru a crea jocuri video. Are biblioteci de sunet și imagini pe computer pentru a oferi jucătorului o experiență tipică de joc.

Pete Shinners îl dezvoltă pentru a lua locul lui PySDL.

Cerințe preliminare pentru Pygame

Trebuie să înțelegem limbajul de programare Python pentru a învăța Pygame.

tutorial java swing

Instalarea Pygame

Pentru a instala Pygame, deschideți un terminal de linie de comandă și introduceți următoarea comandă.

 pip install pygame 

Îl putem instala și prin IDE. Pentru un ghid de instalare suplimentar, vizitați tutorialul nostru complet pygame ( https://www.javatpoint.com/pygame ). Aici veți găsi toate explicațiile esențiale pygame.

Exemplu simplu Pygame

Iată următorul exemplu de creare a unei ferestre simple 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() 

Ieșire:

Cum se dezvoltă un joc în Python

Explicaţie:

document.queryselector

Codul furnizat deschide o fereastră Pygame de 400x500 pixeli și pornește o buclă care urmărește evenimentele tot timpul. Bucla schimbă variabila „terminat” în True, care încheie bucla și încheie programul dacă este detectat un eveniment QUIT (de obicei când utilizatorul iese din fereastră). Actualizează afișajul și se asigură că orice modificări sunt afișate pe ecran datorită metodei „pygame.display.flip()”. Pe scurt, codul generează o mică fereastră Pygame care rămâne activă până când utilizatorul o respinge, prezentând o structură de bază a programului care este condusă de evenimente.

Toate graficele vor fi desenate în fereastra pygame.

invata seleniul

Să înțelegem sintaxa de bază a programului de mai sus.

    import pygame:Este modulul care ne oferă acces la toate funcțiile Pygame.căldură():Este folosit pentru a inițializa fiecare dintre modulele necesare pygame-ului.display.set_mode((lățime, înălțime)):Este folosit pentru a regla dimensiunea ferestrei. Acesta va da înapoi articolul la suprafață. Acțiunile grafice sunt efectuate prin obiectul de suprafață.event.get():Rezultatul este o coadă de evenimente goală. Dacă nu îl numim, sistemul de operare va percepe jocul ca neresponsibil, iar mesajele din fereastră vor începe să se acumuleze.PĂRĂSI:Când facem clic pe butonul cruce din colțul ferestrei, acesta este utilizat pentru a închide evenimentul.display.flip():Orice actualizări ale jocului sunt reflectate în el. Trebuie să contactăm afișajul ori de câte ori facem modificări.flip() este o funcție.

Orice formă poate fi desenată pe suprafața Pygame, inclusiv fonturi și imagini frumoase. Numeroase metode încorporate în Pygame vă permit să desenați forme geometrice pe ecran. Aceste formulare reprezintă primii pași în crearea unui joc.

Să examinăm următoarea ilustrare a unui formular desenat pe un ecran.

Exemplu -

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

Ieșire:

admin powershell
Cum se dezvoltă un joc în Python

Explicaţie:

Programul Python dat creează o fereastră grafică cu diferite forme geometrice desenate în ea folosind pachetul Pygame. Programul creează o fereastră Pygame de 400x300 pixeli și apoi pornește o buclă care urmărește evenimentele tot timpul, asigurându-se că fereastra rămâne deschisă până când utilizatorul o iese. Curățește ecranul la începutul acestei bucle și apoi folosește rutinele de desen Pygame pentru a crea o varietate de forme cu culori și lățimi diferite ale liniilor. Aceste forme includ linii, poligoane, elipse, cercuri și arce. Fiecare formă are coordonatele și proprietățile sale corespunzătoare definite. În cele din urmă, „pygame.display.flip()” este folosit pentru a reîmprospăta afișajul. Programul termină pygame la închiderea ferestrei.

Aplicația servește ca exemplu de adaptabilitate și varietate a capacităților de desen ale Pygame și oferă un cadru pentru dezvoltarea aplicațiilor grafice interactive. Dezvoltatorii pot crea o gamă largă de componente vizuale în mediul grafic al Pygame prin ajustarea unor parametri precum coordonatele, culorile și lățimea liniilor. Acest lucru permite construirea de aplicații multimedia interactive, jocuri și simulări.

Exemplu - Dezvoltarea jocului Snake folosind 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() </=>

Ieșire:

Cum se dezvoltă un joc în Python

Dacă șarpele se atinge, va termina jocul și va afișa următorul mesaj.

Cum se dezvoltă un joc în Python

Pentru a relua, faceți clic pe butonul OK. Terminalul Pycharm afișează scorul nostru (am folosit IDE-ul Pycharm, dar puteți folosi orice IDE Python).

Seria Fibonacci în c
Cum se dezvoltă un joc în Python

Explicaţie:

Scriptul Python furnizat utilizează pachetul Pygame pentru a crea un joc simplu Snake. Stabilește clase atât pentru șarpe, cât și pentru cuburile separate care alcătuiesc corpul său. Pygame este folosit pentru a configura fereastra de joc, care are o structură de grilă și un șarpe în mișcare. După ce mănâncă un cub de „gustare”, șarpele se lungește, iar dacă se îndreaptă spre el însuși sau pe pereții de delimitare, jocul se termină.

Pentru a gestiona direcția șarpelui, a genera gustări în puncte aleatorii de pe grilă, a detecta coliziunile între capul și corpul șarpelui, a actualiza starea jocului și a redesena fereastra de joc, logica jocului trebuie să se ocupe de intrarea utilizatorului. Pentru a controla interacțiunile jocului și actualizările vizuale, scriptul folosește metodele Pygame de gestionare a evenimentelor și de desen. De asemenea, are o caracteristică de bază a casetei de mesaje care utilizează Tkinter pentru a afișa mesajele jucătorilor, cum ar fi atunci când pierd un joc. În general, scenariul prezintă idei cheie în programarea jocurilor Pygame și oferă o interpretare rudimentară a jocului de epocă Snake.