logo

Hur man utvecklar ett spel i Python

Det mest anpassningsbara språket är Python, som används i nästan alla branscher, inklusive spelutveckling, webbutveckling, maskininlärning, artificiell intelligens och GUI-applikationer.

Spelet är utvecklat med hjälp av paketet pygame, som är en inbyggd funktion i Python. Med en rudimentär förståelse för Python-programmering kan vi skapa visuellt tilltalande spel med lämplig animation, ljudeffekter och musik genom att använda pygame-modulen.

Ett plattformsoberoende bibliotek som heter Pygame används för att skapa videospel. Den har ljudbibliotek och datorbilder för att ge spelaren en typisk spelupplevelse.

Pete Shinners utvecklar den för att ersätta PySDL.

Förutsättningar för Pygame

Vi måste förstå Python-programmeringsspråket för att lära oss Pygame.

palindrom i java

Installerar Pygame

För att installera Pygame, öppna en kommandoradsterminal och skriv in följande kommando.

 pip install pygame 

Vi kan också installera det via IDE. För ytterligare installationsguide, besök vår kompletta pygame-handledning ( https://www.javatpoint.com/pygame ). Här hittar du alla viktiga pygame-förklaringar.

Enkelt Pygame Exempel

Här är följande exempel på att skapa ett enkelt pygame-fönster.

javaböna
 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:

Hur man utvecklar ett spel i Python

Förklaring:

Den medföljande koden öppnar ett Pygame-fönster på 400x500 pixlar och startar en slinga som tittar på händelser hela tiden. Slingan ändrar variabeln 'done' till True, vilket avslutar loopen och avslutar programmet om en QUIT-händelse detekteras (vanligtvis när användaren lämnar fönstret). Uppdaterar skärmen och ser till att alla ändringar visas på skärmen tack vare metoden 'pygame.display.flip()'. För att uttrycka det kort, koden genererar ett litet Pygame-fönster som förblir aktivt tills användaren avfärdar det, och uppvisar en grundläggande programstruktur som är händelsestyrd.

All grafik kommer att ritas i pygame-fönstret.

Låt oss förstå den grundläggande syntaxen för ovanstående program.

    importera pygame:Det är modulen som ger oss tillgång till alla Pygames funktioner.värme():Den används för att initiera var och en av pygamets nödvändiga moduler.display.set_mode((bredd, höjd)):Den används för att justera fönstrets storlek. Det kommer att ge tillbaka föremålet på ytan. De grafiska åtgärderna utförs genom ytobjektet.event.get():Resultatet är en tom händelsekö. Om vi ​​inte kallar det kommer operativsystemet att uppfatta spelet som inte svarar, och fönstermeddelandena kommer att börja ackumuleras.SLUTA MED:När vi klickar på kryssknappen i fönstrets hörn används den för att avvisa händelsen.display.flip():Eventuella uppdateringar av spelet återspeglas i det. Vi måste kontakta displayen när vi gör ändringar.flip() är en funktion.

Vilken form som helst kan ritas på Pygame-ytan, inklusive vackra typsnitt och bilder. Många inbyggda metoder i Pygame låter dig rita geometriska former på skärmen. Dessa formulär representerar de första stegen i att skapa ett spel.

Låt oss undersöka följande illustration av en form som ritas på en skärm.

inaktivera utvecklarläget

Exempel -

vem är freddie mercury
 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:

Hur man utvecklar ett spel i Python

Förklaring:

Det givna Python-programmet skapar ett grafiskt fönster med olika geometriska former ritade i det genom att använda Pygame-paketet. Programmet skapar ett Pygame-fönster på 400x300 pixlar, och det startar sedan en loop som tittar på händelser hela tiden, och ser till att fönstret förblir öppet tills användaren avslutar det. Den rensar skärmen i början av denna loop och använder sedan Pygames ritrutiner för att skapa en mängd olika former med varierande färger och linjebredder. Dessa former inkluderar linjer, polygoner, ellipser, cirklar och bågar. Varje form har sina korrekta koordinater och egenskaper definierade. Slutligen används 'pygame.display.flip()' för att uppdatera skärmen. Programmet avslutar pygame när fönstret stängs.

Applikationen fungerar som ett exempel på Pygames ritkapacitets anpassningsförmåga och variation och tillhandahåller ett ramverk för att utveckla interaktiva grafiska applikationer. Utvecklare kan skapa ett stort utbud av visuella komponenter i Pygames grafiska miljö genom att justera parametrar som koordinater, färger och linjebredder. Detta möjliggör konstruktion av interaktiva multimediaapplikationer, spel och simuleringar.

Exempel - Utveckla Snake Game med 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:

Hur man utvecklar ett spel i Python

Om ormen rör vid sig själv kommer den att avsluta spelet och visa följande meddelande.

shreya ghoshals första make
Hur man utvecklar ett spel i Python

För att återuppta, klicka bara på OK-knappen. Pycharm-terminalen visar vår poäng (vi använde Pycharm IDE, men du kan använda vilken Python IDE som helst).

Hur man utvecklar ett spel i Python

Förklaring:

Det medföljande Python-skriptet använder Pygame-paketet för att skapa ett enkelt Snake-spel. Det upprättar klasser för både ormen och de separata kuberna som utgör dess kropp. Pygame används för att ställa in spelfönstret, som har en rutnätsstruktur och en rörlig orm. Efter att ha ätit en 'snack'-kub förlängs ormen, och om den springer in i sig själv eller gränsväggarna är spelet över.

För att hantera ormens riktning, generera snacks på slumpmässiga punkter på nätet, upptäcka kollisioner mellan ormens huvud och kropp, uppdatera speltillståndet och rita om spelfönstret, måste spellogiken hantera användarinmatning. För att kontrollera spelinteraktioner och visuella uppdateringar använder manuset sig av Pygames händelsehantering och ritmetoder. Den har också en grundläggande meddelandeboxfunktion som använder Tkinter för att visa spelarnas meddelanden, till exempel när de förlorar ett spel. Sammantaget visar skriptet nyckelidéer i Pygame-spelprogrammering och erbjuder en rudimentär tolkning av vintage Snake-spelet.