Ich habe Probleme, zwei Funktionen gleichzeitig auszuführenPython

Python-Programme
Guest
 Ich habe Probleme, zwei Funktionen gleichzeitig auszuführen

Post by Guest »

Ich bin ein Programmieranfänger, der gerade erst mit Python Turtle angefangen hat. Ich habe kürzlich an einem Projekt gearbeitet, bei dem man zwei Charaktere steuert. Sie versuchen, sich über einem Fluss gegenseitig zu erschießen. Aber ich bin auf einen Fehler gestoßen, bei dem immer dann, wenn eine Seite eine Kugel abfeuert und die andere es auch tut, die erste Kugel einfach an Ort und Stelle einfriert, bis die erste fertig ist. Das ruiniert das ganze Spiel. Ich habe andere Beiträge mit diesem „if name = main“-Ding gesehen, aber ich verstehe es nicht.
Ich habe herausgefunden, dass dies daran liegt, dass eine Funktion aufgerufen wird während ein anderer noch läuft. Ich habe es mit Multithreading versucht, aber es hat nicht funktioniert und ich bin viel zu ein Anfänger, um das zu verstehen. Wenn mir jemand eine Erklärung geben könnte, wie ich das beheben kann, wäre ich sehr glücklich. (Ja, der Code ist auf Deutsch, aber die Namen der Variablen spielen keine Rolle).

Code: Select all

import turtle

sieg_1 = 0
sieg_2 = 0

kugel1speed = 4
kugel2speed = 4

screen = turtle.Screen()
screen.title("Paintball River")
screen.bgcolor("darkgreen")
screen.setup(width=800, height=600)

#wasd / links
character1 = turtle.Turtle()
character1.shape("square")
character1.color("mediumblue")
character1.speed(0)
character1.penup()
character1.goto(-200,0)

#pfeiltasten / rechts
character2 = turtle.Turtle()
character2.shape("square")
character2.color("red")
character2.speed(0)
character2.penup()
character2.goto(200, 0)

####################################################################
randkröte = turtle.Turtle()
randkröte.shape("square")
randkröte.color("grey")
randkröte.speed(100)
randkröte.pencolor("grey")
randkröte.pensize(30)
randkröte.penup()
randkröte.goto(386,0)
randkröte.pendown()
randkröte.left(90)
randkröte.forward(285)
randkröte.left(90)
randkröte.forward(772)
randkröte.left(90)
randkröte.forward(571)
randkröte.left(90)
randkröte.forward(790)
randkröte.penup()
randkröte.goto(386,-300)
randkröte.left(90)
randkröte.pendown()
randkröte.forward(400)
randkröte.penup()
randkröte.goto(-400,300)
randkröte.pendown()
randkröte.forward(1)

flusskröte = turtle.Turtle()
flusskröte.shape("square")
flusskröte.color("royalblue")
flusskröte.speed(100)
flusskröte.pencolor("royalblue")
flusskröte.pensize(179)
flusskröte.penup()
flusskröte.goto(0,-400)
flusskröte.pendown()
flusskröte.left(90)
flusskröte.forward(800)

###################################################################################

def schießen1():
x1 = character1.xcor()
y1 = character1.ycor()
kugely1 = kugel1.ycor()
if kugely1 == 330:
kugel1.teleport(x1,y1)
kugel1.goto(365,y1)

def schießen2(x,y):
x2 = character2.xcor()
y2 = character2.ycor()
kugely2 = kugel2.ycor()
if kugely2 == 350:
kugel2.teleport(x2,y2)
kugel2.goto(-365,y2)

kugel1 = turtle.Turtle()
kugel1.speed(kugel1speed)
kugel1.color("darkblue")
kugel1.shape("circle")
kugel1.shapesize(0.5)
kugel1.penup()
kugel1.hideturtle()
kugel1.goto(0,330)
kugel1.showturtle()

kugel2 = turtle.Turtle()
kugel2.speed(kugel2speed)
kugel2.color("darkred")
kugel2.shape("circle")
kugel2.shapesize(0.5)
kugel2.penup()
kugel2.hideturtle()
kugel2.goto(0,350)
kugel2.showturtle()

######################################################################################

speed = 20

def hoch1():
y = character1.ycor()
if y < 260:
character1.sety(y + speed)

def runter1():
y = character1.ycor()
if y > -260:
character1.sety(y - speed)

def links1():
x = character1.xcor()
if x > -350:
character1.setx(x - speed)

def rechts1():
x = character1.xcor()
if x < -100:
character1.setx(x + speed)

def hoch2():
y = character2.ycor()
if y < 260:
character2.sety(y + speed)

def runter2():
y = character2.ycor()
if y > -260:
character2.sety(y - speed)

def links2():
x = character2.xcor()
if x > 100:
character2.setx(x - speed)

def rechts2():
x = character2.xcor()
if x <  350:
character2.setx(x + speed)

screen.listen()

screen.onkeypress(screen.bye, "Escape")

screen.onkeyrelease(hoch2, "Up")
screen.onkeyrelease(runter2, "Down")
screen.onkeyrelease(links2, "Left")
screen.onkeyrelease(rechts2, "Right")

screen.onkeyrelease(hoch1, "w")
screen.onkeyrelease(runter1, "s")
screen.onkeyrelease(links1, "a")
screen.onkeyrelease(rechts1, "d")

screen.onkeyrelease(schießen1,"e")
screen.onscreenclick(schießen2)

######################################################################################

while True:
screen.update()
kugelx1 = kugel1.xcor()
kugelx2 = kugel2.xcor()
if kugelx1 == 365:
kugel1.teleport(0,330)
if kugelx2 == -365:
kugel2.teleport(0,350)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post