logo

Hvordan utvikle et spill i Python

Det mest tilpasningsdyktige språket er Python, som brukes i nesten alle bransjer, inkludert spillutvikling, webutvikling, maskinlæring, kunstig intelligens og GUI-applikasjoner.

Spillet er utviklet ved hjelp av pygame-pakken, som er en innebygd funksjon i Python. Med en rudimentær forståelse av Python-programmering kan vi lage visuelt tiltalende spill med passende animasjon, lydeffekter og musikk ved å bruke pygame-modulen.

Et kryssplattformbibliotek kalt Pygame brukes til å lage videospill. Den har lydbiblioteker og databilder for å gi spilleren en typisk spillopplevelse.

Pete Shinners utvikler den for å ta plassen til PySDL.

Forutsetninger for Pygame

Vi må forstå Python-programmeringsspråket for å lære Pygame.

midtknapp i css

Installerer Pygame

For å installere Pygame, åpne en kommandolinjeterminal og skriv inn følgende kommando.

for loop bash
 pip install pygame 

Vi kan også installere det gjennom IDE. For ytterligere installasjonsveiledning, besøk vår komplette pygame-veiledning ( https://www.javatpoint.com/pygame ). Her finner du alle viktige pygame-forklaringer.

Enkelt Pygame-eksempel

Her er følgende eksempel på å lage et enkelt pygame-vindu.

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

Produksjon:

Hvordan utvikle et spill i Python

Forklaring:

Koden som følger med åpner et Pygame-vindu på 400 x 500 piksler og starter en loop som ser etter hendelser hele tiden. Sløyfen endrer 'done'-variabelen til True, som avslutter løkken og avslutter programmet hvis en QUIT-hendelse oppdages (vanligvis når brukeren avslutter vinduet). Oppdaterer skjermen og sørger for at eventuelle endringer vises på skjermen takket være 'pygame.display.flip()'-metoden. For å si det kort, koden genererer et lite Pygame-vindu som forblir aktivt til brukeren avviser det, og viser en grunnleggende programstruktur som er hendelsesdrevet.

All grafikk vil tegnes i pygame-vinduet.

La oss forstå den grunnleggende syntaksen til programmet ovenfor.

selen
    import pygame:Det er modulen som gir oss tilgang til alle Pygames funksjoner.varme():Den brukes til å initialisere hver av pygamets nødvendige moduler.display.set_mode((bredde, høyde)):Den brukes til å justere vinduets størrelse. Det vil gi tilbake varen på overflaten. De grafiske handlingene utføres gjennom overflateobjektet.event.get():Resultatet er en tom hendelseskø. Hvis vi ikke kaller det, vil operativsystemet oppfatte spillet som ikke-svarende, og vindusmeldingene vil begynne å hope seg opp.SLUTTE:Når vi klikker på kryssknappen i vinduets hjørne, brukes den til å avvise hendelsen.display.flip():Eventuelle oppdateringer til spillet gjenspeiles i det. Vi må kontakte skjermen hver gang vi gjør endringer.flip() er en funksjon.

Alle former kan tegnes på Pygame-overflaten, inkludert vakre fonter og bilder. Tallrike innebygde metoder i Pygame lar deg tegne geometriske former på skjermen. Disse skjemaene representerer de første trinnene i å lage et spill.

La oss undersøke følgende illustrasjon av et skjema som tegnes på en skjerm.

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

Produksjon:

Hvordan utvikle et spill i Python

Forklaring:

Det gitte Python-programmet lager et grafisk vindu med forskjellige geometriske former tegnet i det ved å bruke Pygame-pakken. Programmet lager et Pygame-vindu på 400 x 300 piksler, og det starter deretter en loop som ser etter hendelser hele tiden, og sørger for at vinduet forblir åpent til brukeren avslutter det. Den tømmer skjermen i begynnelsen av denne løkken og bruker deretter Pygames tegnerutiner for å lage en rekke former med varierende farger og linjebredder. Disse formene inkluderer linjer, polygoner, ellipser, sirkler og buer. Hver form har sine riktige koordinater og egenskaper definert. Til slutt brukes 'pygame.display.flip()' til å oppdatere skjermen. Programmet avslutter pygame når vinduet lukkes.

Applikasjonen fungerer som et eksempel på Pygames tegneevnes tilpasningsevne og variasjon og gir et rammeverk for å utvikle interaktive grafiske applikasjoner. Utviklere kan lage et stort utvalg av visuelle komponenter i Pygames grafiske miljø ved å justere parametere som koordinater, farger og linjebredder. Dette gjør det mulig å bygge interaktive multimediaapplikasjoner, spill og simuleringer.

diana ankudinova

Eksempel - Utvikle Snake Game ved hjelp av 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() </=>

Produksjon:

finn min iphone android
Hvordan utvikle et spill i Python

Hvis slangen berører seg selv, vil den avslutte spillet og vise følgende melding.

Hvordan utvikle et spill i Python

For å fortsette, klikk på OK-knappen. Pycharm-terminalen viser poengsummen vår (vi brukte Pycharm IDE, men du kan bruke hvilken som helst Python IDE).

Hvordan utvikle et spill i Python

Forklaring:

Det medfølgende Python-skriptet bruker Pygame-pakken til å lage et enkelt Snake-spill. Den etablerer klasser for både slangen og de separate kubene som utgjør kroppen. Pygame brukes til å sette opp spillvinduet, som har en rutenettstruktur og en bevegelig slange. Etter å ha spist en 'snack'-terning, forlenges slangen, og hvis den løper inn i seg selv eller grenseveggene, er spillet over.

For å administrere slangens retning, generere snacks på tilfeldige punkter på rutenettet, oppdage kollisjoner mellom slangens hode og kropp, oppdatere spilltilstanden og tegne spillvinduet på nytt, må spilllogikken håndtere brukerinndata. For å kontrollere spillinteraksjoner og visuelle oppdateringer bruker skriptet Pygames hendelseshåndtering og tegnemetoder. Den har også en grunnleggende meldingsboksfunksjon som bruker Tkinter til å vise spillerens meldinger, for eksempel når de taper et spill. Totalt sett viser skriptet nøkkelideer i Pygame-spillprogrammering og tilbyr en rudimentær gjengivelse av vintage Snake-spillet.