Zephyrnet-logo

Lag ditt første spill med Python: Snake Game

Dato:

Python er både morsomt og enkelt å bruke. Med et bredt utvalg av biblioteker tilgjengelig, Python gjør livene våre enklere ved å forenkle å lage spill og applikasjoner. I denne artikkelen skal vi lage et klassisk spill som mange av oss sannsynligvis har spilt på et tidspunkt i livet – slangespillet. Hvis du ikke har opplevd dette spillet før, har du nå sjansen til å utforske og lage din egen versjon uten å måtte installere tunge biblioteker på systemet ditt. Alt du trenger for å komme i gang med å lage dette nostalgiske slangespillet er en grunnleggende forståelse av Python og en online kodingseditor som repl.it.

Slangespillet er en tidløs arkadeklassiker der spilleren kontrollerer en slange som vokser i lengde ettersom den spiser mat. I denne implementeringen, la oss bryte ned koden for å forstå hvordan spillet er strukturert og hvordan Turtle-biblioteket brukes til grafikk og brukerinteraksjon.

Innholdsfortegnelse

Bruke Turtle Graphics for enkel spillutvikling

The Turtle-grafikk bibliotek i Python gir en morsom og interaktiv måte å lage former på, tegne på skjermen og svare på brukerinnspill. Det brukes ofte til pedagogiske formål, og lærer programmeringskonsepter gjennom visuell tilbakemelding. Denne koden bruker Turtle til å lage spillelementene som slangen, maten og poengvisningen.

Online kodingsredigering: Repl.it

En nettkodeplattform kalt Repl.it lar deg utvikle, kjøre og samarbeide om kode direkte i nettleseren din. Den støtter mange forskjellige programmeringsspråk og har innebygde kompilatorer og tolker i tillegg til funksjoner som kodedeling, versjonskontroll og teamarbeid. Utviklere bruker det mye for læring, rask prototyping og kodedeling fordi det er enkelt å bruke og krever ingen oppsett.

Algoritme

La oss begynne å bygge vårt første spill med python. For å gjøre det må vi følge visse trinn nedenfor:

Opprett repl-fil

Trinn 1: Installere de nødvendige bibliotekene

Dette markerer det første trinnet i utviklingen av spillet kjent som Snake. Skilpadde, tilfeldig og tid er blant disse.

  • Skilpadde: Vi trenger dette biblioteket for å lage grafikken i spillet vårt. Vi er i stand til å manipulere bevegelsene til maten og slangen på skjermen og tegne dem.
  • Tilfeldig: For å lage tilfeldige steder for maten på skjermen, bruker vi det tilfeldige biblioteket. Dette sikrer at hver gang maten spises, vises den på et annet sted.
  • Tid: Slangen beveger seg med en liten forsinkelse mellom hver bevegelse takket være tidsbiblioteket. Dette gjør spillet enklere å betjene og morsommere for spillere.
import turtle
import time
import random

Trinn 2: Sette opp spillmiljøet.

Dette inkluderer å etablere skjermens dimensjoner, legge til en blå bakgrunn og legge til en liten forsinkelse for å sikre flytende spilling. Vi setter også opp variabler som high_score for å beholde den høyeste oppnådde poengsummen, poengsum for å overvåke spillerens poengsum, og segmenter for å spore slangens kropp.

# Initialize the screen
sc = turtle.Screen()
sc.bgcolor("blue")
sc.setup(height=1000, width=1000)
delay = 0.1

# Initialize variables
segments = []
score = 0
high_score = 0
Produksjon

Trinn 3: Lage slangen

En skilpaddegjenstand med kvadratisk form symboliserer slangen. Vi finner pennen i midten av skjermen (goto(0, 100)), setter fargen til svart, og hever den deretter for å unngå å tegne linjer. Opprinnelig satt til "stopp", forblir slangens retning stille til spilleren begynner å bevege den.

# Create the snake
snake = turtle.Turtle()
snake.shape("square")
snake.color("black")
snake.penup()
snake.goto(0, 100)
snake.direction = "stop"
Skaper slange

Trinn 4: Bevegelsesfunksjoner

Vi definerer slangens bevegelsesfunksjoner (move()) i henhold til dens retning i det øyeblikket. Disse funksjonene kontrollerer slangens evne til å bevege seg opp, ned, til venstre og høyre. De beveger hodet til slangen 20 enheter i riktig retning når de blir spurt.

# Functions to move the snake
def move():
    if snake.direction == "up":
        y = snake.ycor()
        snake.sety(y + 20)
    if snake.direction == "down":
        y = snake.ycor()
        snake.sety(y - 20)
    if snake.direction == "left":
        x = snake.xcor()
        snake.setx(x - 20)
    if snake.direction == "right":
        x = snake.xcor()
        snake.setx(x + 20)

Trinn 5: Kontrollere slangen

Ved å bruke sc.listen() og sc.onkey(), konfigurerer vi nøkkellyttere til å kontrollere slangen. De relaterte rutinene (go_up(), go_down(), go_left(), go_right()) endrer slangens retning som svar på tastetrykk på w-, s-, a- eller d-tastaturet.

# Functions to link with the keys
def go_up():
    snake.direction = "up"

def go_down():
    snake.direction = "down"

def go_left():
    snake.direction = "left"

def go_right():
    snake.direction = "right"

# Listen for key inputs
sc.listen()
sc.onkey(go_up, "w")
sc.onkey(go_down, "s")
sc.onkey(go_left, "a")
sc.onkey(go_right, "d")

Trinn 6: Lag maten

Maten er representert av et sirkulært skilpaddeobjekt med rød farge. Opprinnelig plassert ved koordinater (100, 100), fungerer den som målet for slangen å spise. Når slangen kolliderer med maten, "spiser" den maten, og en ny dukker opp på et tilfeldig sted.

# Create the food
food = turtle.Turtle()
food.shape("circle")
food.color("red")
food.penup()
food.goto(100, 100)

Å lage maten

Trinn 7: Vise resultat

Et skilpaddeobjekt (penn) viser spillerens poengsum og den høyeste poengsummen oppnådd. Denne informasjonen oppdateres hver gang slangen spiser maten.

# Create the score display
pen = turtle.Turtle()
pen.penup()
pen.goto(0, 100)
pen.hideturtle()
pen.write("Score: 0  High Score: 0", align="center", font=("Arial", 30, "normal")
Viser poengsum

Trinn 8: Hovedspillsløyfe

Kjernen i Snake-spillet er den primære spillløkken. Den administrerer brukerinndata, oppdaterer skjermen, beveger slangen, ser etter kollisjoner og regulerer hvordan spillet utspiller seg. La oss undersøke de spesifikke funksjonene til hver del av hovedsløyfen mer detaljert:

while True:
    sc.update()  # Update the screen
    move()  # Move the snake
    time.sleep(delay)  # Introduce a slight delay for smooth gameplay
  • sc.update(): oppdaterer skjermen for å gjenspeile eventuelle endringer som er gjort i spillet. Uten dette ville ikke skjermen oppdateres, og spillere ville ikke se slangen bevege seg eller poengoppdateringen.
  • move(): Denne funksjonen kontrollerer slangens bevegelse basert på dens nåværende retning. Den beveger slangens hode med 20 enheter i retningen spesifisert av spillerens input. Slangen beveger seg kontinuerlig i den retningen den sist ble rettet inn til spilleren endrer retning.
  • time.sleep(delay): introduserer en liten forsinkelse mellom hver bevegelse av slangen. De delay variabel er satt til 0.1 i begynnelsen av koden. Hensikten med denne forsinkelsen er å kontrollere hastigheten i spillet. Uten den ville slangen beveget seg for raskt til at spilleren kunne reagere, noe som gjorde spillet vanskelig å spille.

Spise mat og dyrke slangen

    if snake.distance(food) < 20:
        x = random.randint(-200, 200)
        y = random.randint(-200, 200)
        food.penup()
        food.goto(x, y)
        food.pendown()

        # Increase the length of the snake
        new_segment = turtle.Turtle()
        new_segment.shape("square")
        new_segment.color("grey")
        new_segment.penup()
        segments.append(new_segment)
        score += 1

        # Update score and high score
        if score > high_score:
            high_score = score
        pen.clear()
        pen.write("Score: {}  High Score: {}".format(score, high_score), align="center", font=("Arial", 30, "normal"))

Spiser mat

  • Når slangens hode (snake) kommer innenfor en avstand på 20 enheter fra maten (food), betyr det at slangen har "spist" maten.
  • Matens posisjon tilbakestilles deretter til et nytt tilfeldig sted på skjermen ved hjelp av random.randint().
  • Denne handlingen genererer en illusjon av at maten "dukker opp igjen" på forskjellige steder hver gang den spises.

Å dyrke slangekroppen

  • Når slangen spiser maten, legger koden til et nytt segment til slangens kropp for å få den til å vokse.
  • Et nytt skilpaddeobjekt (new_segment) opprettes, som blir en del av segments liste.
  • Denne listen holder styr på alle segmentene som utgjør slangens kropp.
  • Spillerens poengsum økes (score += 1) hver gang slangen spiser mat.

Poengoppdatering

  • Etter å ha spist mat og oppdatert poengsummen, oppdateres poengvisningen ved hjelp av pen gjenstand.
  • De pen.clear() funksjonen sletter forrige resultatvisning.
  • Deretter blir oppdatert poengsum og høy poengsum skrevet til skjermen ved hjelp av pen.write().

Flytte slangens kropp

    for i in range(len(segments) - 1, 0, -1):
        x = segments[i - 1].xcor()
        y = segments[i - 1].ycor()
        segments[i].goto(x, y)

    # Move the first segment to follow the head
    if len(segments) > 0:
        x = snake.xcor()
        y = snake.ycor()
        segments[0].goto(x, y)
  • Denne delen av koden er ansvarlig for å få slangens kropp til å følge hodet.
  • Det itererer gjennom segments liste, fra det siste segmentet (len(segments) - 1) ned til det andre segmentet (0), flytter hvert segment til posisjonen til segmentet foran seg.
  • Dette skaper effekten av at slangens kropp følger hodet mens den beveger seg.

Oppdatering av det første segmentet (hode)

  • Etter å ha flyttet alle kroppssegmentene, oppdateres posisjonen til det første segmentet (hodet) for å matche den nåværende posisjonen til slangen (snake).
  • Dette sikrer at slangens hode fortsetter å lede kroppen mens den beveger seg.

Sluttnotat

Denne koden gir en grunnleggende struktur for et Snake-spill som bruker Turtle-grafikkbiblioteket. Spillet går ut på å kontrollere en slange for å spise mat og vokse lenger samtidig som man unngår kollisjoner med vegger og sin egen hale. Det er et flott nybegynnerprosjekt for å lære om spillutviklingskonsepter, grunnleggende Python-programmering og arbeid med brukerinndata og grafikk. Føl deg fri til å tilpasse og utvide denne koden for å legge til funksjoner som kollisjonsdeteksjon, økende vanskelighetsgrad eller legge til nivåer for å gjøre Snake-spillet ditt enda mer spennende!

Hvis du vil lære mer om python, meld deg på vår gratis python-kurs.

Les også våre flere artikler relatert til python her:

spot_img

VC kafé

LifeSciVC

Siste etterretning

VC kafé

LifeSciVC

spot_img