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:
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
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"
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)
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")
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 til0.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 avsegments
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:
Podcast: Spill i nytt vindu | Last ned
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk deg selv. Tilgang her.
- PlatoAiStream. Web3 Intelligence. Kunnskap forsterket. Tilgang her.
- PlatoESG. Karbon, CleanTech, Energi, Miljø, Solenergi, Avfallshåndtering. Tilgang her.
- PlatoHelse. Bioteknologisk og klinisk etterretning. Tilgang her.
- kilde: https://www.analyticsvidhya.com/blog/2024/03/create-your-first-game-with-python-snake-game/