コード例 #1
0
ファイル: gameLib.py プロジェクト: JohnAODowd/monopoly
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
コード例 #2
0
ファイル: gameLib.py プロジェクト: JohnAODowd/monopoly
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
コード例 #3
0
ファイル: gameLib.py プロジェクト: JohnAODowd/monopoly
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
コード例 #4
0
ファイル: lobby.py プロジェクト: JohnAODowd/monopoly
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
コード例 #5
0
ファイル: gameLib.py プロジェクト: JohnAODowd/monopoly
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
コード例 #6
0
ファイル: gameLib.py プロジェクト: JohnAODowd/monopoly
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
コード例 #7
0
ファイル: gameLib.py プロジェクト: JohnAODowd/monopoly
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
コード例 #8
0
ファイル: gameLib.py プロジェクト: JohnAODowd/monopoly
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
コード例 #9
0
ファイル: gameLib.py プロジェクト: JohnAODowd/monopoly
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
コード例 #10
0
ファイル: gameLib.py プロジェクト: JohnAODowd/monopoly
 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'])
コード例 #11
0
ファイル: gameLib.py プロジェクト: JohnAODowd/monopoly
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
コード例 #12
0
ファイル: gameLib.py プロジェクト: JohnAODowd/monopoly
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
コード例 #13
0
ファイル: lobby.py プロジェクト: JohnAODowd/monopoly
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
コード例 #14
0
ファイル: lobby.py プロジェクト: JohnAODowd/monopoly
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
コード例 #15
0
ファイル: lobby.py プロジェクト: JohnAODowd/monopoly
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
コード例 #16
0
ファイル: gameLib.py プロジェクト: JohnAODowd/monopoly
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
コード例 #17
0
ファイル: gameLib.py プロジェクト: JohnAODowd/monopoly
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)