def __init__(self, name): Player.__init__(self, **{ "id": -1, "login": name, "global_rating": (1500, 500), "ladder_rating": (1500, 500), "number_of_games": 0 })
def __init__(self) -> None: self.DISPSURF = pygame.display.set_mode(self.SCREEN) self.DISPSURF.fill(self.WHITE) self.player = Player(ADDR) self.angle = 0 self.image = self.TANK_SOURCE self.update()
def test_average_rating(qtbot): import config config.no_dialogs = True import client from client import Player from games.gameitem import GameItem players = [Player(id=1, login='******', global_rating=(2000, 200)), Player(id=2, login='******', global_rating=(1000, 150)), Player(id=3, login='******', global_rating=(1200, 100))] g = GameItem(0) client.players = dict(map(lambda p: (p.id, p), players)) g.client = client g.players = players expected_average_rating = sum([conservative_estimate(p.global_rating) for p in players]) / len(players) assert expected_average_rating == g.average_rating
def main(): """ This invokes the game and can run either the server or the client. To run the server run: python run_game.py -t s -i <path to input text file> To run the client run: python run_game.py -t c -i <name of player> """ try: opts, args = getopt(sys.argv[1:], 't:n:i:') except GetoptError: sys.stderr.write('Error parsing options\n') sys.stderr.write(__doc__) exit(-1) name = 'Default_Player' input_file = None server_client_flag = None for o, a in opts: if o == '-t': server_client_flag = a elif o == '-n': name = a elif o == '-i': input_file = a if server_client_flag == 's': gs = GameServer(input_file) elif server_client_flag == 'c': pl = Player(name) pl.play_game() else: print( 'None or invalid game side provided. Please specify "s" for server or "c" for client' ) exit(1)
def final_score(board, last_known_move, player): og_player = player complexBoard = ReportingBoard() final_player = Player(complexBoard) complexBoard.update(board) final_player.update(player, board) complexBoard.place_piece(player, last_known_move) complexBoard.refresh() empty_spaces = complexBoard.get_empty_spaces() #for the remaining spaces play out the game using this agent #most common scenario or between for space in empty_spaces: if (player == 1): player = 2 else: player = 1 final_player.update(player, complexBoard.board) move = final_player.get_move() complexBoard.place_piece(player, move) complexBoard.refresh() complexBoard.output() if os.path.isfile('filename.txt'): #if file already exists open normally fs = open("final_scores.csv", "a") else: #otherwise create it and add headers fs = open("final_scores.csv", "a") fs.write("agent_player, p1_score, p2_score, winner \n") p1score = complexBoard.get_p1_score() p2score = complexBoard.get_p2_score() fs.write(str(og_player) + ",") fs.write(str(p1score) + ",") fs.write(str(p2score) + ",") fs.write(str(complexBoard.get_winner()) + "\n")
def test_player_indexing(): from client import Player p = Player(id=1, login='******') assert {1: p}[1] == {p: p}[p]
def test_player_equality(): from client import Player assert Player(id=1, login='******') == Player(id=1, login='******')
def test_client(self): player = Player() player.round += 1 actual = player.round expected = 2 self.assertEqual(actual, expected)
class GUI: SCREEN = (800, 800) WHITE = (255, 255, 255, 255) BLACK = (0, 0, 0, 255) GREEN = (0, 255, 0, 255) BLUE = (0, 0, 255, 0) players = [] TANK_SOURCE = pygame.image.load('img/tank.png') def __init__(self) -> None: self.DISPSURF = pygame.display.set_mode(self.SCREEN) self.DISPSURF.fill(self.WHITE) self.player = Player(ADDR) self.angle = 0 self.image = self.TANK_SOURCE self.update() def update(self): pygame.init() while True: self.get_input() self.DISPSURF.fill(self.WHITE) self.display() pygame.display.update() def add_player(): pass def display(self): # self.image = pygame.transform.rotate(self.image, self.angle) for data in self.player.player_pos: self.DISPSURF.blit(self.image, (data.data.pos_x, data.data.pos_y)) self.angle += 1 def get_input(self): for event in pygame.event.get(): if event.type == QUIT: self.player.alive = False self.player.close_connection() pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_w: self.player.game_data.keys['W'] = 1 if event.key == pygame.K_a: self.player.game_data.keys['A'] = 1 if event.key == pygame.K_s: self.player.game_data.keys['S'] = 1 if event.key == pygame.K_d: self.player.game_data.keys['D'] = 1 if event.type == pygame.KEYUP: if event.key == pygame.K_w: self.player.game_data.keys['W'] = 0 if event.key == pygame.K_a: self.player.game_data.keys['A'] = 0 if event.key == pygame.K_s: self.player.game_data.keys['S'] = 0 if event.key == pygame.K_d: self.player.game_data.keys['D'] = 0
import sys import Pyro4 import Pyro4.util import sys from client import Player # instantiates a client through which a user can join the ERS game nameserver = Pyro4.locateNS() uri = nameserver.lookup("ERS") game = Pyro4.Proxy(uri) player = Player() player.initiate_game(game)
def __init__(self, host_ip, port_ip, player_name='John'): board_update = queue.Queue() board_input = queue.Queue() board = Board() self.client_instance = Client(board_input) self.player = None ClientSocket = socket.socket() xy = '' # Color = input('Choose a color: ') print('Waiting for connection') try: ClientSocket.connect((host_ip, int(port_ip))) except socket.error as e: print(str(e)) ClientSocket.send(str.encode(player_name + '\n')) Color = '' while True: Response = self.read_from_buffer(ClientSocket) # print(Response) if Response == 'host': num_players = self.get_valid_player_input( "How many players(including you)? " ) # add error checking from pakuri here ClientSocket.send(str.encode(str(num_players) + '\n')) elif Response == "quit": break elif Response == 'set': # xy=input("x,y: ") self.client_instance.set_board_action("initialsettlement") coordinates = board_input.get() board_input.task_done() settle = self.client_instance.building_locations.claimSettlement( int(coordinates.split(',')[0]), int(coordinates.split(',')[1]), Color) self.client_instance.property_list.append(settle) self.client_instance.player.acquireNode(settle) port = self.client_instance.game_board.xy_give_port( (settle.cord1, settle.cord2)) print(settle.cord1, settle.cord2) if port is not None: self.client_instance.player.bankTrading.update( port.resource) self.client_instance.set_board_updated(True) ClientSocket.send(str.encode(coordinates + '\n')) ClientSocket.send( str.encode("enemyu," + self.client_instance.player.getSendToEnemies() + '\n')) elif Response == "startroad": self.client_instance.set_board_action("initialroad") coordinates = board_input.get() board_input.task_done() # player.add road = self.client_instance.building_locations.claimRoad( int(coordinates.split(',')[0]), int(coordinates.split(',')[1]), Color) self.client_instance.road_list.append(road) self.client_instance.player.acquireRoad(road) self.client_instance.set_board_updated(True) ClientSocket.send(str.encode(coordinates + '\n')) ClientSocket.send( str.encode("enemyu," + self.client_instance.player.getSendToEnemies() + '\n')) elif Response.split(',')[0] == "set": print("new settlement" + Response.split(',')[1] + Response.split(',')[1]) self.client_instance.property_list.append( self.client_instance.building_locations.claimSettlement( int(Response.split(',')[1]), int(Response.split(',')[2]), Response.split(',')[3])) self.client_instance.set_board_updated(True) elif Response.split(',')[0] == "road": print("new road") print("new settlement" + Response.split(',')[1] + Response.split(',')[1]) self.client_instance.road_list.append( self.client_instance.building_locations.claimRoad( int(Response.split(',')[1]), int(Response.split(',')[2]), Response.split(',')[3])) self.client_instance.set_board_updated(True) elif Response.split(',')[0] == "city": self.client_instance.building_locations.settlements[int( Response.split(',')[1])][int( Response.split(',')[2])].city = True self.client_instance.set_board_updated(True) elif Response.split(',')[0] == "color": print("hi") Color = Response.split(',')[1] self.client_instance.set_player(Player(player_name, Color)) print(Color) elif Response.split(',')[0] == "bank": arr = [int(x) for x in Response.split(',')[1:]] self.client_instance.bank.update(arr) self.client_instance.set_board_updated(True) elif Response.split('|')[0] == "board": print("hello") number_list = [ int(elem) for elem in Response.split('|')[1].split(',') ] resource_list = Response.split('|')[2].split(',') port_list = Response.split('|')[3].split(',') board.generate_land(number_list, resource_list) board.generate_ports(port_list) self.client_instance.enemy_list = enemy_list threading.Thread(target=self.board_thread, args=(board, )).start() elif Response == "getstart": print("get starting resources") self.client_instance.start_resources() message = board_input.get() board_input.task_done() ClientSocket.send(str.encode(message + '\n')) ClientSocket.send( str.encode("enemyu," + self.client_instance.player.getSendToEnemies() + '\n')) # bank_update = board_input.get() # board_input.task_done() elif Response.split(',')[0] == "dice": roll = [int(x) for x in Response.split(',')[1:]] self.client_instance.display_dice(roll) self.client_instance.process_dice(sum(roll)) message = board_input.get() board_input.task_done() ClientSocket.send(str.encode(message + '\n')) ClientSocket.send( str.encode("enemyu," + self.client_instance.player.getSendToEnemies() + '\n')) elif Response == "turn" or Response == "robber": self.client_instance.player.development_card_played = False if (Response == "robber"): self.client_instance.set_board_action("robber", 'turn') else: self.client_instance.set_board_action("turn") while True: message = board_input.get() if (message.split(',')[0] == "road"): road = self.client_instance.building_locations.claimRoad( int(message.split(',')[1]), int(message.split(',')[2]), Color) self.client_instance.road_list.append(road) self.client_instance.player.acquireRoad(road) self.client_instance.set_board_updated(True) self.client_instance.pay_cards([1, 0, 1, 0, 0]) ClientSocket.send( str.encode(message + ',' + Color + '\n')) ClientSocket.send( str.encode("enemyu," + self.client_instance.player. getSendToEnemies() + '\n')) if (message.split(',')[0] == "robber"): self.client_instance.game_board.set_robber( (int(message.split(',')[1]), int(message.split(',')[2]))) self.client_instance.set_board_updated(True) ClientSocket.send(str.encode(message + '\n')) if (message.split(',')[0] == "set"): settle = self.client_instance.building_locations.claimSettlement( int(message.split(',')[1]), int(message.split(',')[2]), Color) self.client_instance.property_list.append(settle) self.client_instance.player.acquireNode(settle) port = self.client_instance.game_board.xy_give_port( (settle.cord1, settle.cord2)) if port is not None: self.client_instance.player.bankTrading.update( port.resource) self.client_instance.set_board_updated(True) self.client_instance.pay_cards([1, 1, 1, 0, 1]) ClientSocket.send( str.encode(message + ',' + Color + '\n')) ClientSocket.send( str.encode("enemyu," + self.client_instance.player. getSendToEnemies() + '\n')) if (message == "dev"): ClientSocket.send(str.encode(message + '\n')) card = self.read_from_buffer(ClientSocket) print(card) self.client_instance.get_dev_card(card) self.client_instance.player.developmentHand.add_card( card) if (card == 'victoryPoint'): self.client_instance.player.hiddenVictoryPoints += 1 self.client_instance.pay_cards([0, 1, 0, 1, 1]) ClientSocket.send( str.encode("enemyu," + self.client_instance.player. getSendToEnemies() + '\n')) if (message.split(',')[0] == "monopoly"): ClientSocket.send(str.encode(message + '\n')) ClientSocket.send( str.encode("enemyu," + self.client_instance.player. getSendToEnemies() + '\n')) if (message.split(',')[0] == "city"): settle = self.client_instance.building_locations.settlements[ int(message.split(',')[1])][int( message.split(',')[2])].city = True self.client_instance.player.acquireCity() self.client_instance.set_board_updated(True) self.client_instance.pay_cards([0, 2, 0, 3, 0]) ClientSocket.send(str.encode(message + ',' + '\n')) ClientSocket.send( str.encode("enemyu," + self.client_instance.player. getSendToEnemies() + '\n')) elif (message == "end"): if (self.client_instance.player.victoryPoints + self.client_instance.player.hiddenVictoryPoints >= 10): ClientSocket.send( str.encode('winner,' + self.client_instance.player.name + '\n')) else: ClientSocket.send(str.encode(message + '\n')) ClientSocket.send( str.encode("enemyu," + self.client_instance. player.getSendToEnemies() + '\n')) break elif (message.split(',')[0] == "bank"): ClientSocket.send(str.encode(message + '\n')) ClientSocket.send( str.encode("enemyu," + self.client_instance.player. getSendToEnemies() + '\n')) elif (message == "roadroad"): board_input.task_done() if (len( Actions.buildRoadAvailable( self.client_instance.player, True)) > 0): self.client_instance.set_board_action( "roadfree", 'turn') message = board_input.get() board_input.task_done() road = self.client_instance.building_locations.claimRoad( int(message.split(',')[1]), int(message.split(',')[2]), Color) self.client_instance.road_list.append(road) self.client_instance.player.acquireRoad(road) self.client_instance.set_board_updated(True) ClientSocket.send( str.encode(message + ',' + Color + '\n')) ClientSocket.send( str.encode("enemyu," + self.client_instance. player.getSendToEnemies() + '\n')) if (len( Actions.buildRoadAvailable( self.client_instance.player, True)) > 0): self.client_instance.set_board_action( "roadfree", 'turn') message = board_input.get() board_input.task_done() road = self.client_instance.building_locations.claimRoad( int(message.split(',')[1]), int(message.split(',')[2]), Color) self.client_instance.road_list.append(road) self.client_instance.player.acquireRoad(road) self.client_instance.set_board_updated(True) ClientSocket.send( str.encode(message + ',' + Color + '\n')) ClientSocket.send( str.encode("enemyu," + self.client_instance. player.getSendToEnemies() + '\n')) board_input.task_done() # while turn: elif Response.split(',')[0] == "robber": self.client_instance.game_board.set_robber( (int(Response.split(',')[1]), int(Response.split(',')[2]))) self.client_instance.set_board_updated(True) elif Response.split(',')[0] == "monopoly": self.client_instance.pay_monopoly(Response.split(',')[1]) self.client_instance.set_board_updated(True) elif Response == "notturn": self.client_instance.set_board_action("display", 'display') elif Response.split(',')[0] == "enemy": enemy_list.append( EnemyPlayer( Response.split(',')[1], Response.split(',')[2])) elif Response.split(',')[0] == "enemyu": arr = Response.split(',')[1:] for en in self.client_instance.enemy_list: if en.color == arr[1]: en.updateEnemy(arr) elif Response.split(',')[0] == "winner": self.client_instance.running = False break elif Response != "": print(Response.split(',')[0]) # while True: # Input = input('Say Something: ') # ClientSocket.send(str.encode(Input)) # Response = ClientSocket.recv(1024) # print(Response.decode('utf-8')) # roadMap.printAllSettlements() # roadMap.printAllRoads() self.client_instance.quit() ClientSocket.close()