Я новичок в программировании, который только что освоил Python Turtle. Недавно я работал над проектом, в котором вы управляете двумя персонажами. Они пытаются перестрелять друг друга над рекой. Но я столкнулся с ошибкой: всякий раз, когда одна сторона выпускает пулю, а затем и другая, первая пуля просто замирает на месте, пока первая не закончится. Это портит всю игру. Я видел другие сообщения с этим «if name = main», но я этого не понимаю.
Я понял, что это связано с вызовом функции в то время как другой все еще работает. Я пробовал использовать многопоточность, но это не сработало, и я слишком новичок, чтобы это понять. Если бы кто-нибудь мог объяснить мне, как это исправить, я был бы очень рад. (Да, код на немецком языке, но имена переменных не имеют особого значения).
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)
Подробнее здесь: https://stackoverflow.com/questions/793 ... -same-time
У меня проблемы с запуском двух функций одновременно ⇐ Python
Программы на Python
-
Anonymous
1737395240
Anonymous
Я новичок в программировании, который только что освоил Python Turtle. Недавно я работал над проектом, в котором вы управляете двумя персонажами. Они пытаются перестрелять друг друга над рекой. Но я столкнулся с ошибкой: всякий раз, когда одна сторона выпускает пулю, а затем и другая, первая пуля просто замирает на месте, пока первая не закончится. Это портит всю игру. Я видел другие сообщения с этим «if name = [b]main[/b]», но я этого не понимаю.
Я понял, что это связано с вызовом функции в то время как другой все еще работает. Я пробовал использовать многопоточность, но это не сработало, и я слишком новичок, чтобы это понять. Если бы кто-нибудь мог объяснить мне, как это исправить, я был бы очень рад. (Да, код на немецком языке, но имена переменных не имеют особого значения).
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)
Подробнее здесь: [url]https://stackoverflow.com/questions/79372235/im-having-problems-running-2-functions-at-the-same-time[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия