public override void UpdateState(int[] state, int[] state_, int rewd, BirdAction action) { UpdateNode node = new UpdateNode(); node.state = state; node.state_ = state_; node.rewd = rewd; node.action = (int)action; Send(node); }
public void RespondByDecision(BirdAction action) { if (isGameStart && !isGameOver) { if (action == BirdAction.FLY) { mainBird.FlyUp(); } } }
public override void OnUpdate(float delta) { base.OnUpdate(delta); Monitor.Enter(m_oDataQueue); if (m_oDataQueue.Count > 0) { BirdAction action = m_oDataQueue.Dequeue(); GameMgr.S.RespondByDecision(action); last_action = action; } Monitor.Exit(m_oDataQueue); }
public void OnRecv(string recv, int length) { int res = 0; if (!int.TryParse(recv, out res)) { Debug.LogError("server chose action error " + recv); } else { BirdAction action = (BirdAction)res; Monitor.Enter(m_oDataQueue); m_oDataQueue.Enqueue(action); Debug.Log("rcv action:" + action); Monitor.Exit(m_oDataQueue); } }
public override void OnTick() { base.OnTick(); if (loaded) { int[] state = GetCurrentState(); if (last_state != null) { UpdateState(last_state, state, last_r, last_action); } //do next loop BirdAction action = choose_action(state); GameMgr.S.RespondByDecision(action); last_r = 1; last_state = state; last_action = action; } }
public override void UpdateState(int[] state, int[] state_, int rewd, BirdAction action) { //internal don't need to update env }
public abstract void UpdateState(int[] state, int[] state_, int rewd, BirdAction action);
public override void UpdateState(int[] state, int[] state_, int rewd, BirdAction action) { //nothing }