From a0c4a6c45fc425e5957b3f838155e4a93c73c269 Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Sun, 10 Nov 2013 20:35:42 +0200 Subject: Experimental new method of going straight to center and then shooting forwards Does not really work on the map it was intended for :( Still, might be useful. --- Entelect.BattleCity.Challenge/GameInProgress.cs | 77 +++++++++++++++++++++++-- 1 file changed, 73 insertions(+), 4 deletions(-) (limited to 'Entelect.BattleCity.Challenge/GameInProgress.cs') diff --git a/Entelect.BattleCity.Challenge/GameInProgress.cs b/Entelect.BattleCity.Challenge/GameInProgress.cs index 549df5f..3f48019 100644 --- a/Entelect.BattleCity.Challenge/GameInProgress.cs +++ b/Entelect.BattleCity.Challenge/GameInProgress.cs @@ -3,6 +3,7 @@ using System.Windows; using System.Collections.Generic; using System.Threading; using System.Diagnostics; +using System.Text; namespace Entelect.BattleCity.Challenge { @@ -15,7 +16,7 @@ namespace Entelect.BattleCity.Challenge private ChallengeService.player _me; private ChallengeService.player _enemy; - private ChallengeService.state?[][] _board; + private BoardCell[][] _board; private AiAgent _tank1Ai; private AiAgent _tank2Ai; @@ -25,14 +26,19 @@ namespace Entelect.BattleCity.Challenge public GameInProgress(ChallengeService.ChallengeClient service, ChallengeService.state?[][] board) { _service = service; - _board = board; + _board = getBoardCellArrayFromServiceStates(board); updateGameStatus(true); + _board[_me.@base.x][_me.@base.y] = BoardCell.BASE; + _board[_enemy.@base.x][_enemy.@base.y] = BoardCell.BASE; - _tank1Ai = new AiAgent(_me.units[0].id); - _tank2Ai = new AiAgent(_me.units[1].id); + _tank1Ai = new AiAgent(_me.units[0].id, false); + _tank2Ai = new AiAgent(_me.units[1].id, true); + drawBoard(); } + + public void run() { while (true) @@ -157,5 +163,68 @@ namespace Entelect.BattleCity.Challenge Console.Error.WriteLine("Logged in opponent was not found"); } } + + private void drawBoard() + { + for (int x = 0; x < _board.Length; ++x) + { + var stringBoard = new StringBuilder(); + for (int y = 0; y < _board[x].Length; ++y) + { + switch (_board[x][y]) + { + case BoardCell.EMPTY: + stringBoard.Append(' '); + break; + case BoardCell.WALL: + stringBoard.Append('#'); + break; + case BoardCell.OUT_OF_BOUNDS: + stringBoard.Append('O'); + break; + case BoardCell.BASE: + stringBoard.Append('@'); + break; + default: + stringBoard.Append('!'); + break; + } + + } + Console.WriteLine(stringBoard.ToString()); + } + } + + private BoardCell[][] getBoardCellArrayFromServiceStates(ChallengeService.state?[][] stateBoard) + { + BoardCell[][] newBoard = new BoardCell[stateBoard.Length][]; + for (int x = 0; x < stateBoard.Length; ++x) + { + newBoard[x] = new BoardCell[stateBoard[x].Length]; + for (int y = 0; y < stateBoard[x].Length; ++y) + { + switch (stateBoard[x][y]) + { + case null: + case ChallengeService.state.NONE: + case ChallengeService.state.EMPTY: + newBoard[x][y] = BoardCell.EMPTY; + break; + case ChallengeService.state.FULL: + newBoard[x][y] = BoardCell.WALL; + break; + case ChallengeService.state.OUT_OF_BOUNDS: + newBoard[x][y] = BoardCell.OUT_OF_BOUNDS; + break; + default: + newBoard[x][y] = BoardCell.OUT_OF_BOUNDS; + break; + } + + } + } + + return newBoard; + } } } -- cgit v1.2.3