Zephyrnet-logotyp

Skapa ditt första spel med Python: Snake Game

Datum:

Python är både roligt och enkelt att använda. Med ett brett utbud av tillgängliga bibliotek, Python gör våra liv enklare genom att förenkla skapandet av spel och applikationer. I den här artikeln kommer vi att skapa ett klassiskt spel som många av oss förmodligen har spelat någon gång i livet – ormspelet. Om du inte har upplevt det här spelet förut, har du nu chansen att utforska och skapa din alldeles egna version utan att behöva installera tunga bibliotek på ditt system. Allt du behöver för att komma igång med att göra detta nostalgiska ormspel är en grundläggande förståelse för Python och en onlinekodningsredigerare som repl.it.

Ormspelet är en tidlös arkadklassiker där spelaren styr en orm som växer i längd när den konsumerar mat. Låt oss i den här implementeringen dela upp koden för att förstå hur spelet är uppbyggt och hur Turtle-biblioteket används för grafik och användarinteraktion.

Innehållsförteckning

Använda Turtle Graphics för enkel spelutveckling

Sköldpaddans grafik bibliotek i Python ger ett roligt och interaktivt sätt att skapa former, rita på skärmen och svara på användarinput. Det används ofta i utbildningssyfte och lär ut programmeringskoncept genom visuell feedback. Den här koden använder Turtle för att skapa spelelementen som ormen, maten och poängvisningen.

Onlinekodningsredigerare: Repl.it

En webbkodningsplattform som heter Repl.it låter dig utveckla, köra och samarbeta om kod direkt i din webbläsare. Den stöder många olika programmeringsspråk och har inbyggda kompilatorer och tolkar förutom funktioner som koddelning, versionskontroll och lagarbete. Utvecklare använder det i stor utsträckning för lärande, snabb prototypframställning och koddelning eftersom det är enkelt att använda och kräver ingen installation.

Algoritm

Låt oss börja bygga vårt första spel med python. För att göra det måste vi följa vissa steg nedan:

Skapa repl-fil

Steg 1: Installera nödvändiga bibliotek

Detta markerar det första steget i att utveckla spelet som kallas Snake. Turtle, random och tid är bland dessa.

  • Sköldpadda: Vi behöver det här biblioteket för att skapa grafiken i vårt spel. Vi kan manipulera matens och ormens rörelser på skärmen och rita dem.
  • Slumpmässig: För att skapa slumpmässiga platser för maten på skärmen använder vi det slumpmässiga biblioteket. Detta säkerställer att varje gång maten äts visas den på en annan plats.
  • Tid: Ormen rör sig med en liten fördröjning mellan varje rörelse tack vare tidsbiblioteket. Detta gör spelet lättare att använda och roligare för spelare.
import turtle
import time
import random

Steg 2: Konfigurera spelmiljön.

Detta inkluderar att fastställa skärmens dimensioner, lägga till en blå bakgrund och lägga till en liten fördröjning för att säkerställa ett flytande spel. Vi ställer också in variabler som high_score för att behålla den högsta poängen som uppnåtts, poäng för att övervaka spelarens poäng och segment för att spåra ormens 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
Produktion

Steg 3: Skapa ormen

Ett sköldpaddsobjekt med kvadratisk form symboliserar ormen. Vi placerar pennan i mitten av skärmen (goto(0, 100)), ställer in dess färg på svart och höjer den sedan för att undvika att rita linjer. Ursprungligen inställd på "stopp", ormens riktning förblir stillastående tills spelaren börjar flytta den.

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

Steg 4: Rörelsefunktioner

Vi definierar ormens rörelsefunktioner (move()) enligt dess riktning i det ögonblicket. Dessa funktioner styr ormens förmåga att röra sig upp, ner, vänster och höger. De flyttar huvudet på ormen 20 enheter i rätt riktning när de tillfrågas.

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

Steg 5: Styra ormen

Genom att använda sc.listen() och sc.onkey() konfigurerar vi nyckellyssnare för att styra ormen. De relaterade rutinerna (go_up(), go_down(), go_left(), go_right()) ändrar ormens riktning som svar på tangenttryckningar på tangentbordet w, s, a eller d.

# 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")

Steg 6: Skapa maten

Maten representeras av ett cirkulärt sköldpaddsobjekt med en röd färg. Ursprungligen placerad vid koordinater (100, 100), fungerar den som mål för ormen att äta. När ormen kolliderar med maten "äter" den upp maten och en ny dyker upp på en slumpmässig plats.

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

Att skapa maten

Steg 7: Visa poäng

Ett sköldpaddsobjekt (penna) visar spelarens poäng och den högsta poäng som uppnåtts. Denna information uppdateras varje gång ormen äter 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")
Visar poäng

Steg 8: Huvudspelslinga

Kärnan i Snake-spelet är den primära spelslingan. Den hanterar användarinmatning, uppdaterar skärmen, flyttar ormen, letar efter kollisioner och reglerar hur spelet utspelar sig. Låt oss undersöka de specifika funktionerna för varje sektion av huvudslingan mer i detalj:

while True:
    sc.update()  # Update the screen
    move()  # Move the snake
    time.sleep(delay)  # Introduce a slight delay for smooth gameplay
  • sc.update(): uppdaterar skärmen för att återspegla alla ändringar som gjorts i spelet. Utan detta skulle skärmen inte uppdateras, och spelarna skulle inte se ormen röra sig eller poänguppdateringen.
  • move(): Denna funktion styr ormens rörelse baserat på dess nuvarande riktning. Den flyttar ormens huvud med 20 enheter i den riktning som anges av spelarens inmatning. Ormen rör sig kontinuerligt i den riktning den senast riktades tills spelaren ändrar riktning.
  • time.sleep(delay): introducerar en liten fördröjning mellan varje rörelse av ormen. De delay variabeln är inställd på 0.1 i början av koden. Syftet med denna fördröjning är att kontrollera hastigheten i spelet. Utan den skulle ormen röra sig för snabbt för att spelaren skulle kunna reagera, vilket gör spelet svårt att spela.

Äta mat och odla ormen

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

Äter mat

  • När ormens huvud (snake) kommer inom ett avstånd av 20 enheter från maten (food), betyder det att ormen har "ätit" maten.
  • Matens position återställs sedan till en ny slumpmässig plats på skärmen med hjälp av random.randint().
  • Denna åtgärd skapar en illusion av att maten "uppstår igen" på olika ställen varje gång den äts.

Att odla ormens kropp

  • När ormen äter maten lägger koden till ett nytt segment till ormens kropp för att få den att växa.
  • Ett nytt sköldpaddsobjekt (new_segment) skapas, vilket blir en del av segments lista.
  • Denna lista håller reda på alla segment som utgör ormens kropp.
  • Spelarens poäng ökar (score += 1) varje gång ormen äter mat.

Uppdatering av poäng

  • Efter att ha ätit mat och uppdaterat poängen uppdateras poängvisningen med hjälp av pen objekt.
  • Smakämnen pen.clear() funktionen rensar föregående resultatvisning.
  • Sedan skrivs den uppdaterade poängen och högsta poängen till skärmen med hjälp av pen.write().

Flytta ormens 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)
  • Denna kodavsnitt är ansvarig för att få ormens kropp att följa dess huvud.
  • Det itererar genom segments lista, med början från det sista segmentet (len(segments) - 1) ner till det andra segmentet (0), flytta varje segment till positionen för segmentet framför sig.
  • Detta skapar effekten av att ormens kropp följer huvudet när den rör sig.

Uppdatera det första segmentet (huvud)

  • Efter att ha flyttat alla kroppssegment uppdateras positionen för det första segmentet (huvudet) för att matcha ormens nuvarande position (snake).
  • Detta säkerställer att ormens huvud fortsätter att leda kroppen när den rör sig.

Slutanmärkning

Den här koden ger en grundläggande struktur för ett Snake-spel som använder Turtle-grafikbiblioteket. Spelet går ut på att kontrollera en orm för att äta mat och växa längre samtidigt som man undviker kollisioner med väggar och sin egen svans. Det är ett bra nybörjarprojekt för att lära sig om spelutvecklingskoncept, grundläggande Python-programmering och arbeta med användarinmatning och grafik. Känn dig fri att anpassa och utöka den här koden för att lägga till funktioner som kollisionsdetektering, ökande svårighetsgrad eller lägga till nivåer för att göra ditt Snake-spel ännu mer spännande!

Om du vill lära dig mer om python, registrera dig för vår gratis python-kurs.

Läs även våra fler artiklar relaterade till python här:

plats_img

Senaste intelligens

plats_img