Example #1
0
    def gameStub(self):

        print("Welcome to {} Engine Stub".format(self.getGame()))

        if not db.isConnected():
            db.connectDB("../db/gamelog.db")

        playersOrder = []
        validPlayers = db.getPlayerNicks()
        maxPlayers = self.getGameMaxPlayers()

        nplayers = readInput(
            "Number of players: ",
            int,
            lambda x: x >= 2 and x <= maxPlayers,
            "Sorry, number of players must be between 2 and {}.".format(self.getGameMaxPlayers()),
        )

        for i in range(1, nplayers + 1):
            print("Player {} Info:".format(i))
            nick = readInput("Nick: ", str, lambda x: x in validPlayers, "Sorry, player not found in DB")
            self.addPlayer(nick)
            playersOrder.append(nick)

        self.begin()
        option = readInput("Dealing policy[0:None/1:RoundRobin/2:Winner]: ", int, lambda x: x in [0, 1, 2])
        if option == 0:
            self.setDealingPolicy(RoundGameEngine.NoDealer)
        elif option == 1:
            self.setDealingPolicy(RoundGameEngine.RRDealer)
        elif option == 2:
            self.setDealingPolicy(RoundGameEngine.WinnerDealer)
        self.extraStubConfig()
        self.runStubRoundLoop()
Example #2
0
 def __init__(self, translator=None, qt_translator=None, parent=None):
     super(MainWindow, self).__init__(parent)
     db.connectDB()
     self.openedGames = []
     self.translator = translator
     self.qt_translator = qt_translator
     self.initUI()
Example #3
0
                                   "SELECT idMatch FROM MatchPlayer "
                                   "WHERE nick IN ({0}) "
                                   "GROUP BY idMatch "
                                   "HAVING COUNT(*)={1} and idMatch NOT IN ("
                                   "SELECT idMatch FROM MatchPlayer "
                                   "WHERE nick NOT IN ({0})))")
                self._newclause = self._newclause.format(players_str,
                                                         len(self.players))
                self._lastwinnerquery = self._lastwinnerquerybase.replace(
                    'WHERE', "WHERE {} AND".format(self._newclause))
                self._generalmatchstatsquery = \
                    self._generalmatchstatsquerybase.replace(
                        'WHERE', "WHERE {} AND".format(self._newclause))
                self._generalplayerstatsquery = \
                    self._generalplayerstatsquerybase.replace(
                        'WHERE', "WHERE {} AND".format(self._newclause))


if __name__ == "__main__":
    db = GameLogDB()
    db.connectDB("../db/gamelog.db")
#     se = StatsEngine()
#     se.update()
#     print(se.getMatchGameStats('Phase10Master'))
#     print(se.getPlayerGameStats('Phase10Master'))

    pse = ParticularStatsEngine()
    pse.update(['Xavi', 'Rosa', 'Dani', 'Joan'])
    print(pse.getMatchGameStats('Phase10Master'))
    print(pse.getPlayerGameStats('Phase10Master'))
Example #4
0
            
        for idMatch,match in self.candidates.items():
            cur = db.execute("SELECT nick FROM MatchPlayer WHERE idMatch={}".format(idMatch))
            for row in cur:
                match['players'].append(str(row['nick']))

    def getCandidates(self): return self.candidates
    
    def resume(self,idMatch):
        engine = GameEngineFactory.createMatch(self.game)
        if engine and engine.resume(idMatch): return engine
        return None
        
        
if __name__ == "__main__":
    if not db.isConnected(): db.connectDB("../db/gamelog.db")
    game = readInput('Game to play (Phase10/Phase10Master/Remigio/Ratuki/Carcassone): ',str,lambda x: x in ['Phase10','Phase10Master','Remigio','Ratuki','Carcassone'])
    re = ResumeEngine(game)
    candidates = re.getCandidates()
    if not len(candidates):
        print("No {} matches to restore found".format(game))
        exit()
    else:
        print("Matches to restore:")
        for idMatch,match in candidates.items():
            print("{}) {} player match started at {}. Time played: {}. Players:{}".format(idMatch,len(match['players']),match['started'],match['elapsed'],match['players']))
        print("")
        idMatch = readInput('idMatch to resume: ',int,lambda x: x in candidates.keys())
        print("Restoring match #{}".format(idMatch))
        engine = re.resume(idMatch)
        if not engine:
Example #5
0
    def retrievePlayers(self):
        players = list()
        for i in range(self.rowCount()):
            nick = str(self.item(i).text())
            players.append(nick)
        return players

    def itemFromPlayer(self, player):
        for i in range(self.rowCount()):
            item = self.item(i)
            nick = str(item.text())
            if nick == player:
                return item
        return None


if __name__ == "__main__":
    import sys
    from controllers.db import db
    from controllers.enginefactory import GameEngineFactory
    db.connectDB()
    app = QApplication(sys.argv)
    engine = GameEngineFactory.createMatch('Pocha')
    players = ['Xavi', 'Rosa', 'Dani']
    for p in players:
        engine.addPlayer(p)
    engine.begin()
    mw = PlayerOrderDialog(engine)
    mw.show()
    sys.exit(app.exec_())