def roll(json): # rolling a dice gID = json['gID'] uID = json['uID'] roll = double_roll() game = r.getGame(gID) game['lastRoll'] = roll r.setGame(gID, game) if inJail(gID, uID) and not roll['double']: player = r.getPlayers(gID)[uID] if player["public"]["jail"]["turn"] == 4: alert = payToGOOJ(gID, uID, player) if alert["boolean"]: #kill player pass else: getOutOfJail(gID, uID) if player["public"]["jail"]["turn"] == 3: alert = payToGOOJ(gID, uID, player) if alert["boolean"]: ret = helpers.getReturnData(gID, uID, ["ROLLED"], ['ROLL'], alert['alert']) return ret else: getOutOfJail(gID, uID) if inJail(gID, uID): player['public']['jail']['turn'] += 1 incrementTurn(gID) r.setPlayer(gID, uID, player) ret = helpers.getReturnData(gID, uID, [], ['ROLL']) return ret elif inJail(gID, uID) and roll['double']: getOutOfJail(gID, uID) alert = updateLocation(gID, uID, roll['value']) if "card" in alert: card = alert["card"] else: card = False if alert['boolean']: ret = helpers.getReturnData(gID, uID, [], ['ROLL'], alert['alert'], card) if alert["alert"] == "IN JAIL": incrementTurn(gID) return ret else: return ret elif "activity" in alert: if alert['activity'] == "rent": ret = helpers.getReturnData(gID, uID, [], ['ROLL'], alert['activity'], card) incrementTurn(gID) return ret elif card == False: ret = helpers.getReturnData(gID, uID, ["ROLLED"], ['ROLL']) return ret
def payGetOutOfJail(gID, uID): players = r.getPlayers(gID) player = players[uID] alert = payToGOOJ(gID, uID, player) if alert["boolean"] == False: getOutOfJail(gID, uID) ret = helpers.getReturnData(gID, uID) else: ret = helpers.getReturnData(gID, uID, [], [], alert["alert"]) return ret
def ping(json, isTurn): if isTurn: player = r.getPlayers(json['gID'])[json['uID']] if 'ROLLED' in player['options']: ret = helpers.getReturnData(json['gID'], json['uID']) else: ret = helpers.getReturnData(json['gID'], json['uID'], ["ROLL"]) else: ret = helpers.getReturnData(json['gID'], json['uID']) return ret
def ping(json): gID = json['gID'] uID = json['uID'] if isHost(gID, uID): if canStart(gID, uID): ret = helpers.getReturnData(gID, uID, ["START"]) else: ret = helpers.getReturnData(gID, uID, [], ["START"]) else: ret = helpers.getReturnData(gID, uID) return ret
def payMort(json): gID = json["gID"] uID = json["uID"] pID = json['pID'] deeds = r.getDeeds(gID) deed = deeds[pID] mortgageAmount = int(deed["mortgage"] * 1.1) alert = pay(gID, uID, 0, mortgageAmount) if alert["boolean"]: ret = helpers.getReturnData(gID, uID, [], [], alert['alert']) else: deeds[pID]["status"] = "owned" r.setDeeds(gID, deeds) ret = helpers.getReturnData(gID, uID) return ret
def trade(json): alert = {} alert["boolean"] = False gID = json['gID'] uID = json['uID'] if json["tradeStatus"] == "init": alert = initTrade(gID, uID, json['playerNumber'], json["offer"], json["for"]) elif json["tradeStatus"] == "accept": alert = acceptTrade(gID, uID, json["tID"]) elif json["tradeStatus"] == "decline": declineTrade(gID, uID, json["tID"]) if alert["boolean"]: ret = helpers.getReturnData(gID, uID, [], [], alert["alert"]) else: ret = helpers.getReturnData(gID, uID) return ret
def chat(json): gID = json["gID"] uID = json["uID"] player = r.getPlayers(gID)[uID] playerName = player["public"]["name"] number = player["public"]["number"] addChat(gID, playerName, number, json["text"]) ret = helpers.getReturnData(json['gID'], json['uID']) return ret
def mortgage(json): # used to mortgage a property gID = json['gID'] uID = json['uID'] pID = json['pID'] deeds = r.getDeeds(gID) deed = deeds[pID] player = r.getPlayers(gID)[uID] mortgageable = isMortgageable(gID, pID, player['public']['number']) if mortgageable['value'] == False: deed["status"] = "mortgaged" player['money'] += deed['mortgage'] r.setPlayer(gID, uID, player) r.setDeeds(gID, deeds) ret = helpers.getReturnData(gID, uID) else: ret = helpers.getReturnData(gID, uID, [], [], mortgageable['value']) return ret
def buy(json): # if player has option to buy a certain property and chooses to buy gID = json['gID'] uID = json['uID'] pID = json["pID"] players = r.getPlayers(gID) player = players[uID] if player["canBuy"] == pID: deed = r.getDeeds(gID)[pID] alert = pay(gID, uID, 0, deed['price']) if not alert['boolean']: giveProperty(gID, uID, deed) if incrementTurn(gID): ret = helpers.getReturnData(gID, uID, [], ["BUY", "AUCTION", "ROLLED"]) else: ret = helpers.getReturnData(gID, uID, ["ROLL"], ["BUY", "AUCTION", "ROLLED"]) else: ret = helpers.getReturnData(gID, uID, [], [], alert['alert']) return ret
def close(): if hBidder == None or int(hBidder) == 0: for _uID in players: players[_uID]['options'].remove("BID") if "AUCTION" in players[_uID]["options"]: players[_uID]['options'].remove("AUCTION") if "BUY" in players[_uID]["options"]: players[_uID]['options'].remove("BUY") players[_uID]["canBuy"] = None r.setPlayers(gID, players) game['state'] = "PLAYING" r.setGame(gID, game) incrementTurn(gID) return helpers.getReturnData(gID, uID) if int(hBidder) != 0: payUID = None for _uID in players: if players[_uID]["public"]["number"] == int(hBidder): payUID = _uID break alert = pay(gID, payUID, 0, hBidAmount) if not alert['boolean']: deed = r.getDeeds(gID)[game['auction']['pID']] giveProperty(gID, payUID, deed) for _uID in players: players[_uID]['options'].remove("BID") if "AUCTION" in players[_uID]["options"]: players[_uID]['options'].remove("AUCTION") if "BUY" in players[_uID]["options"]: players[_uID]['options'].remove("BUY") players[_uID]["canBuy"] = None r.setPlayers(gID, players) game['state'] = "PLAYING" r.setGame(gID, game) incrementTurn(gID) return helpers.getReturnData(gID, uID) else: return helpers.getReturnData(gID, uID, [], [], alert['alert'])
def build(json, dem=False): # build/demolish gID = json['gID'] uID = json['uID'] pID = json['pID'] if canBuild(gID, uID, pID): deed = r.getDeeds(gID)[pID] cost = deed['housePrice'] if dem: incrementMoney(gID, uID, cost / 2) deed['buildings'] += 1 else: alert = pay(gID, uID, 0, cost) if alert: ret = helpers.getReturnData(gID, uID, [], [], alert) return ret deed['buildings'] += 1 setDeed(gID, uID, pID) ret = helpers.getReturnData(gID, uID) else: alert = "CANNOT BUILD" ret = helpers.getReturnData(gID, uID, [], [], alert) return ret
def getOutOfJail(gID, uID, card=False): ret = None if card: player = r.getPlayers(gID)[uID] if inJail(gID, uID) and (player['public']['GOOJF']['CommunityChest'] or player['public']['GOOJF']['Chance']): deck = None if player['public']['GOOJF']['CommunityChest']: deck = "CommunityChest" elif player['public']['GOOJF']['Chance']: deck = "Chance" player['public']['GOOJF'][deck] = False game = r.getGame(gID) game['takenGOOJF'][deck] = False r.setGame(gID, game) ret = helpers.getReturnData(gID, uID) else: ret = helpers.getReturnData(gID, uID, [], [], "INVALID USE") player = r.getPlayers(gID)[uID] player['public']['jail']['boolean'] = False player['public']['jail']['turn'] = 0 r.setPlayer(gID, uID, player) if card: return ret
def join(json, gID=None): #sets a player ret = {} if gID == None: if "gID" in json: gID = json['gID'] else: gID = helpers.getfirstPublicGame() try: game = r.getGame(gID) if game['playersNo'] == 8: ret['error'] = 'Game is full. Try again.' else: game['playersNo'] += 1 uID = helpers.genID() player = {} player['uID'] = uID player["state"] = "active" player['money'] = getInitJson()['startMoney'] player['options'] = [] player["trade"] = {} player["trade"]["sent"] = {} player["trade"]["recieved"] = [] player['public'] = {} player['public']['name'] = json['name'] player['public']['number'] = game['playersNo'] player['public']['properties'] = getPlayerPropertiesDict() player['public']['GOOJF'] = { "CommunityChest": False, "Chance": False, } player['public']['position'] = 0 player['public']['figurine'] = None player['public']['jail'] = {} player['public']['jail']['boolean'] = False player['public']['jail']['turn'] = 0 player["canBuy"] = None r.setPlayer(gID, uID, player) r.setGame(gID, game) ret = helpers.getReturnData(gID, uID, ["FIGURINE"]) except: ret['error'] = 'join' return ret
def selectFigurine(json): #used in lobby to select players figurine game = r.getGames()[json['gID']] if json['figurine'] in game['figurines']: player = r.getPlayers(json['gID'])[json['uID']] player['public']['figurine'] = json['figurine'] game['figurines'].remove(json['figurine']) r.setPlayer(json['gID'], json['uID'], player) r.setGame(json['gID'], game) ret = helpers.getReturnData(json['gID'], json['uID'], [], ["FIGURINE"]) else: ret = {} ret['error'] = 'figurine' return ret
def start(json): #initialises the board and starts the game gID = json['gID'] uID = json['uID'] if canStart(gID, uID): game = r.getGame(gID) game['state'] = "PLAYING" r.setGame(gID, game) _start(gID) players = r.getPlayers( gID) #add the default options for the PLAYING state to all players for _uID in players: players[_uID]["options"].append("TRADE") players[_uID]["options"].append("MORTGAGE") r.setPlayers(gID, players) ret = helpers.getReturnData(gID, uID, ["ROLL"], ["START"]) else: ret = {} ret['error'] = "START" return ret
def auction(json): # moves the game state into an auction for 30 seconds gID = json['gID'] uID = json['uID'] players = r.getPlayers(gID) player = players[uID] pID = json["pID"] if player["canBuy"] == pID: deed = r.getDeeds(gID)[pID] for _uID in players: players[_uID]['options'] += ["BID"] r.setPlayer(gID, _uID, players[_uID]) game = r.getGame(gID) game['auction'] = {} game['auction']['pID'] = pID game['auction']['highest'] = {0: deed['price'] / 2} game['auction']['out'] = [] game['lastActivity'] = helpers.getTime() game['state'] = "AUCTION" r.setGame(gID, game) ret = helpers.getReturnData(gID, uID, [], ["AUCTION", "BUY"]) return ret
def bid(json): gID = json['gID'] uID = json['uID'] if r.validateUID(json['gID'], json['uID']): game = r.getGame(gID) players = r.getPlayers(gID) player = players[uID] hBidder = None for key in game['auction']['highest']: hBidder = key hBidAmount = game['auction']['highest'][hBidder] def close(): if hBidder == None or int(hBidder) == 0: for _uID in players: players[_uID]['options'].remove("BID") if "AUCTION" in players[_uID]["options"]: players[_uID]['options'].remove("AUCTION") if "BUY" in players[_uID]["options"]: players[_uID]['options'].remove("BUY") players[_uID]["canBuy"] = None r.setPlayers(gID, players) game['state'] = "PLAYING" r.setGame(gID, game) incrementTurn(gID) return helpers.getReturnData(gID, uID) if int(hBidder) != 0: payUID = None for _uID in players: if players[_uID]["public"]["number"] == int(hBidder): payUID = _uID break alert = pay(gID, payUID, 0, hBidAmount) if not alert['boolean']: deed = r.getDeeds(gID)[game['auction']['pID']] giveProperty(gID, payUID, deed) for _uID in players: players[_uID]['options'].remove("BID") if "AUCTION" in players[_uID]["options"]: players[_uID]['options'].remove("AUCTION") if "BUY" in players[_uID]["options"]: players[_uID]['options'].remove("BUY") players[_uID]["canBuy"] = None r.setPlayers(gID, players) game['state'] = "PLAYING" r.setGame(gID, game) incrementTurn(gID) return helpers.getReturnData(gID, uID) else: return helpers.getReturnData(gID, uID, [], [], alert['alert']) if not helpers.checkTime(game['lastActivity'], 30, True): return close() elif json['request'] == "PING": pass elif json['request'] == "BID" and player['public'][ 'number'] not in game['auction']['out']: if (json['amount'] > hBidAmount) and (json['amount'] <= player['money']): newBid = {player['public']['number']: json['amount']} game['auction']['highest'] = newBid r.setGame(json['gID'], game) else: return helpers.getReturnData(gID, uID, [], [], "INSUFFICIENT FUNDS") elif json['request'] == "OUT": if hBidder != player['public']['number']: game['auction']['out'].append(player['public']['number']) r.setGame(json['gID'], game) if len(game['auction']['out']) >= game['playersNo'] - 1 - len( game['spect']): return close() return helpers.getReturnData(gID, uID)