logo

Hoe een spel in Python te ontwikkelen

De meest aanpasbare taal is Python, die in bijna elke branche wordt gebruikt, inclusief game-ontwikkeling, webontwikkeling, machine learning, kunstmatige intelligentie en GUI-applicaties.

De game is ontwikkeld met behulp van het pygame-pakket, een ingebouwde functie van Python. Met een rudimentair begrip van Python-programmering kunnen we visueel aantrekkelijke games maken met passende animaties, geluidseffecten en muziek door gebruik te maken van de pygame-module.

Een platformonafhankelijke bibliotheek genaamd Pygame wordt gebruikt om videogames te maken. Het beschikt over geluidsbibliotheken en computerbeelden om de speler een typische game-ervaring te bieden.

Pete Shinners ontwikkelt het om de plaats van PySDL in te nemen.

Vereisten voor Pygame

We moeten de programmeertaal Python begrijpen om Pygame te leren.

gooi gooit in Java

Pygame installeren

Om Pygame te installeren, opent u een opdrachtregelterminal en voert u de volgende opdracht in.

 pip install pygame 

We kunnen het ook via IDE installeren. Bezoek onze volledige pygame-tutorial (https://www.javatpoint.com/pygame) voor meer installatiehandleidingen. Hier vindt u alle essentiële pygame-uitleg.

Eenvoudig Pygame-voorbeeld

Hier is het volgende voorbeeld van het maken van een eenvoudig pygame-venster.

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

Uitgang:

Hoe een spel in Python te ontwikkelen

Uitleg:

De meegeleverde code opent een Pygame-venster van 400 x 500 pixels en start een lus die voortdurend naar gebeurtenissen kijkt. De lus verandert de variabele 'done' in True, waardoor de lus wordt beëindigd en het programma wordt beëindigd als een QUIT-gebeurtenis wordt gedetecteerd (meestal wanneer de gebruiker het venster afsluit). Werkt de weergave bij en zorgt ervoor dat eventuele wijzigingen op het scherm worden weergegeven dankzij de 'pygame.display.flip()'-methode. Kort gezegd genereert de code een klein Pygame-venster dat actief blijft totdat de gebruiker het sluit, en vertoont een basisprogrammastructuur die gebeurtenisgestuurd is.

Alle afbeeldingen worden in het pygame-venster getekend.

Laten we de basissyntaxis van het bovenstaande programma begrijpen.

    pygame importeren:Het is de module die ons toegang geeft tot alle functies van Pygame.warmte():Het wordt gebruikt om elk van de benodigde modules van de pygame te initialiseren.display.set_mode((breedte, hoogte)):Het wordt gebruikt om de grootte van het venster aan te passen. Het geeft het item aan de oppervlakte terug. De grafische acties worden uitgevoerd via het oppervlakteobject.gebeurtenis.get():Het resultaat is een lege gebeurteniswachtrij. Als we dit niet doen, zal het besturingssysteem waarnemen dat het spel niet meer reageert en zullen de vensterberichten zich ophopen.ONTSLAG NEMEN:Wanneer we op het kruisje in de hoek van het venster klikken, wordt dit gebruikt om de gebeurtenis te sluiten.weergave.flip():Eventuele updates van de game worden erin weerspiegeld. We moeten contact opnemen met het display wanneer we wijzigingen aanbrengen.flip() is een functie.

Elke vorm kan op het Pygame-oppervlak worden getekend, inclusief prachtige lettertypen en afbeeldingen. Met talloze ingebouwde methoden in Pygame kun je geometrische vormen op het scherm tekenen. Deze formulieren vertegenwoordigen de eerste stappen bij het maken van een spel.

Laten we de volgende illustratie bekijken van een formulier dat op een scherm wordt getekend.

tekenreeks naar teken

Voorbeeld -

Linux hoe je een map hernoemt
 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() 

Uitgang:

Hoe een spel in Python te ontwikkelen

Uitleg:

Het gegeven Python-programma creëert een grafisch venster met verschillende geometrische vormen erin getekend met behulp van het Pygame-pakket. Het programma maakt een Pygame-venster van 400 x 300 pixels en start vervolgens een lus die voortdurend naar gebeurtenissen kijkt, zodat het venster open blijft totdat de gebruiker het afsluit. Het scherm wordt aan het begin van deze lus leeggemaakt en vervolgens worden de tekenroutines van Pygame gebruikt om een ​​verscheidenheid aan vormen te creëren met verschillende kleuren en lijndiktes. Deze vormen omvatten lijnen, veelhoeken, ellipsen, cirkels en bogen. Voor elke vorm zijn de juiste coördinaten en eigenschappen gedefinieerd. Ten slotte wordt 'pygame.display.flip()' gebruikt om de weergave te vernieuwen. Het programma beëindigt pygame bij het sluiten van het venster.

De applicatie dient als een voorbeeld van het aanpassingsvermogen en de verscheidenheid van Pygame's tekenmogelijkheden en biedt een raamwerk voor het ontwikkelen van interactieve grafische applicaties. Ontwikkelaars kunnen een breed scala aan visuele componenten creëren binnen de grafische omgeving van Pygame door parameters zoals coördinaten, kleuren en lijndiktes aan te passen. Dit maakt de constructie van interactieve multimediatoepassingen, games en simulaties mogelijk.

Voorbeeld - Snake-game ontwikkelen met Pygame

Programma -

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

Uitgang:

Hoe een spel in Python te ontwikkelen

Als de slang zichzelf aanraakt, wordt het spel beëindigd en wordt het volgende bericht weergegeven.

industrie en fabriek
Hoe een spel in Python te ontwikkelen

Om verder te gaan, klikt u eenvoudig op de knop OK. De Pycharm-terminal geeft onze score weer (we gebruikten de Pycharm IDE, maar je kunt elke Python IDE gebruiken).

Hoe een spel in Python te ontwikkelen

Uitleg:

Het meegeleverde Python-script gebruikt het Pygame-pakket om een ​​eenvoudig Snake-spel te maken. Het stelt klassen vast voor zowel de slang als de afzonderlijke kubussen waaruit zijn lichaam bestaat. Pygame wordt gebruikt om het spelvenster in te stellen, dat een rasterstructuur en een bewegende slang bevat. Na het eten van een 'snack'-blokje wordt de slang langer, en als hij tegen zichzelf of tegen de grensmuren aanloopt, is het spel afgelopen.

Om de richting van de slang te bepalen, snacks op willekeurige punten op het raster te genereren, botsingen tussen de kop en het lichaam van de slang te detecteren, de spelstatus bij te werken en het spelvenster opnieuw te tekenen, moet de spellogica de gebruikersinvoer verwerken. Om spelinteracties en visuele updates te controleren, maakt het script gebruik van de gebeurtenisafhandelings- en tekenmethoden van Pygame. Het heeft ook een standaard berichtenboxfunctie die Tkinter gebruikt om de spelersberichten te tonen, bijvoorbeeld wanneer ze een spel verliezen. Over het geheel genomen toont het script de belangrijkste ideeën in de programmering van Pygame-spellen en biedt het een rudimentaire weergave van het vintage Snake-spel.