Bringen Sie Ihren Kindern bei, mit Python ihr eigenes Spiel zu bauen – 2

Da der letzte Teil dieser Serie viele positive Reaktionen erhalten hat, veröffentliche ich diesen zweiten und werde den letzten Teil hoffentlich vor diesem Wochenende veröffentlichen, also bleiben Sie dran!

(Möchten Sie springen und das Endergebnis dieser Lektion sehen? Fühlen Sie sich frei Besuchen Sie das ursprüngliche Repo oder zum Ende springen)

Lassen Sie uns also ohne weiteres an der Stelle abholen, an der wir das letzte Mal abgereist sind.
Das letzte Stück Code, das wir geschrieben haben, ermöglichte es uns, den Hauptplayer zu erstellen und zu verschieben (wir müssen noch sicherstellen, dass er feuert 🔥).
Der Code sieht bisher so aus:


import turtle
pen = turtle.Turtle()

pen.pendown() 
for side in range(3): 
  pen.forward(100)
  pen.right(90)
pen.forward(100)

player = turtle.Turtle()
player.penup()

def moveRight():
    x = player.xcor()
    x += 10
    player.setx(x)

def moveLeft():
    x = player.xcor()
    x -= 10
    player.setx(x)  

def moveForward():unicorn
    print('something')
    y = player.ycor()
    y += 10
    player.sety(y)

def moveBackward():
    y = player.ycor()
    y -= 10
    player.sety(y)

wn = turtle.Screen()
wn.listen()

wn.onkey(moveRight, 'd')
wn.onkey(moveLeft, 'a')
wn.onkey(moveForward, 'w')
wn.onkey(moveBackward, 's')

turtle.done() 
turtle.close() 

Größen, Abmessungen und Reinigung

überprüft
Wenn Sie den Code ab sofort ausführen, zeichnet er in der Mitte des Bildschirms ein kleines Kästchen mit einem kleinen Pfeil (dem Spieler), den Sie bewegen können.
Also ein paar Dinge, die hier zu tun sind:

  • [ ] Zeichne ein größeres Kästchen
  • [ ] Verstecke die Schildkröte, die diese Kiste gezeichnet hat
  • [ ] den Spieler größer machen

Beginnen wir also damit, unsere Box größer zu machen. Erinnerst du dich, wie wir das gezeichnet haben? alles, was wir taten, war, das zu machen 🐢 in vier Richtungen bewegen. Groß! Jetzt wissen wir also, dass wir die Schildkröte nur noch an der richtigen Stelle positionieren müssen, bevor wir sie bewegen (und vielleicht etwas länger laufen lassen?). Die Art und Weise, wie wir jede Schildkröte, die wir mit Python erstellen, positionieren, ist die Verwendung dieser Funktion .setposition(x, y) (intuitiv richtig?).
Um zu verstehen, was x und y eigentlich bedeuten, versuchen wir zuerst, sie zu implementieren und sehen dann weiter. Unmittelbar nach dem Erstellen des Stifts (pen = turtle.Turtle()) und bevor Sie den Stift ablegen (pen.pendown()) werden wir dies schreiben:pen.hideturtle()

border_pen.penup()
border_pen.setposition(-300,300)

Versuchen Sie es auszuführen, was passiert?
Ja, das kleine Kästchen wurde in die linke obere Ecke verschoben! aber warum dort?
Versuchen Sie, die Werte der ersten oder zweiten Zahl in der Funktion zu ändern, führen Sie sie erneut aus und sehen Sie, was passiert.

.setposition(x, y)pen.hideturtle() braucht zwei Argumente. x ist, wie weit rechts oder links (Null ist die Mitte) und y ist, wie weit oben oder unten (auch hier ist Null die Mitte).

Großartig, also beginnen wir jetzt in der linken oberen Ecke und haben eine Schleife, die wir bereits geschrieben haben und die ein Kästchen zeichnet. Alles, was wir tun müssen, ist, die Seiten dieser Box länger zu machen.

for side in range(3): 
  pen.forward(600)
  pen.right(90)
pen.forward(600)

Führen Sie nun den Code aus und überprüfen Sie die Abmessungen des Felds (Sie können es natürlich nach Belieben ändern. Dies ist IHR Spiel 🦄)

Zeichne ein größeres Kästchen ✔

Siehst du immer noch diesen lästigen Pfeil oben links in der Box? Verstecken wir es, bevor wir es vergessen.
Nachdem der Stift seine Arbeit erledigt hat (unter der Schlaufe), fügen wir diese Zeile hinzu

pen.hideturtle()

Yaay, es ist weg 🎆

Zeichne ein größeres Kästchen ✔
Verstecke die Schildkröte, die diese Kiste gezeichnet hat ✔

Jetzt kommen wir zu uns, den Spielern!
Zur Zeit Wir sind ein winziger Pfeil in der Mitte einer riesigen Kiste, die nach Osten fährt.
wir müssen sein ein größeres Waffenschiff, das nach Norden fährt 🚀
Lassen Sie uns einige Änderungen vornehmen. Gehen Sie zuerst zu diesem Bild hierladen Sie es herunter und speichern Sie es direkt neben Ihrer Python-Datei.

Es gibt drei Schritte, um unserer Schildkröte eine Form zu geben:

  • Speichern Sie das Bild
  • Lassen Sie die Schildkröte das Bild in ihrem Speicher registrieren
  • Sagen Sie der Schildkröte, dass sie dem Spieler das registrierte Bild geben soll

Da Sie das Bild gerade gespeichert haben, ist der erste Schritt getan. Jetzt der zweite Schritt.
Schildkröte muss alles wissen, womit sie es zu tun hat. Es hat also einen Befehl, um neue Formen zu registrieren (GERADE WIE UNSER BILD!)
Um unser Bild als Form neu zu erstellen, fügen wir diese Codezeile hinzu, bevor wir mit dem Zeichnen der Box beginnen:

turtle.register_shape("ship.gif")

Notiz, ship.gif ist der Name der Datei, die Sie gerade gespeichert haben. Wenn Sie also Ihr eigenes Schiff aus dem Internet herunterladen möchten, stellen Sie sicher, dass Sie entweder seinen Namen ändern oder den Code in seinen Namen ändern.

Das Letzte, was Sie tun müssen, ist, es der Schildkröte zu sagen heyy, this shape is for player.

unter player = turtle.Turtle() hinzufügen:

player.shape('sh or change the code to its name.

Das Letzte, was Sie tun müssen, ist, es der Schildkröte zu sagen heyy, this shape is for player.

unter player = turtle.Turtle() hinzufügen:

player.shape('ship.gif')

LAUFEN SIE UND SEHEN SIE, WIE GROSSARTIG ES SICH ANFÜHLT, EIN RAUMSCHIFF ZU FAHREN 🚀 🚀

Jetzt, wo wir im Feld sind, fangen wir an, Feinde herbeizurufen.
Lassen Sie uns zuerst darüber nachdenken. Ein Feind ist im Grunde ein neues Schildkrötenobjekt auf dem Bildschirm. Angenommen, wir wollen 5 Feinde haben, wir erstellen 5 Schildkrötenobjekte und geben ihnen eine Position (sicher, später werden sie mehr tun, als nur dort zu stehen!). Da wir Schleifen bereits kennen, werde ich Listen einführen, um unseren Entwicklungsprozess zu vereinfachen.

Listen und anhängende Feinde

Eine Liste ist im Grunde ein Container. Sie können es sich als Federmäppchen für Ihre Bleistifte und Kugelschreiber vorstellen. ein Schrank für Ihre Kleidung oder ein Behälter für Ihre Schildkröten 😄

Verwenden wir eine Schleife (wie die, mit der wir die Arenabox erstellt haben), um eine Liste mit 10 unserer Feinde zu erstellen (wiederum ist ein Feind eine Schildkröte).

enemies = []
for i in range(10):
    enemies.append(turtle.Turtle())

Sicher genug, wenn Sie die Zahl in der Reichweite ändern, ändert sich die Anzahl unserer Feinde.
Jetzt haben wir unsere Feinde gespeichert, aber nicht auf dem Bildschirm angezeigt. Lassen Sie uns eine weitere Schleife erstellen, um alle Feinde in der Liste durchzugehen und sie irgendwo auf dem Bildschirm zu platzieren. Warte ab, irgendwo auf dem Bildschirm? das heißt, wir wissen nicht einmal genau wo!
Ja das stimmt. Wir werden Python bitten, eine Zufallszahl aus einem von uns gewählten Bereich auszuwählen. Und erinnern Sie sich an das X- und Y-System? Wir müssen Python sagen, dass er jeder Schildkröte einen zufälligen geben soll y und eine zufällige x Wert. Zum Glück hat Python etwas bereit, das uns hilft, bei jeder Ausführung des Codes Zufallszahlen auszuwählen. Es ist ein Paket namens randomund eine bestimmte Funktion in diesem Paket wird aufgerufen randint

Lassen Sie uns das Paket nach dem Importieren von Turtle in einer neuen Zeile importieren.

from random import randint

Jetzt können wir es verwenden. Unterhalb der Schleife, die die Feinde in der Liste erstellt hat, schreiben wir diese Schleife:

for enemy in enemies:
    x = randint(-300, 300)
    y = randint(0, 300)
    enemy.setposition(x, y)

Was hier passiert, ist im Grunde, Python eine Zufallszahl für x (eine Zahl zwischen -300 und 300) und eine Zufallszahl für y (eine Zahl zwischen 0 und 300) wählen zu lassen und dann dem Feind zu sagen, er solle zu dieser zufälligen Position gehen . Der Grund, warum x zwischen -300 und 300 liegt, ist, dass es in die von uns erstellte Box passt, in der das ganze Spiel stattfinden soll. Aber warum liegt y nur zwischen 0 und 300? Nun, das liegt daran, dass wir nicht wollen, dass es sehr nahe an unserem Standort ist, da die Idee darin besteht, dass sie auf uns zulaufen, um anzugreifen (Ja, das werden wir auch tun 🔥).
Wenn Sie nun den Code ausführen, sieht das Ergebnis so aus:

Spielbild

Es stellte sich heraus, dass Python den Feind zuerst in die Mitte des Bildschirms stellt und ihn dann dorthin schickt, wohin Sie ihn schicken. Was zu diesen Zeilen führt, wenn Sie sich erinnern, dass wir zuvor gesagt haben, dass Schildkröten wie Stifte auf Papier sind. Um uns zu bewegen, müssen wir den Stift vom Papier nehmen, bevor wir ihn bewegen. Fügen wir also auch diese Zeile hinzu.

for enemy in enemies:
    x = randint(-300, 300)
    y = randint(0, 300)
    enemy.penup()
    enemy.setposition(x, y)

woww es fängt an gruselig auszusehen 👽
Machen wir es noch schlimmer, indem wir diesen Feinden die richtige Form geben.
Zuerst gehen hier, laden Sie das Bild der Eindringlinge herunter und speichern Sie es neben der anderen Bild-/Python-Datei. Dann lass uns weitermachen und das Bild registrieren und es den Feinden zuweisen.

turtle.register_shape("ship.gif")
turtle.register_shape("invador.gif")
for enemy in enemies:
    x = randint(-300, 300)
    y = randint(0, 300)
    enemy.penup()
    enemy.setposition(x, y)
    enemy.shape('invador.gif')

Sieht gut aus?
Eine letzte Sache, da wir uns bereits mit Bildern befassen, fügen wir dem ganzen Spiel ein Hintergrundbild hinzu. gehen hier und lade es herunter.

turtle.register_shape("bg.gif")

Gehen wir dann unten zu der Bildschirmvariable, die wir beim letzten Mal erstellt haben, und weisen Sie ihr ein Hintergrundbild zu.

wn = turtle.Screen()
wn.bgpic("bg.gif")

Wenn etwas schief gelaufen ist, sieht der endgültige Code so aus:
(das sieht man auch Repo für eine Commit-Historie)


import turtle

from random import randint

pen = turtle.Turtle()

turtle.register_shape("ship.gif")
turtle.register_shape("invador.gif")

pen.penup()
pen.setposition(-300,300)
pen.pendown() 
for side in range(3): 
  pen.forward(600)
  pen.right(90)
pen.forward(600)
pen.hideturtle()

player = turtle.Turtle()
player.shape('ship.gif')
player.penup()

enemies = []
for i in range(10):
    enemies.append(turtle.Turtle())

for enemy in enemies:
    x = randint(-300, 300)
    y = randint(0, 300)
    enemy.penup()
    enemy.setposition(x, y)
    enemy.shape('invador.gif')

def moveRight():
    x = player.xcor()
    x += 10
    player.setx(x)



def moveLeft():
    x = player.xcor()
    x -= 10
    player.setx(x)  

def moveForward():
    print('something')
    y = player.ycor()
    y += 10
    player.sety(y)

def moveBackward():
    y = player.ycor()
    y -= 10
    player.sety(y)

wn = turtle.Screen()
wn.listen()

wn.onkey(moveRight, 'd')
wn.onkey(moveLeft, 'a')
wn.onkey(moveForward, 'w')
wn.onkey(moveBackward, 's')

wn.bgpic("bg.gif")

turtle.done() 
turtle.close() 

DAS SIEHT WIRKLICH GUT AUS 🔥 🔥
Nächste Lektion, der Krieg soll beginnen! 👽

Ich bin auf einer lebenslangen Mission, um das allgemeine Wissen der Entwicklergemeinschaft so weit wie möglich zu unterstützen und dazu beizutragen. Einige meiner Schriften mögen zu albern oder zu schwierig klingen, aber kein Wissen ist jemals nutzlos. Ich fordere Sie auf, dasselbe zu tun und zu versuchen, es Ihrer Gemeinde auf Ihre eigene Weise zurückzuzahlen.
😄 ❤

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *