def __init__(self): self.num_of_clients = 0 self.clients = [] # Defining server address and port # 'localhost' or '127.0.0.1' or '' are all same self.host = '127.0.0.1' self.host = self.get_ip() # Use port > 1024, below it all are reserved self.port = 1234 # Creating socket object sock = socket() # Binding socket to a address. bind() takes tuple of host and port. try: sock.bind((self.host, self.port)) except Exception as msg: print "Could not start server.\n", msg print "Restarting the game." main.Begin() sys.exit() # Listening at the address, 5 denotes the number of clients can queue sock.listen(5) start_new_thread(self.server_thread, (sock, ))
def recv(self, clientSocket): jsonData = clientSocket.recv(4196) if not jsonData: print "No data received from server.\nRestarting Game." main.Begin() sys.exit() data = jsonData.split("::") jsonCards = data[0] self.exTurn = self.turn #Keeping last player's turn self.myTurn = int(data[1]) jsonPlayers = data[2] jsonTblCards = data[3] jsonThings = data[4] self.winners = data[5] self.myCards = json.loads(jsonCards) self.tableCards = json.loads(jsonTblCards) self.winners = json.loads(self.winners) self.things = json.loads(jsonThings) self.turn = int(self.things[0]) self.numberOfPlayers = int(self.things[1]) self.exPot = self.pot #Keeping the previous round's pot self.pot = int(self.things[2]) self.toCallAmount = int(self.things[3]) self.infoFlag = int(self.things[4]) self.winCards = self.things[5] self.maxBet = self.things[6] self.resultRating = int(self.things[7]) jsonPlayers = json.loads(jsonPlayers) self.players = {0: []} for key in jsonPlayers: obj = player.Player(jsonPlayers[key]['turn'], jsonPlayers[key]['name']) obj.fold = jsonPlayers[key]['fold'] obj.pot = jsonPlayers[key]['pot'] obj.money = jsonPlayers[key]['money'] obj.currentRoundBet = jsonPlayers[key]['currentRoundBet'] obj.isActive = jsonPlayers[key]['isActive'] self.players[key] = obj self.NAMES = [] self.MONEY = [] self.ROUNDBET = [] for o in range(self.numberOfPlayers): self.NAMES.append(self.players[str(o)].name) self.MONEY.append("$" + str(self.players[str(o)].money)) self.ROUNDBET.append("$" + str(self.players[str(o)].currentRoundBet))
def __init__(self): self.num_of_clients = 0 self.clients = [] # Defining server address and port self.host = '127.0.0.1' #'localhost' or '127.0.0.1' or '' are all same self.host = self.get_ip() self.port = 1234 #Use port > 1024, below it all are reserved #Creating socket object sock = socket() #Binding socket to a address. bind() takes tuple of host and port. try: sock.bind((self.host, self.port)) except Exception as msg: print "Could not start server.\n", msg print "Restarting the game." main.Begin() sys.exit() #print self.get_ip() #print self.get_port() #print self.get_num_of_clients() #print([l for l in ([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][:1], [[(s.connect(('8.8.8.8', 80)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1]]) if l][0][0]) #self.clients.append(sock) #Listening at the address sock.listen(5) #5 denotes the number of clients can queue #t1 = Thread(target=self.serverthread, args=(scriptA + argumentsA)) start_new_thread(self.server_thread, (sock, ))
def main(self, clientSocket, screen): self.turn = -1 self.pot = 0 g = Graphics() while 1: self.recv(clientSocket) self.update_game() g.order_players(self.myTurn, self.numberOfPlayers) g.init_gui(screen, self.myTurn, self.turn, self.numberOfPlayers, self.myCards, self.infoFlag, self.MONEY, self.NAMES, self.ROUNDBET) self.update_screen(screen, g) if self.myTurn == self.turn: g.create_buttons(screen, self.toCallAmount) #Creating all 4 buttons slider1 = mygui.Slider( screen, (450, 450), (self.toCallAmount, self.maxBet)) #Creating the raise slider pygame.display.update() #Displaying the buttons quit = False while not quit: for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() #Slider event handle slider1.event_slider(event, pygame.mouse.get_pos()) slider1.slider_update(screen) #Mouse Hover handling g.mouse_hover(screen, self.toCallAmount) #Mouse click handling isSend, state = g.mouse_click(screen, event, self.toCallAmount, self.maxBet, slider1.getValue()) #Sending data if button clicked if isSend == True: data = clientSocket.send(str(state)) if not data: print "Server not receiving data.\nRestarting Game." main.Begin() sys.exit() quit = True break else: g.remove_buttons(screen) g.create_transparent_buttons(screen) g.slider_remove(screen) pygame.display.update() g.end_hand(screen, self.infoFlag, self.winners, self.winCards, self.resultRating) #Result and winner display pygame.display.update()
def recv(self, clientSocket): #cls() jsonData = clientSocket.recv(4196) if not jsonData: print "No data received from server.\nRestarting Game." main.Begin() sys.exit() data = jsonData.split("::") jsonCards = data[0] self.exTurn = self.turn #Keeping last player's turn self.myTurn = int(data[1]) jsonPlayers = data[2] jsonTblCards= data[3] jsonThings = data[4] self.winners = data[5] self.myCards = json.loads(jsonCards) self.tableCards = json.loads(jsonTblCards) self.winners = json.loads(self.winners) self.things = json.loads(jsonThings) self.turn = int(self.things[0]) self.numberOfPlayers = int(self.things[1]) self.exPot = self.pot #Keeping the previous round's pot self.pot = int(self.things[2]) self.toCallAmount = int(self.things[3]) self.infoFlag = int(self.things[4]) self.winCards = self.things[5] self.maxBet = self.things[6] self.resultRating = int(self.things[7]) #print 'my cards :', self.myCards print 'My Cards' print '=========================' for x in self.myCards: if x[0] == 'S': print 'Spade : ', u'\u2660', elif x[0] == 'H': print 'Heart : ', u'\u2665', elif x[0] == 'D': print 'Diamond : ', u'\u2666', elif x[0] == 'C': print 'Club : ', u'\u2663', if x[1] < 11: print x[1] elif x[1] == 11: print 'Jack' elif x[1] == 12: print 'Queen' elif x[1] == 13: print 'King' elif x[1] == 14: print 'A' print '-------------------------' print 'Table Cards' print '-------------------------' for x in self.tableCards: if x[0] == 'S': print 'Spade : ', u'\u2660', elif x[0] == 'H': print 'Heart : ', u'\u2665', elif x[0] == 'D': print 'Diamond : ', u'\u2666', elif x[0] == 'C': print 'Club : ', u'\u2663', if x[1] < 11: print x[1] elif x[1] == 11: print 'Jack' elif x[1] == 12: print 'Queen' elif x[1] == 13: print 'King' elif x[1] == 14: print 'A' print '=========================' print 'turn : ', self.turn #cls() jsonPlayers = json.loads(jsonPlayers) self.players = {0:[]} for key in jsonPlayers: obj = player.Player(jsonPlayers[key]['turn'], jsonPlayers[key]['name']) obj.fold = jsonPlayers[key]['fold'] obj.pot = jsonPlayers[key]['pot'] obj.money = jsonPlayers[key]['money'] obj.currentRoundBet = jsonPlayers[key]['currentRoundBet'] obj.isActive = jsonPlayers[key]['isActive'] self.players[key] = obj self.NAMES = [] self.MONEY = [] self.ROUNDBET = [] for o in range(self.numberOfPlayers): self.NAMES.append(self.players[str(o)].name) self.MONEY.append("$"+str(self.players[str(o)].money)) self.ROUNDBET.append("$"+str(self.players[str(o)].currentRoundBet))
def main(self, clientSocket, screen): self.turn = -1 self.pot = 0 g = Graphics() while 1: self.recv(clientSocket) self.update_game() g.order_players(self.myTurn, self.numberOfPlayers) g.init_gui(screen, self.myTurn, self.turn, self.numberOfPlayers, self.myCards, self.infoFlag, self.MONEY, self.NAMES, self.ROUNDBET) self.update_screen(screen, g) move_input = raw_input("[C]all $" + str(self.toCallAmount) + " , [f]old, [a]ll-in, [r]aise, [q]uit") if self.myTurn == self.turn: g.create_buttons(screen, self.toCallAmount) #Creating all 4 buttons #slider1 = mygui.Slider(screen,(450,450),(self.toCallAmount, self.maxBet)) #Creating the raise slider pygame.display.update() #Displaying the buttons #Slider event handle #slider1.event_slider(event, pygame.mouse.get_pos()) #slider1.slider_update(screen) print '@@@@@@@@@@@@@@@@@@' state = None if move_input == "q" or move_input == "Q": pygame.quit() sys.exit() elif move_input == "c" or move_input == "C": state = self.toCallAmount elif move_input == "f" or move_input == "F": state = -1 elif move_input == "a" or move_input == "A": state = self.maxBet elif move_input == "r" or move_input == "R": raiseValue = int(raw_input("enter a no between "+str(self.toCallAmount)+" and "+str(self.maxBet) + ": ")) state = raiseValue #Mouse Hover handling g.mouse_hover(screen, self.toCallAmount) print self.toCallAmount, '_____________' #Mouse click handling #isSend, state = g.mouse_click(screen, event, self.toCallAmount, self.maxBet, slider1.getValue()) #print '************', slider1.getValue() #print state, '$$$$$$$$$$$$', isSend,'****#######' #Sending data if button clicked data = clientSocket.send(str(state)) if not data: print "Server not receiving data.\nRestarting Game." main.Begin() sys.exit() else: g.remove_buttons(screen) g.create_transparent_buttons(screen) g.slider_remove(screen) pygame.display.update() g.end_hand(screen, self.infoFlag, self.winners, self.winCards, self.resultRating) #Result and winner display pygame.display.update()