def main(): """the main gameplay loop""" game = XiangqiGame() # initializes game while True: clear_screen() # start by clearing screen print("Type 'q' at any time to forfeit") print() game.show_board() print() print('Game state:', game.get_game_state()) print('Turn:', game.get_turn(), end='') if game.is_in_check(game.get_turn().lower()): print(' (in check)') print() print() move_from = input('Move from: ') if move_from == 'q': if game.get_turn() == 'RED': print('BLACK_WON') if game.get_turn() == 'BLACK': print('RED_WON') time.sleep(1) break move_to = input('Move to: ') if move_to == 'q': break if not game.make_move(move_from, move_to): print("Invalid move. Try again.") time.sleep(1) else: game.make_move(move_from, move_to)
def test_real_game_1(self): """ The following code is a game copied from an online match found at: http://wxf.ca/wxf/index.php/xiangqi-news/news-from-europ/381-world-xiangqi-championships-2015-game-records :return: """ game = XiangqiGame() game.make_move('g4', 'g5') game.make_move('c7', 'c6') game.make_move('b3', 'c3') game.make_move('c10', 'e8') game.make_move('b1', 'a3') game.make_move('b8', 'b4') game.make_move('h1', 'g3') game.make_move('b10', 'c8') game.make_move('g1', 'e3') game.make_move('c8', 'd6') game.make_move('a1', 'b1') game.make_move('a10', 'b10') game.make_move('f1', 'e2') game.make_move('b4', 'b2') game.make_move('i1', 'f1') game.make_move('f10', 'e9') game.make_move('f1', 'f6') game.make_move('d6', 'c8') game.make_move('a4', 'a5') game.make_move('b10', 'b3') game.make_move('c3', 'd3') game.make_move('c8', 'b6') game.make_move('g3', 'f5') game.make_move('b6', 'c4') game.make_move('d3', 'd9') game.make_move('c4', 'a3') game.make_move('h3', 'b3') game.make_move('a3', 'b1') game.make_move('b3', 'b10') self.assertEqual(game.get_game_state(), 'RED_WON')
def test_init_state(self): game = XiangqiGame() self.assertEqual(game.get_game_state(), "UNFINISHED")