logo

Kako razviti igru ​​u Pythonu

Najprilagodljiviji jezik je Python, koji se koristi u gotovo svakoj industriji, uključujući razvoj igara, web razvoj, strojno učenje, umjetnu inteligenciju i GUI aplikacije.

Igra je razvijena pomoću paketa pygame, koji je ugrađena značajka Pythona. Uz osnovno razumijevanje Python programiranja, možemo kreirati vizualno privlačne igre s odgovarajućom animacijom, zvučnim efektima i glazbom korištenjem modula pygame.

Knjižnica za više platformi pod nazivom Pygame koristi se za izradu videoigara. Ima zvučne biblioteke i računalne slike kako bi igraču pružio tipično iskustvo igranja.

Pete Shinners ga razvija kako bi zauzeo mjesto PySDL-a.

Preduvjeti za Pygame

Moramo razumjeti programski jezik Python kako bismo naučili Pygame.

java hello world primjer

Instaliranje Pygame

Da biste instalirali Pygame, otvorite terminal naredbenog retka i unesite sljedeću naredbu.

 pip install pygame 

Također ga možemo instalirati kroz IDE. Za daljnji vodič za instalaciju posjetite naš cjeloviti vodič za pygame (https://www.javatpoint.com/pygame). Ovdje ćete pronaći sva bitna objašnjenja za pygame.

Jednostavan primjer Pygame

Evo sljedećeg primjera stvaranja jednostavnog pygame prozora.

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

Izlaz:

za svaki strojopis
Kako razviti igru ​​u Pythonu

Obrazloženje:

Isporučeni kod otvara Pygame prozor od 400x500 piksela i pokreće petlju koja cijelo vrijeme prati događaje. Petlja mijenja varijablu 'done' u True, što završava petlju i završava program ako se otkrije QUIT događaj (obično kada korisnik zatvori prozor). Ažurira zaslon i osigurava da se sve promjene prikazuju na zaslonu zahvaljujući metodi 'pygame.display.flip()'. Ukratko, kod generira mali Pygame prozor koji ostaje aktivan dok ga korisnik ne odbaci, pokazujući osnovnu programsku strukturu koja je vođena događajima.

pseudokod java

Sve će se grafike crtati u prozoru pygame.

Razumimo osnovnu sintaksu gornjeg programa.

    uvoz pygame:To je modul koji nam daje pristup svim funkcijama Pygamea.toplina():Koristi se za inicijalizaciju svakog od potrebnih modula pygame-a.display.set_mode((širina, visina)):Koristi se za podešavanje veličine prozora. Vratit će predmet na površinu. Grafičke radnje provode se preko površinskog objekta.event.get():Rezultat je prazan red događaja. Ako ga ne pozovemo, operativni sustav će shvatiti da igra ne reagira, a prozorske poruke će se početi gomilati.PRESTATI:Kada kliknemo gumb s križićem u kutu prozora, on se koristi za odbacivanje događaja.prikaz.flip():Sva ažuriranja igre odražavaju se u njemu. Moramo kontaktirati zaslon kad god radimo bilo kakve promjene.flip() je funkcija.

Bilo koji oblik može se nacrtati na Pygame površini, uključujući lijepe fontove i slike. Brojne ugrađene metode u Pygameu omogućuju crtanje geometrijskih oblika na ekranu. Ovi oblici predstavljaju prve korake u stvaranju igre.

Pogledajmo sljedeću ilustraciju obrasca koji se crta na ekranu.

Primjer -

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

Izlaz:

Kako razviti igru ​​u Pythonu

Obrazloženje:

Navedeni Python program pomoću paketa Pygame kreira grafički prozor u kojem su iscrtani različiti geometrijski oblici. Program stvara Pygame prozor od 400x300 piksela, a zatim pokreće petlju koja cijelo vrijeme prati događaje, pazeći da prozor ostane otvoren dok ga korisnik ne zatvori. Čisti zaslon na početku ove petlje, a zatim koristi Pygameove rutine crtanja za stvaranje različitih oblika s različitim bojama i širinama linija. Ti oblici uključuju linije, poligone, elipse, krugove i lukove. Svaki oblik ima definirane odgovarajuće koordinate i svojstva. Na kraju, 'pygame.display.flip()' se koristi za osvježavanje zaslona. Program prekida pygame nakon zatvaranja prozora.

popis fontova u gimp-u

Aplikacija služi kao primjer prilagodljivosti i raznolikosti Pygameovih mogućnosti crtanja i pruža okvir za razvoj interaktivnih grafičkih aplikacija. Programeri mogu stvoriti širok raspon vizualnih komponenti unutar Pygameovog grafičkog okruženja podešavanjem parametara kao što su koordinate, boje i širine linija. To omogućuje izradu interaktivnih multimedijskih aplikacija, igara i simulacija.

Primjer - razvoj igre Snake koristeći Pygame

Program -

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

Izlaz:

Kako razviti igru ​​u Pythonu

Ako se zmija dotakne, prekinut će igru ​​i prikazati sljedeću poruku.

Kako razviti igru ​​u Pythonu

Za nastavak jednostavno kliknite gumb U redu. Terminal Pycharm prikazuje naš rezultat (koristili smo Pycharm IDE, ali možete koristiti bilo koji Python IDE).

Kako razviti igru ​​u Pythonu

Obrazloženje:

Isporučena Python skripta koristi paket Pygame za stvaranje jednostavne igre Snake. Uspostavlja klase i za Zmiju i za zasebne kocke koje čine njezino tijelo. Pygame se koristi za postavljanje prozora igre, koji ima mrežnu strukturu i pokretnu zmiju. Nakon što pojede kockicu 'grickalice', zmija se izdužuje, a ako naleti na samu sebe ili na granične zidove, igra je gotova.

Kako bi upravljali smjerom kretanja zmije, generirali zalogaje na nasumičnim točkama na mreži, detektirali sudare između glave i tijela zmije, ažurirali stanje igre i ponovno nacrtali prozor igre, logika igre mora obraditi korisnički unos. Za kontrolu interakcija igre i vizualnih ažuriranja, skripta koristi Pygameove metode rukovanja događajima i crtanja. Također ima značajku osnovnog okvira za poruke koja koristi Tkinter za prikaz poruka igrača, primjerice kada izgube igru. Sveukupno, skripta prikazuje ključne ideje u programiranju Pygame igre i nudi rudimentarnu izvedbu stare igre Snake.