Quellcode durchsuchen

move player setup into its own function, various 'self' fixes

George C. Privon vor 8 Jahren
Ursprung
Commit
b3686e67f0
1 geänderte Dateien mit 39 neuen und 35 gelöschten Zeilen
  1. 39 35
      cgame.py

+ 39 - 35
cgame.py

@@ -43,10 +43,10 @@ class cgame:
                          ('s', '(current) score and game status'),
                          ('?', 'print help')]
 
-        self.conn = sqlite3.connect('CarcassonneScore.db')
+        self.conn = _sqlite3.connect('CarcassonneScore.db')
         self.cur = self.conn.cursor()
 
-        setupGame()
+        self.setupGame()
 
 
     def showCommands(self):
@@ -73,23 +73,12 @@ class cgame:
         # insert this into the database
 
         # get players for this game
-        dbplayers = getPlayers()
-        for dbplayer in dbplayers:
-            print("{0:d}) ".format(dbplayer[0]) + dbplayer[1])
-        playerinput = input("Please list the IDs for the players in this game (in order of play): ")
-        playerIDs = [int(x) for x in playerinput.split()]
-
-        self.players = []
-        for playerID in playerIDs:
-            for dbplayer in dbplayers:
-                if playerID == dbplayer[0]:
-                    self.players.append((playerID, dbplayer[1]))
-
+        self.getPlayers()
         # general information
-        self.gameID =
+        self.gameID = 0
 
         # get expansions used for this game
-        getExpansions()
+        self.getExpansions()
 
         # game state information
         self.state = 0  # 0 for main game, 1 for postgame, 2 for ended game
@@ -102,14 +91,29 @@ class cgame:
         Get a list of possible players from the database
         """
 
-        players = self.cur.execute('''SELECT * FROM players''').fetchall()
+        self.players = []
 
-        if not len(players):
+        dbplayers = self.cur.execute('''SELECT * FROM players''').fetchall()
+
+        if len(dbplayers):
+            for dbplayer in dbplayers:
+                print("{0:d}) ".format(dbplayer[0]) + dbplayer[1])
+            playerinput = input("Please list the IDs for the players in this game (in order of play): ")
+            playerIDs = [int(x) for x in playerinput.split()]
+
+            for playerID in playerIDs:
+                matched = False
+                for dbplayer in dbplayers:
+                    if playerID == dbplayer[0]:
+                        self.players.append((playerID, dbplayer[1]))
+                        matched = True
+                        continue
+                if not matched:
+                    _sys.stderr.write("Error: player ID {0:d} does not match an option from the list.\n".format(playerID))
+        else:
             _sys.stderr.write("Error: players table empty. Exiting.\n")
             _sys.exit(-1)
 
-        return players
-
 
     def getExpansions(self):
         """
@@ -123,15 +127,15 @@ class cgame:
                 exptype = "mini"
             else:
                 exptype = "large"
-            expans = self.cur.execute('''SELECT expansionID,name FROM expansions WHERE active==1 and mini=={0:d}'''.format(minisel)).fetchall()
+            dbexpans = self.cur.execute('''SELECT expansionID,name FROM expansions WHERE active==1 and mini=={0:d}'''.format(minisel)).fetchall()
 
-            if len(expans):
-                for dbexpan in dbexpan:
+            if len(dbexpans):
+                for dbexpan in dbexpans:
                     print("{0:d}) ".format(dbexpan[0]) + dbexpan[1])
                 expaninput = input("Please list the numbers for the " + exptype + " used in this game: ")
-                expanIDs = [int(x) for x in expanplayer.input.split()]
-                for expanID in expanID:
-                    for dbexpan in dbexpan:
+                expanIDs = [int(x) for x in expaninput.split()]
+                for expanID in expanIDs:
+                    for dbexpan in dbexpans:
                         if expanID == dbexpan[0]:
                             self.expansionIDs.append(expanID)
             else:
@@ -156,7 +160,7 @@ class cgame:
         # if the builder was used
         BUILDERUSED = True
 
-        advanceTurn(cmdtime, gameID, playerID, nturn, builder=BUILDERUSED)
+        advanceTurn(builder=BUILDERUSED)
 
         return 0
 
@@ -166,7 +170,7 @@ class cgame:
         Make a new entry in the turns table
         """
 
-        command = '''INSERT INTO turns VALUES ({0:d}, {1:d}, '''.format(self.gameID, self.nturn)
+        command = '''INSERT INTO turns VALUES ({0:d}, {1:d}, '''.format(self.gameID, self.ntile)
         command = command + cmdtime
         if builder:
             bID = 1
@@ -174,12 +178,12 @@ class cgame:
             bID = 0
 
         # compute playerID based on the turn number minus nbuilders / number of players
-        playerID = playerIDs[(nturns - nbuilder) / lnen(playerIDs)]
+        playerID = playerIDs[(self.ntile- self.nbuilder) / len(playerIDs)]
         command = command + ', {0:d}, {1:d})'.format(bID, playerID)
 
         c.execute(command)
 
-        self.nturn += 1
+        self.ntile += 1
         if builder:
             self.nbuilder += 1
 
@@ -199,11 +203,11 @@ class cgame:
             if self.state:
                 prompt = "postgame > "
             else:
-                prompt = "round: {0:d}, turn: {1:d} > ".format(1 + _np.floor((self.nturn-self.nbuilder) / len(self.playerIDs)),
-                                                               self.nturn-self.nbuilder)
+                prompt = "round: {0:d}, turn: {1:d} > ".format(int(1 + _np.floor((self.ntile-self.nbuilder) / len(self.players))),
+                                                               self.ntile-self.nbuilder)
 
             try:
-                text = input(prompt)
+                cmd = input(prompt)
             except (EOFError, KeyboardInterrupt):
                 _sys.stderr.write('Improper input. Please retry\n')
                 showCommands()
@@ -220,7 +224,7 @@ class cgame:
                 advanceTurn(builder=False)
             elif _re.match('b', cmd, _re.IGNORECASE):
                 advanceTurn(builder=True)
-            elif _re.match('?'. cmd, _re.IGNORECASE):
+            elif _re.match('?', cmd, _re.IGNORECASE):
                 showCommands()
             else:
                 _sys.stderr.write('Command not understood. Please try again.\n')
@@ -256,4 +260,4 @@ class cgame:
 
         print("{0:d} tiles played out of {1:d} total ({2:d} remaining).".format(self.ntiles,
                                                                                 self.totaltiles,
-                                                                                self.totaltiles - self.ntiles)
+                                                                                self.totaltiles - self.ntiles))