Guest User

Untitled

a guest
Aug 18th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.20 KB | None | 0 0
  1. import json
  2. import sys
  3.  
  4. # 도도 파이터에 참가하기 위해서는 에이전트를 만들어서 제출해 주셔야 합니다.
  5. # 에이전트는 사용자가 작성하는 인공지능 코드로서, 주어지는 현재 게임 상태를 바탕으로
  6. # 어떤 액션을 취할지를 결정하는 역할을 합니다.
  7. #
  8. # 액션 설명
  9. # - idle - 아무것도 하지 않습니다.
  10. # - forward - 앞으로 움직입니다. 상대가 바로 앞에 있을 경우 더 움직이지 않습니다.
  11. # - backward - 뒤로 움직입니다. 처음 시작지점에서 세칸 이상 뒤로 갈 수 없습니다.
  12. # - punch - 상단을 공격합니다.
  13. # - kick - 하단을 공격합니다.
  14. # - crouch - 상단 공격을 피합니다.
  15. # - jump - 하단 공격을 피합니다.
  16. # - guard - 공격을 방어합니다. 상하단 모두 방어할 수 있지만 약간의 데미지를 입습니다.
  17. #
  18. # 상태 설명
  19. # - distance - 상대방과 나와의 거리. 0일 경우에만 공격이 가능합니다.
  20. # - time_left - 남은 시간
  21. # - health - 나의 체력
  22. # - opponent_health - 상대의 체력
  23. # - opponent_action - 지난 턴에서 상대의 액션
  24. # - given_damage - 직전 액션에서 내가 상대방에게 가한 데미지
  25. # - taken_damage - 직전 액션에서 상대방이 나에게 가한 데미지
  26. # - match_records - 지금까지의 경기 기록. 리스트 형식입니다.
  27. # 예를 들어 [None, True, False]인 경우, 첫번째 경기는 무승부,
  28. # 두번째 경기는 당신이, 세번째 경기는 상대방이 이겼다는 뜻입니다.
  29. #
  30. # 주의사항
  31. # - 같은 액션을 계속 반복하지 마세요. 공격력이 하락되는 페널티가 있습니다.
  32. # - 상대의 공격을 회피하거나 막는데 성공하면 다음 공격에서 공격력 보너스가 있습니다.
  33. # - 한 턴 내에서는 이동과 방어 동작이 공격 동작보다 우선합니다.
  34. # 즉, P1이 공격을 하고 P2가 이동한다면 P2가 이동하는 액션을 우선 평가합니다.
  35. # - 사용할 수 있는 모듈은 random, json, sys, math로 한정되어 있습니다.
  36. # - 스크립트 실행 시간이 3초를 넘어가면 탈락 처리됩니다.
  37.  
  38.  
  39. def action(what):
  40. if what not in ('idle', 'forward', 'backward', 'punch', 'kick',
  41. 'crouch', 'jump', 'guard'):
  42. raise ValueError(f'Unknown action type: {what}')
  43. sys.stdout.write(what + '\n')
  44. sys.stdout.flush()
  45.  
  46.  
  47. def read_status():
  48. data = sys.stdin.readline()
  49. while data:
  50. yield json.loads(data)
  51. data = sys.stdin.readline()
  52.  
  53.  
  54. for status in read_status():
  55. distance = status['distance']
  56. time_left = status['time_left']
  57. health = status['health']
  58. opponent_health = status['opponent_health']
  59. opponent_action = status['opponent_action']
  60. given_damage = status['given_damage']
  61. taken_damage = status['taken_damage']
  62. match_records = status['match_records']
  63.  
  64. # 아래 코드를 수정해 주세요!
  65. # 주의할 점은, 한 루프 내에는 반드시 한 번의 action()만 호출되어야 합니다.
  66. # 호출되지 않으면 스크립트가 강제종료되며, 여러번 호출되면 큐가 쌓여서
  67. # 의도하지 않은 결과가 나옵니다.
  68. action('punch')
Add Comment
Please, Sign In to add comment