Tkinter App, Turtle ein JPG Skin zuweisen

Fragen zu Tkinter.
Freddyyy
User
Beiträge: 69
Registriert: Donnerstag 26. April 2018, 17:50

@ blackjack und deswegen soll ich get(x,y) verwenden?
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Freddyyy

Hier noch der Zaubertrick für die Umwandlung der Turtle-Position in die Bild-Position für die Abfrage der Pixelwerte des Bildes:

Code: Alles auswählen

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) 
Gruss wuf ;-)
Take it easy Mates!
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Freddyyy

Hier noch als Ergänzung die Bestimmung der XY-Offsetwerte:

Code: Alles auswählen

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
Gruss wuf ;-)
Take it easy Mates!
Freddyyy
User
Beiträge: 69
Registriert: Donnerstag 26. April 2018, 17:50

Ok Danke :D Funktioniert jetzt. Habe nochmal das Bild angepasst da viel zu wenig wege vorhanden waren.
Ich kann aber goto() nicht verwenden. Also wenn ich bzw turtle.goto(-500, 500) eingebe bewegt sich die Turtle kein Stück.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Freddyyy

Bei mir wird die Turtle in der linken oberen Ecke platziert. Um die Ursache des Fehlverhalten bei dir herauszufinden müsste man schon dein Skript sehen.

Gruss wuf ;-)
Take it easy Mates!
Freddyyy
User
Beiträge: 69
Registriert: Donnerstag 26. April 2018, 17:50

Code: Alles auswählen

import turtle
from turtle import register_shape, Shape
import tkinter as tk
from PIL import Image, ImageTk
NORTH = 90
SOUTH = 270
EAST = 0
WEST = 180
MOVE_STEP = 10
ANGLE_STEP = 90



def forward():
    turtle.setheading(90)

def backward():
    turtle.setheading(270)

def left():
    turtle.setheading(180)

def right():
    turtle.setheading(0)




screen = turtle.Screen()



#img = ImageTk.PhotoImage(Image.open("Turtle.png"))
#register_shape("Bild", Shape("image", img))
# turtle.shape("Bild")

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

turtle.penup()
turtle.speed(0)
turtle.goto(-500, 500)
turtle.setheading(EAST)
turtle.showturtle()

# Keyboard actions
screen.listen()
screen.onkey(forward, "w")
screen.onkey(backward, "s")
screen.onkey(left, "a")
screen.onkey(right, "d")
screen.onkey(coordinates, "c")

fd = 1
x = turtle.xcor()
y = turtle.ycor()
ende = False
while not ende:
    
    turtle.forward(fd)
    border_check()
    

screen.listen()
turtle.mainloop()

 #0.0 203.0
 #999.0 0.0
    #turtle.forward(fd)
    #x = turtle.xcor()#+500
    #y = turtle.ycor()#+500
    
    #a = bg_image.get(x, y)
    #if a == (0, 0, 0, 255):
        #print("Schwarz")
    #else:
        #print("weiß")
    #if a == (0, 0, 0, 0) or a == (0, 0, 0, 255):
        #turtle.goto(0, 0)
    #print(a)
Hier der Code. Wenn ich der Turtle einen Shape geben will dann funktioniert das übrigesn auch nicht. Aber das ist ja eig. unwichtig.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Freddyyy

Also bei mir bewegt sich die Turtle rasend Richtung Osten gegen die Mauer. Springt dann wieder auf ihre Ausgangsposition (0,0) zurück. Dies unter Ubuntu 18.04 & Windows 10. Jetzt verstehe ich nicht genau was bei dir das Problem ist? Kannst du uns bitte etwas über den Bedienungsablauf der Turtle verraten?

Gruss wuf ;-)
Take it easy Mates!
Freddyyy
User
Beiträge: 69
Registriert: Donnerstag 26. April 2018, 17:50

Ich würde gerne mit der Turtle von eienm anderen Punkt aus starten. Habe mein Labyrinth nochmal mit gimp verändertt und möchte jetzt von -500, 500 starten und auch ein Ziel setzen. Das funktioniert abe rwie du denek ich im Code gesheen hast nicht.

Code: Alles auswählen

turtle.penup()
turtle.speed(0)
turtle.goto(-500, 500)
turtle.setheading(EAST)
turtle.showturtle()
Liegt das vllt an deiner Erweiterung?
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Freddyyy

Irgendwie willst du mir nicht erklären wie schlussendlich die Bedienung deines Spieles abläuft. Ich schaue hier bei mir in die Glaskugel und versuche herauszufinden was du eigentlich willst!

Für die Bedienung des Headings brauchts du folgende Tastaturtasten:
Taste a: Dreht Turtle Richtung Westen
Taste d: Dreht Turtle Richtung Osten
Taste w Dreht Turtle Richtung Norden
Taste s: Dreht Turtle Richtung Süden

Der Code fürs Heading

Code: Alles auswählen

def nord():
    turtle.setheading(NORTH)

def south():
    turtle.setheading(SOUTH)
    
def west():
    turtle.setheading(WEST)

def east():
    turtle.setheading(EAST)
Für die Bewegung habe ich einmal die Tasten rechts <- & links -> eingesetzt:
Taste <-: Turtle bewegt sich rückwärts
Taste ->: Turtle bewegt sich vorwärts

Der Code für die Bewegung:

Code: Alles auswählen

def forward():
    turtle.forward(MOVE_STEP)
def backward():
    turtle.backward(MOVE_STEP)
Der Code für die Auslesung des Pixelfarbwertes aus dem Hintergrundbild:
Taste c: Liest Pixelfarbwert und gibt in ins Terminal aus

Meine Frage was soll dieser Code in deinem Skript? (Dieser verhindert das die Turtle auf position (-500/500) gesetzt wird!)

Code: Alles auswählen

fd = 1
x = turtle.xcor()
y = turtle.ycor()
ende = False
while not ende:
    
    turtle.forward(fd)
    border_check()
WICHTIG: Du muss uns offenbaren wie die endgültige Bedienung deines Spieles abläuft sonst kann ich dir leider aus Zeitaufwands-Günden nicht mehr weiterhelfen!

Hier noch der modifizierte Code deines Skriptes:

Code: Alles auswählen

import turtle
from turtle import register_shape, Shape
import tkinter as tk
from PIL import Image, ImageTk

NORTH = 90
SOUTH = 270
EAST = 0
WEST = 180
MOVE_STEP = 10
ANGLE_STEP = 90



def forward():
    turtle.forward(MOVE_STEP)
    
def backward():
    turtle.backward(MOVE_STEP)

def nord():
    turtle.setheading(NORTH)

def south():
    turtle.setheading(SOUTH)
    
def west():
    turtle.setheading(WEST)

def east():
    turtle.setheading(EAST)

screen = turtle.Screen()

#img = ImageTk.PhotoImage(Image.open("Turtle.png"))
#register_shape("Bild", Shape("image", img))
# turtle.shape("Bild")

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

turtle.penup()
turtle.speed(0)
turtle.goto(0, 0)
#turtle.goto(-500, 500)
turtle.setheading(EAST)
turtle.showturtle()

# Keyboard actions
#screen.listen()
#screen.onkey(forward, "w")
#screen.onkey(backward, "s")
#screen.onkey(left, "a")
#screen.onkey(right, "d")
#screen.onkey(coordinates, "c")

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

#fd = 1
#x = turtle.xcor()
#y = turtle.ycor()
#ende = False
#while not ende:
    
    #turtle.forward(fd)
    #border_check()
    

screen.listen()
turtle.mainloop()

 #0.0 203.0
 #999.0 0.0
    #turtle.forward(fd)
    #x = turtle.xcor()#+500
    #y = turtle.ycor()#+500
    
    #a = bg_image.get(x, y)
    #if a == (0, 0, 0, 255):
        #print("Schwarz")
    #else:
        #print("weiß")
    #if a == (0, 0, 0, 0) or a == (0, 0, 0, 255):
        #turtle.goto(0, 0)
    #print(a)
Gruss wuf ;-)
Take it easy Mates!
Freddyyy
User
Beiträge: 69
Registriert: Donnerstag 26. April 2018, 17:50

Die Turtle soll sich in eienr Schleife Permanent in die Richtung, in die Sie ausgerichtet ist bewegen. Sie soll aber nicht in der Mitte, sondern links obene starten.
Dazu muss ich noch einene Punkt/Quadrat auswählen die Turtle erreichen muss um das Programm abzuschließen der dann auch spezifisch mit Gimp markiert wird.
Inwiefern blockiert "while not ende:" die funktion goto()? Welche schleife kann ich denn verwenden ohne das "goto()" blockiert wird?
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Freddyyy

Hier das modifizierte Skript. Habe die Turtle auf Koordinate (0,0) gesetzt. Weil die Koordinate (-500,500) setzt die Turtle in die obere linke Ecke in einen schwer überblickbaren schwarzen Bereich deines Hintergrundbildes. Kannst du selber für deine Versuche auf diese Koordinate setzen. Bei folgenden Skript siehst du wie sich die Turtle schrittweise von Koordinate (0,0) Richtung Osten bewegt. Du kannst deren Bewegungsrichtung mit den von dir definierten Taste (a,d,w,s) jederzeit verändern.

Code: Alles auswählen

import turtle
from turtle import register_shape, Shape
import tkinter as tk
from PIL import Image, ImageTk

NORTH = 90
SOUTH = 270
EAST = 0
WEST = 180
MOVE_STEP = 10
ANGLE_STEP = 90



def forward():
    turtle.forward(MOVE_STEP)
    
def backward():
    turtle.backward(MOVE_STEP)

def nord():
    turtle.setheading(NORTH)

def south():
    turtle.setheading(SOUTH)
    
def west():
    turtle.setheading(WEST)

def east():
    turtle.setheading(EAST)

screen = turtle.Screen()

#img = ImageTk.PhotoImage(Image.open("Turtle.png"))
#register_shape("Bild", Shape("image", img))
# turtle.shape("Bild")

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)
    
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():
    print('Hi')
    forward()
    canvas.after(500, turtle_automove_forward)   


turtle.penup()
turtle.speed(0)
turtle.goto(0, 0)
#turtle.goto(-500, 500)
turtle.setheading(EAST)
turtle.showturtle()

# Keyboard actions
#screen.listen()
#screen.onkey(forward, "w")
#screen.onkey(backward, "s")
#screen.onkey(left, "a")
#screen.onkey(right, "d")
#screen.onkey(coordinates, "c")

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

#fd = 1
#x = turtle.xcor()
#y = turtle.ycor()
#ende = True
#while not ende:
    #forward()
    ##border_check()
turtle_automove_forward()
    
screen.listen()
turtle.mainloop()

 #0.0 203.0
 #999.0 0.0
    #turtle.forward(fd)
    #x = turtle.xcor()#+500
    #y = turtle.ycor()#+500
    
    #a = bg_image.get(x, y)
    #if a == (0, 0, 0, 255):
        #print("Schwarz")
    #else:
        #print("weiß")
    #if a == (0, 0, 0, 0) or a == (0, 0, 0, 255):
        #turtle.goto(0, 0)
    #print(a)
Dies ist meine Variante um die Turtle zu bewegen. Das Turtle-Modul stellt die Methode speed() zur Verfügung. Möcht mich aber nicht weiter in das Turtle-Modul einarbeiten. Ich persönlich hätte das Ganze einfacher mit Tkinter gelöst.

Gruss wuf ;-)
Take it easy Mates!
Freddyyy
User
Beiträge: 69
Registriert: Donnerstag 26. April 2018, 17:50

Ok Danke aber hier funbktioniert border_check nicht. Vllt kann ich das ja auch "einfacher" mit Tkinter lösen. Da gibt es bestimmt auch schleifen. Funktionieren die da auc hso wie bei Turtle? Also gibt es da eine Vergleichbare mit "while"?
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Freddyyy
Ok Danke aber hier funbktioniert border_check nicht.
Diese kleine Erweiterung löst es: :roll:

Code: Alles auswählen

def turtle_automove_forward():
    forward()
    border_check()
    canvas.after(500, turtle_automove_forward)
Gruss wuf ;-)
Take it easy Mates!
Freddyyy
User
Beiträge: 69
Registriert: Donnerstag 26. April 2018, 17:50

Ich habe das jetzt mit der "while" schleife gemacht. Dazu habe ich eienen Endpunkt eingebaut mit den Farbwerten (0, 255, 18). "border_check()" erkennt auch diese werte doch ich kann die Schleife nicht enden lassen.

Code: Alles auswählen

import turtle
from turtle import register_shape, Shape
import tkinter as tk
from PIL import Image, ImageTk

def up():
    turtle.setheading(90)

def down():
    turtle.setheading(270)

def left():
    turtle.setheading(180)

def right():
    turtle.setheading(0)

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)
fd = 1
ende = False
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(-499, 499)
        down()
    if pixel_color == (0, 255, 18):
        ende = True
        



turtle.pu()
turtle.goto(-499, 499)
down()



# Keyboard actions
screen.listen()
screen.onkey(up, "w")
screen.onkey(down, "s")
screen.onkey(left, "a")
screen.onkey(right, "d")



while not ende:
    turtle.forward(fd)
    border_check()
    
    
Hier habe ich dier mein Bild nochmal verlinkt damit du verstehst was ich meiene: https://picload.org/view/dowodaii/labyrinth.png.html

LG Freddy

PS: So funktioniert das noch nicht da man am Rand entlang laufen kann, denn muss ich noch shwarz machen und die Startposition verändern.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Freddyyy: Das `ende` in `border_check()` ist ein lokaler Name in der Funktion der nichts mit dem `ende` auf Modulebene zu tun hat. Du solltest `ende` einfach komplett weg lassen und aus `border_check()` eine Funktion mit Rückgabewert machen, dann kannst Du die ``while``-Schleife so schreiben:

Code: Alles auswählen

while not border_check():
    turtle.forward(fd)
Wobei ich der Funktion einen besseren Namen geben würde an dem man an der Stelle wo sie aufgerufen wird, erkennen kann was der Rückgabewert bedeutet. `has_reached_exit()` beispielsweise.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Freddyyy
User
Beiträge: 69
Registriert: Donnerstag 26. April 2018, 17:50

Wenn ich "ende" durch "global ende" ersetze erhalte ich immer einen Syntax error. Wie kann ich denn in der Definition schreiben, das falls die Turtle auf eiene Grünene Punkt trifft die Definition aufhört?
Freddyyy
User
Beiträge: 69
Registriert: Donnerstag 26. April 2018, 17:50

Dumme Frage, Problem gelöst danke :D
Freddyyy
User
Beiträge: 69
Registriert: Donnerstag 26. April 2018, 17:50

Zuguterletzt sollte ich noch der Turtle einen anderen Shape verpassen. Ist das bei Tkinter überhaupt möglich? Denn immer wennic hder Turtle eienne Shape verpasse wird sie unsichtbar. Egal welche Farbe.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

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:

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()
Gruss wuf ;-)
Take it easy Mates!
Freddyyy
User
Beiträge: 69
Registriert: Donnerstag 26. April 2018, 17:50

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.
Antworten