아래 코드에서는 new_turtle (6 개)이 화면에서 왼쪽에서 오른쪽으로 수평으로 이동하고 bad_turtle이 아래에서 위로 그리고 다시 수직으로 이동합니다. 내가 찾고있는 것은 bad_turtle이 "달리는"때 또는 new_turtle과 동일한 x, y 좌표를 가질 때 어떤 new_turtle이 "적중"하든 갈색으로 변하기를 원합니다. 아래의 마지막 if 문에 이것을 작성하려고 시도했지만 작동하지 않습니다. 어떻게 할 수 있습니까? 어떤 도움/조언이라도 대단히 감사하겠습니다.
from turtle import Turtle, Screen
import random
is_race_on = False
screen = Screen()
screen.setup(width=500, height=500)
user_bet = screen.textinput(title="Make your bet!", prompt="Which turtle will win the race? Enter a color: ")
print(user_bet)
colors = ["red", "blue", "green", "yellow", "purple", "orange"]
y_positions = [175, 100, 25, -50, -125, -200]
all_turtles = []
bad_turtle = Turtle(shape="turtle")
bad_turtle.up()
bad_turtle.goto(140, -200)
bad_turtle.right(270)
for turtle_index in range(0, 6):
new_turtle = Turtle(shape="turtle")
new_turtle.color(colors[turtle_index])
new_turtle.up()
new_turtle.goto(-230, y_positions[turtle_index])
all_turtles.append(new_turtle)
if user_bet:
is_race_on = True
while is_race_on:
for turtle in all_turtles:
if turtle.xcor() > 230:
is_race_on = False
winning_color = turtle.pencolor()
if winning_color == user_bet:
print(f"You've won! The {winning_color} turtle is the winner!")
else:
print(f"You lost! The {winning_color} turtle is the winner!")
rand_distance = random.randint(0, 10)
turtle.forward(rand_distance)
# rand_bad = random.choice(y_positions_bad)
rand_distance_bad = random.randint(20, 40)
bad_turtle.forward(rand_distance_bad)
if bad_turtle.ycor() > 200 or bad_turtle.ycor() < -200:
bad_turtle.right(180)
bad_turtle.forward(rand_distance_bad)
if bad_turtle.xcor() and bad_turtle.ycor() == new_turtle.xcor() and new_turtle.ycor():
new_turtle.color("brown")
screen.exitonclick()
- 답변 # 1
- 답변 # 2
진술이 잘못된 경우 다음을 변경해 볼 수 있습니다.
if bad_turtle.xcor() and bad_turtle.ycor() == new_turtle.xcor() and new_turtle.ycor(): new_turtle.color("brown")
이에:
if bad_turtle.xcor() == new_turtle.xcor() and bad_turtle.ycor() == new_turtle.ycor(): new_turtle.color("brown")
관련 자료
- 파이썬에서 실시간으로 ntplib의 if 문을 사용하는 방법은 무엇입니까?
- flux - Python을 사용하여 Influxdbv2 데이터를 쿼리 할 수없는 이유는 무엇입니까?
- Python argparse를 사용하여 명령 줄 문제를 해결하는 방법은 무엇입니까?
- Python Flask에서 CSS 사용
- 명령 줄을 사용하지 않고 파이썬 파일을 실행할 수있는 방법이 있습니까?
- pysocks python을 사용하여 https reuqest를 보내는 방법
- embedded - python을 사용하는 trace32 - t32_readmemoryobj 함수에서 반환 데이터를 해석하는 방법
- For 루프, 논리 오류를 사용하여 파이썬에서 정수 반복
- 첫 번째 if 문은 파이썬에서 무시되지만 elif에서는 무시됩니다
- pip - ctypes를 사용하여 파이썬 모듈 만들기
- python - if 문을 사용하여 함수를 호출 한 다음 if 문 안에 반환 된 값을 인쇄하려면 어떻게해야합니까?
- Python 요청을 사용할 때 잘못된 URL
- 항상 두 번째 항목을 제외하고 셀레늄 Python을 사용하여 웹 요소를 반복합니다
- JSON 파일을 Python의 데이터 세트 (이미지)와 일치시키는 방법이 있습니까?
- 파이썬을 사용하여 파일의 특정 줄을 삭제하는 방법은 무엇입니까?
- c : GLSL에서 화면 공간 좌표에 모듈로를 사용하면 예상 결과가 생성되지 않습니다.
- 다른 봇이 뭔가를하게 만드는 파이썬을 사용하여 불일치 봇 명령을 만드는 방법
- python (python -m httpserver)을 사용하여 로컬 서버에서 html 파일을 열려면 어떻게해야합니까?
- json - 파이썬을 사용하여 사전 객체를 어떻게 삭제할 수 있습니까?
@ ErickY.Carreno의 대답은 올바른 방향으로 나아가는 단계이지만 요점을 놓친 것입니다. 거북이는 부동 소수점 평면을 돌아 다니며 같은 장소로 돌아갈 때 반드시 정확히 같은 장소는 아닙니다 (예 : 13.99999 대 14.00001). 사용
==
실행 가능하지 않습니다. 따라서 대신 거리 비교를 사용하여 충돌을 테스트합니다.어디
20
최소 거리가 가장 적합 할 수 있습니다.다음 문제는 코드의 잘못된 위치에 충돌이 있고 참조하는 것입니다.
new_turtle
이 시점에서 더 이상 활성 변수가 아닙니다. 위의 모든 사항을 수정하고 프로그램의 다른 측면을 조정합니다.