paia-hw5/TankMan/ml/Group_1/ml_play_3.py

70 lines
1.8 KiB
Python

"""
The template of the main script of the machine learning process
"""
import random
import pygame
from src.env import IS_DEBUG
class MLPlay:
def __init__(self, ai_name, *args, **kwargs):
"""
Constructor
@param side A string "1P" or "2P" indicates that the `MLPlay` is used by
which side.
"""
self.side = ai_name
print(f"Initial Game {ai_name} ml script")
self.time = 0
def update(self, scene_info: dict, keyboard=[], *args, **kwargs):
"""
Generate the command according to the received scene information
"""
# print(keyboard)
if scene_info["status"] != "GAME_ALIVE":
# print(scene_info)
return "RESET"
move_act = random.randrange(5)
aim_act = random.randrange(3)
shoot_cd = random.randrange(15, 31)
is_shoot = 0
if scene_info["used_frame"] % shoot_cd == 0:
is_shoot = random.randrange(2)
command = []
if move_act == 1:
command.append("TURN_RIGHT")
elif move_act == 2:
command.append("TURN_LEFT")
elif move_act == 3:
command.append("FORWARD")
elif move_act == 4:
command.append("BACKWARD")
if aim_act == 1:
command.append("AIM_LEFT")
elif aim_act == 2:
command.append("AIM_RIGHT")
if is_shoot and not IS_DEBUG:
command.append("SHOOT")
if self.side == "1P":
if pygame.K_b in keyboard:
command.append("DEBUG")
if not command:
command.append("NONE")
return command
def reset(self):
"""
Reset the status
"""
print(f"reset Game {self.side}")