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()
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()
"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'))
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:
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_())