Tkinter App, Turtle ein JPG Skin zuweisen
Hi Freddyyy
Die Turtle ist eigentlich eine Figur die aus Polygon Linien besteht. Möchtest du also eine andere Turtle Figur die sich drehen lässt müsstest du die neue Figur auch mittels Polygon Linien erstellen. Willst du aber die Turtle Figur durch ein Bild ersetzen musst du für jede Richtung ein Bild zur Verfügung haben da sich ein einzelnes Bild nicht drehen lässt. Im folgenden Skript sind hierfür die Bilddateien:
turtle_east.gif,
turtle_north.gif,
turtle_west.gif und
turtle_south.gif
eingesetzt.
Die border_check() Funktion wird bei jedem Schritt in Vorwärtsrichtung aufgerufen um zu kontrollieren ob sich die Turtle auf einem schwarzen Bereich befinde. Ist dies der Fall springt die Turtle einen Schritt zurück. Nun liegt es am Spieler die Bewegungsrichtung der Turtle mittels den Tasten a, d, w, s zu ändern!
Hier das modifizierte Skript:Gruss wuf
Die Turtle ist eigentlich eine Figur die aus Polygon Linien besteht. Möchtest du also eine andere Turtle Figur die sich drehen lässt müsstest du die neue Figur auch mittels Polygon Linien erstellen. Willst du aber die Turtle Figur durch ein Bild ersetzen musst du für jede Richtung ein Bild zur Verfügung haben da sich ein einzelnes Bild nicht drehen lässt. Im folgenden Skript sind hierfür die Bilddateien:
turtle_east.gif,
turtle_north.gif,
turtle_west.gif und
turtle_south.gif
eingesetzt.
Die border_check() Funktion wird bei jedem Schritt in Vorwärtsrichtung aufgerufen um zu kontrollieren ob sich die Turtle auf einem schwarzen Bereich befinde. Ist dies der Fall springt die Turtle einen Schritt zurück. Nun liegt es am Spieler die Bewegungsrichtung der Turtle mittels den Tasten a, d, w, s zu ändern!
Hier das modifizierte Skript:
Code: Alles auswählen
import turtle
import tkinter as tk
NORTH = 90
SOUTH = 270
EAST = 0
WEST = 180
MOVE_STEP = 10
ANGLE_STEP = 90
MOVE_STEP_TIME = 500 # Milliseconds
def forward():
turtle.forward(MOVE_STEP)
border_touch = border_check()
if border_touch:
backward()
def backward():
turtle.backward(MOVE_STEP)
def nord():
turtle.shape("turtle_north.gif")
turtle.setheading(NORTH)
def south():
turtle.shape("turtle_south.gif")
turtle.setheading(SOUTH)
def west():
turtle.shape("turtle_west.gif")
turtle.setheading(WEST)
def east():
turtle.shape("turtle_east.gif")
turtle.setheading(EAST)
screen = turtle.Screen()
bg_image = tk.PhotoImage(file="labyrinth.png")
bg_image_width = bg_image.width()
bg_image_height = bg_image.height()
bg_image = tk.PhotoImage(file="labyrinth.png")
bg_image_width = bg_image.width()
bg_width_offset = bg_image_width / 2
bg_image_height = bg_image.height()
bg_height_offset = bg_image_height / 2
screen.setup(bg_image_width, bg_image_height)
canvas = screen.getcanvas()
canvas.create_image(0, 0, image=bg_image)
def border_check():
xpos, ypos = turtle.position()
bg_img_xpos = int(xpos + bg_width_offset)
bg_img_ypos = int(bg_image_height - bg_width_offset - ypos)
#print("Border Check:", bg_img_xpos, bg_img_ypos)
pixel_color = bg_image.get(bg_img_xpos, bg_img_ypos)
#print("Farbe:", pixel_color)
if pixel_color == (0, 0, 0):
#turtle.goto(0, 0)
border_touch = True
return border_touch
else:
border_touch = False
return border_touch
def coordinates():
xpos, ypos = turtle.position()
bg_img_xpos = int(xpos + bg_width_offset)
bg_img_ypos = int(bg_image_height - bg_width_offset - ypos)
pixel_color = bg_image.get(bg_img_xpos, bg_img_ypos)
print("Farbe:", pixel_color)
def turtle_automove_forward():
forward()
canvas.after(MOVE_STEP_TIME, turtle_automove_forward)
screen.register_shape("turtle_east.gif")
screen.register_shape("turtle_north.gif")
screen.register_shape("turtle_west.gif")
screen.register_shape("turtle_south.gif")
turtle.shape("turtle_east.gif")
turtle.penup()
turtle.speed(0)
turtle.goto(0, 0)
#turtle.goto(-500, 500)
turtle.setheading(EAST)
screen.listen()
# Tastatureingabe für die Richtung
screen.onkey(nord, "w")
screen.onkey(south, "s")
screen.onkey(west, "a")
screen.onkey(east, "d")
screen.onkey(coordinates, "c")
# Tastatureingabe für die Bewegung
screen.onkey(forward, "Right")
screen.onkey(backward, "Left")
turtle_automove_forward()
screen.listen()
turtle.mainloop()
Take it easy Mates!
Wie kann ich denn die Shapes in Zusammenhang der While schleife verwenden? Es sieht so aus als würde das Bild die Shapes übedecken. Kann ich die Bilder vllt als Polygon Linien Abspeichern? Also .gif umwandeln in das richgtige format.