def test_match(self): tcp = CSA.TCPProtocol('127.0.0.1') self.add_response(tcp, 'LOGIN:username OK\n') tcp.login('username', 'password') self.add_response(tcp, TEST_SUMMARY_STR) game_summary = tcp.wait_match() board = shogi.Board(game_summary['summary']['sfen']) self.add_response(tcp, 'START:20150505-CSA25-3-5-7\n') tcp.agree() self.add_response(tcp, '+5756FU,T1\n') (turn, usi, spend_time, message) = tcp.wait_server_message(board) board.push(shogi.Move.from_usi(usi)) self.assertEqual(turn, shogi.BLACK) self.assertEqual(spend_time, 1.0) self.assertEqual(board.sfen(), 'lnsgkgsnl/1r5b1/ppppppppp/9/9/4P4/PPPP1PPPP/1B5R1/LNSGKGSNL w - 2') next_move = shogi.Move.from_usi('8c8d') board.push(next_move) self.add_response(tcp, '-8384FU,T2\n') response_line = tcp.move(board.pieces[next_move.to_square], shogi.WHITE, next_move) (turn, usi, spend_time, message) = tcp.parse_server_message(response_line, board) self.assertEqual(turn, shogi.WHITE) self.assertEqual(spend_time, 2.0) # without spent time ex.) Shogidokoro self.add_response(tcp, '+5655FU\n') (turn, usi, spend_time, message) = tcp.wait_server_message(board) board.push(shogi.Move.from_usi(usi)) self.assertEqual(turn, shogi.BLACK) self.assertEqual(spend_time, None)
def test_wait_match(self): tcp = CSA.TCPProtocol('127.0.0.1') self.add_response(tcp, TEST_SUMMARY_STR) game_summary = tcp.wait_match() self.assertEqual(game_summary, { 'summary': TEST_SUMMARY, 'my_color': shogi.WHITE })
def test_match(self): tcp = CSA.TCPProtocol('127.0.0.1') self.add_response(tcp, 'LOGIN:username OK\n') tcp.login('username', 'password') self.add_response(tcp, TEST_SUMMARY_STR) game_summary = tcp.wait_match() board = shogi.Board(game_summary['summary']['sfen']) self.add_response(tcp, 'START:20150505-CSA25-3-5-7\n') tcp.agree() self.add_response(tcp, '+5756FU,T1\n') (turn, usi, spend_time, message) = tcp.wait_server_message(board) board.push(shogi.Move.from_usi(usi)) self.assertEqual( board.sfen(), 'lnsgkgsnl/1r5b1/ppppppppp/9/9/4P4/PPPP1PPPP/1B5R1/LNSGKGSNL w - 2' )
def test_fail_login(self): tcp = CSA.TCPProtocol('127.0.0.1') self.add_response(tcp, 'LOGIN:incorrect\n') with self.assertRaises(ValueError): tcp.login('python-syogi', 'password')
def test_login(self): tcp = CSA.TCPProtocol('127.0.0.1') self.add_response(tcp, 'LOGIN:python-syogi OK\n') login_result = tcp.login('python-syogi', 'password') self.assertTrue(login_result)
from __future__ import print_function, unicode_literals import shogi from shogi import CSA import random import sys import time if len(sys.argv) != 4: print('Usage: {0} host_name user_name password'.format(sys.argv[0])) sys.exit(1) ct = CSA.TCPProtocol(sys.argv[1], 4081) ct.login(sys.argv[2], sys.argv[3]) game_summary = ct.wait_match() sfen = game_summary['summary']['sfen'] my_color = game_summary['my_color'] board = shogi.Board(sfen) ct.agree() while True: print("\n"*3) print("[battle.py]: pc turn") moves = [] for move in board.legal_moves: moves.append(move)