logo

Hvordan man udvikler et spil i Python

Det mest tilpasningsdygtige sprog er Python, som bruges i næsten alle brancher, herunder spiludvikling, webudvikling, maskinlæring, kunstig intelligens og GUI-applikationer.

Spillet er udviklet ved hjælp af pygame-pakken, som er en indbygget funktion i Python. Med en rudimentær forståelse af Python-programmering kan vi skabe visuelt tiltalende spil med passende animation, lydeffekter og musik ved at bruge pygame-modulet.

Et bibliotek på tværs af platforme kaldet Pygame bruges til at skabe videospil. Den har lydbiblioteker og computervisuals for at give spilleren en typisk spiloplevelse.

Pete Shinners udvikler det til at træde i stedet for PySDL.

Forudsætninger for Pygame

Vi er nødt til at forstå Python-programmeringssproget for at lære Pygame.

java understreng funktion

Installerer Pygame

For at installere Pygame skal du åbne en kommandolinjeterminal og indtaste følgende kommando.

hvad er rom
 pip install pygame 

Vi kan også installere det via IDE. For yderligere installationsvejledning, besøg vores komplette pygame-tutorial ( https://www.javatpoint.com/pygame ). Her finder du alle de væsentlige pygame-forklaringer.

Simpelt Pygame eksempel

Her er følgende eksempel på at skabe et simpelt pygame-vindue.

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

Produktion:

Hvordan man udvikler et spil i Python

Forklaring:

Den medfølgende kode åbner et 400x500 pixel Pygame-vindue og starter en loop, der hele tiden holder øje med begivenheder. Sløjfen ændrer 'done'-variablen til True, som afslutter løkken og afslutter programmet, hvis en QUIT-hændelse detekteres (normalt når brugeren forlader vinduet). Opdaterer displayet og sørger for, at eventuelle ændringer vises på skærmen takket være 'pygame.display.flip()'-metoden. For at sige det kort genererer koden et lille Pygame-vindue, der forbliver aktivt, indtil brugeren afviser det, og viser en grundlæggende programstruktur, der er hændelsesdrevet.

Al grafik tegnes i pygame-vinduet.

Lad os forstå den grundlæggende syntaks for ovenstående program.

hvordan man læser csv-filen i java
    import pygame:Det er modulet, der giver os adgang til alle Pygames funktioner.varme():Det bruges til at initialisere hvert af pygamets nødvendige moduler.display.set_mode((bredde, højde)):Det bruges til at justere vinduets størrelse. Det vil give varen tilbage på overfladen. De grafiske handlinger udføres gennem overfladeobjektet.event.get():Resultatet er en tom begivenhedskø. Hvis vi ikke kalder det, vil operativsystemet opfatte spillet som ikke-reagerende, og vinduesbeskederne vil begynde at akkumulere.AFSLUT:Når vi klikker på krydsknappen i vinduets hjørne, bruges den til at afvise begivenheden.display.flip():Eventuelle opdateringer til spillet afspejles i det. Vi skal kontakte displayet, hver gang vi foretager ændringer.flip() er en funktion.

Enhver form kan tegnes på Pygame-overfladen, inklusive smukke skrifttyper og billeder. Adskillige indbyggede metoder i Pygame giver dig mulighed for at tegne geometriske figurer på skærmen. Disse formularer repræsenterer de første trin i at skabe et spil.

Lad os undersøge følgende illustration af en formular, der tegnes på en skærm.

Eksempel -

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

Produktion:

Hvordan man udvikler et spil i Python

Forklaring:

Det givne Python-program opretter et grafisk vindue med forskellige geometriske former tegnet i det ved at bruge Pygame-pakken. Programmet opretter et 400x300 pixel Pygame-vindue, og det starter derefter en løkke, der hele tiden holder øje med begivenheder og sørger for, at vinduet forbliver åbent, indtil brugeren forlader det. Den rydder skærmen i begyndelsen af ​​denne løkke og bruger derefter Pygames tegnerutiner til at skabe en række forskellige former med varierende farver og linjebredder. Disse former omfatter linjer, polygoner, ellipser, cirkler og buer. Hver form har sine korrekte koordinater og egenskaber defineret. Til sidst bruges 'pygame.display.flip()' til at opdatere skærmen. Programmet afslutter pygame ved lukning af vinduet.

Applikationen fungerer som et eksempel på Pygames tegneegenskabers tilpasningsevne og variation og giver en ramme for udvikling af interaktive grafiske applikationer. Udviklere kan skabe en lang række visuelle komponenter inde i Pygames grafiske miljø ved at justere parametre som koordinater, farver og linjebredder. Dette giver mulighed for konstruktion af interaktive multimedieapplikationer, spil og simuleringer.

linux operativsystem

Eksempel - Udvikling af slangespil ved hjælp af 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() </=>

Produktion:

find min iphone android
Hvordan man udvikler et spil i Python

Hvis slangen rører sig selv, vil den afslutte spillet og vise følgende besked.

Hvordan man udvikler et spil i Python

For at genoptage skal du blot klikke på OK-knappen. Pycharm-terminalen viser vores score (vi brugte Pycharm IDE, men du kan bruge enhver Python IDE).

Hvordan man udvikler et spil i Python

Forklaring:

Det medfølgende Python-script bruger Pygame-pakken til at skabe et ligetil Snake-spil. Den etablerer klasser for både slangen og de separate terninger, der udgør dens krop. Pygame bruges til at opsætte spilvinduet, som har en gitterstruktur og en bevægelig slange. Efter at have spist en 'snack'-terning, forlænges slangen, og hvis den løber ind i sig selv eller grænsevæggene, er spillet slut.

For at styre slangens retning, generere snacks på tilfældige punkter på gitteret, registrere kollisioner mellem slangens hoved og krop, opdatere spiltilstanden og gentegne spilvinduet, skal spillogikken håndtere brugerinput. For at kontrollere spilinteraktioner og visuelle opdateringer gør scriptet brug af Pygames hændelseshåndtering og tegnemetoder. Den har også en grundlæggende beskedboksfunktion, der bruger Tkinter til at vise spillernes beskeder, såsom når de taber et spil. Generelt viser scriptet nøgleideer i Pygame-spilprogrammering og tilbyder en rudimentær gengivelse af vintage Snake-spillet.