tubeCoding
Python
Java demo
한국어(ko)
English(en)
한국어(ko)
로그인
회원가입
새 파일
CSV 파일 추가
파일 이름
취소
파일 생성
코드 실행
해당 파일은 텍스트 편집기에서 표시할 수 없습니다.
콘솔 출력
[{"type": "TextFile", "filename": "main.py", "content": "import turtle\r\n# \uc124\uc815\uac12\r\nHEIGHT = 10\r\nWIDTH = 20\r\nCELL_SIZE = 30 # \ud55c \uce78\uc758 \ud53d\uc140 \ud06c\uae30\r\nPLAYER_COLOR = 'blue'\r\nLANE_COLOR = 'black'\r\nBG_COLOR = 'white'\r\n# turtle \uc138\ud305\r\nscreen = turtle.Screen()\r\nscreen.setup(width=WIDTH * CELL_SIZE + 40, height=HEIGHT * CELL_SIZE + 40)\r\nscreen.bgcolor(BG_COLOR)\r\nscreen.title(\"Turtle Car Lane Game\")\r\nscreen.tracer(0)\r\n# \ucc28\uc120 \uadf8\ub9ac\uae30\uc6a9 turtle (lane)\r\nlane = turtle.Turtle()\r\nlane.hideturtle()\r\nlane.penup()\r\nlane.pensize(3)\r\nlane.color(LANE_COLOR)\r\n# \ucc28\ub7c9 \uc0dd\uc131 (\ud55c \ubc88\ub9cc)\r\ncar = turtle.Turtle()\r\ncar.shape(\"square\")\r\ncar.shapesize(stretch_wid=3, stretch_len=2)\r\ncar.color(PLAYER_COLOR)\r\ncar.penup()\r\ncar.goto(0 + 125 + CELL_SIZE, -HEIGHT // 2 * CELL_SIZE + CELL_SIZE // 2)\r\ncar.showturtle()\r\n# \ucc28\uc120 \uadf8\ub9ac\uae30 \ud568\uc218\r\ndef draw_lanes():\r\n lane.clear()\r\n # \uc88c\uce21 \ucc28\uc120\r\n x = -WIDTH // 2 * CELL_SIZE\r\n lane.goto(x, HEIGHT // 2 * CELL_SIZE)\r\n lane.pendown()\r\n lane.goto(x, -HEIGHT // 2 * CELL_SIZE)\r\n lane.penup()\r\n # \uc911\uc559\uc120\r\n x = 0\r\n lane.color('orange') # \uc911\uc559\uc120\uc744 \uc8fc\ud669\uc0c9\uc73c\ub85c \uc124\uc815\r\n lane.goto(x, HEIGHT // 2 * CELL_SIZE)\r\n lane.pendown()\r\n lane.goto(x, -HEIGHT // 2 * CELL_SIZE)\r\n lane.penup()\r\n lane.color(LANE_COLOR) # \ub2e4\ub978 \ucc28\uc120\uc740 \uc6d0\ub798 \uc0c9\uc0c1\uc73c\ub85c \ubcf5\uc6d0\r\n # \uc6b0\uce21 \ucc28\uc120\r\n x = (WIDTH // 2 - 1) * CELL_SIZE\r\n lane.goto(x, HEIGHT // 2 * CELL_SIZE)\r\n lane.pendown()\r\n lane.goto(x, -HEIGHT // 2 * CELL_SIZE)\r\n lane.penup()\r\n# \ucc28\ub7c9 \uc774\ub3d9 \uac70\ub9ac\r\nMOVE_STEP = 20\r\ndef move_left():\r\n # \uc911\uc559\uc120(x=0)\uc73c\ub85c \uc774\ub3d9\ud558\ub824 \ud558\uba74 \uc6b0\uce21\uc73c\ub85c \ubcf4\uc815\r\n if car.xcor() - MOVE_STEP <= 0:\r\n car.setx(car.xcor() + MOVE_STEP)\r\n else:\r\n car.setx(car.xcor() - MOVE_STEP)\r\n update()\r\ndef move_right():\r\n # \uc6b0\uce21 \ucc28\uc120 \ub118\uc73c\ub824 \ud558\uba74 \uc88c\uce21\uc73c\ub85c \ubcf4\uc815\r\n max_x = (WIDTH // 2 - 2) * CELL_SIZE # \uc6b0\uce21 \ucc28\uc120 \ubc14\ub85c \uc67c\ucabd\uae4c\uc9c0 \ud5c8\uc6a9\r\n if car.xcor() + MOVE_STEP > max_x:\r\n car.setx(car.xcor() - MOVE_STEP)\r\n else:\r\n car.setx(car.xcor() + MOVE_STEP)\r\n update()\r\ndef draw_signal():\r\n # \uc2e0\ud638\ub4f1 \uc704\uce58: \uc6b0\uce21 \uc0c1\ub2e8\r\n signal = turtle.Turtle()\r\n signal.hideturtle()\r\n signal.penup()\r\n radius = 15\r\n x = WIDTH // 2 * CELL_SIZE - 2 * radius\r\n y = HEIGHT // 2 * CELL_SIZE - 2 * radius\r\n # \ucc28\ub7c9\uc774 \ucc28\uc120 \ubc94\uc704 \uc548\uc5d0 \uc788\uc73c\uba74 \ucd08\ub85d\uc0c9, \uc544\ub2c8\uba74 \ube68\uac04\uc0c9\r\n car_x = car.xcor()\r\n min_x = CELL_SIZE # \uc911\uc559\uc120 \ubc14\ub85c \uc624\ub978\ucabd\r\n max_x = (WIDTH // 2 - 2) * CELL_SIZE - 10 # \uc6b0\uce21 \ucc28\uc120 \ubc14\ub85c \uc67c\ucabd\ubcf4\ub2e4 \uc57d\uac04 \ub354 \uc881\uac8c\r\n if min_x <= car_x <= max_x:\r\n color = 'green'\r\n else:\r\n color = 'red'\r\n signal.goto(x, y)\r\n signal.pendown()\r\n signal.fillcolor(color)\r\n signal.begin_fill()\r\n signal.circle(radius)\r\n signal.end_fill()\r\n signal.penup()\r\ndef update():\r\n draw_lanes()\r\n draw_signal()\r\n screen.update()\r\ndef exit_game():\r\n screen.bye()\r\n# \ud0a4 \ubc14\uc778\ub529\r\nscreen.listen()\r\nscreen.onkeypress(move_left, \"Left\")\r\nscreen.onkeypress(move_right, \"Right\")\r\nscreen.onkeypress(exit_game, \"Escape\")\r\nupdate()\r\nscreen.mainloop()", "locked": true}]