Add Player + Concession + getWagons
This commit is contained in:
		@@ -5,7 +5,6 @@ import os
 | 
			
		||||
import random
 | 
			
		||||
import jsonpickle
 | 
			
		||||
 | 
			
		||||
# Class for Circus: list of <number> wagons, of the 5 colors
 | 
			
		||||
class Circus:
 | 
			
		||||
  # There are:
 | 
			
		||||
  # 4 wagons of each colors (until 2 players' stop)
 | 
			
		||||
@@ -26,17 +25,68 @@ class Circus:
 | 
			
		||||
        color = colors[random.randint(0, 4)]
 | 
			
		||||
      self.wagons.append(color)
 | 
			
		||||
      remaining[color] = remaining[color] - 1
 | 
			
		||||
    self.state = 0 # 0 means Circus is not used in game yet, 1 means next wagon in list is #1, and so on
 | 
			
		||||
 | 
			
		||||
  def getWagon(self):
 | 
			
		||||
    if self.state == 0:
 | 
			
		||||
      print("Circus is not or no longer in game.")
 | 
			
		||||
      return False
 | 
			
		||||
    print("Player obtained a " + self.wagons[self.state - 1] + "circus sticker!")
 | 
			
		||||
    self.state = self.state + 1
 | 
			
		||||
    if self.state == len(self.wagons) - 1:
 | 
			
		||||
      print("Circus stickers are now depleted.")
 | 
			
		||||
      self.state = 0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ConcessionCard: # name may be different in English
 | 
			
		||||
  # Each card contains:
 | 
			
		||||
  # 6 cities to connect to the player's concession. There is no need to implement those.
 | 
			
		||||
  # 7 gold "pepites", as rewards when the player succefully connects a city to their concession. The player can choose
 | 
			
		||||
  # which "pepite" to earn, and then discovers the associated reward (between 11 and 17 coins).
 | 
			
		||||
  # A ConcessionCard is then composed of 7 pepites, with the rewards randomly distributed.
 | 
			
		||||
  def __init__(self):
 | 
			
		||||
    availableValues = [11, 12, 13, 14, 15, 16, 17]
 | 
			
		||||
    pepitesNb = len(availableValues) - 1
 | 
			
		||||
    self.pepites = []
 | 
			
		||||
    for n in range(0, 7):
 | 
			
		||||
      choice = random.randint(0, pepitesNb - n)
 | 
			
		||||
      self.pepites.append(availableValues[choice])
 | 
			
		||||
      availableValues.pop(choice)
 | 
			
		||||
    self.taken = []
 | 
			
		||||
 | 
			
		||||
  def getReward(self, choice):
 | 
			
		||||
    if choice in self.taken:
 | 
			
		||||
      print(str(choice) + " has already been obtained.")
 | 
			
		||||
      return False
 | 
			
		||||
    self.taken.append(choice)
 | 
			
		||||
    print("Congrats! You obtained $" + str(self.pepites[choice]))
 | 
			
		||||
    return True
 | 
			
		||||
 | 
			
		||||
class Player:
 | 
			
		||||
  def __init__(self, color):
 | 
			
		||||
    self.color = color
 | 
			
		||||
    self.concession = ConcessionCard()
 | 
			
		||||
 | 
			
		||||
class Game:
 | 
			
		||||
 | 
			
		||||
  # initGame() is used to generate all data for a campaign and initialize status variables
 | 
			
		||||
  def initGame(self, playersNb):
 | 
			
		||||
    self.circusList = Circus(playersNb)
 | 
			
		||||
    # Game status
 | 
			
		||||
    self.year = 1858
 | 
			
		||||
 | 
			
		||||
    # General data to generate
 | 
			
		||||
    self.circus = Circus(playersNb)
 | 
			
		||||
    # Mama O'Connell
 | 
			
		||||
    # Treasures
 | 
			
		||||
    # Concessions
 | 
			
		||||
    self.circusState = 0 # 0 means Circus is not used in game yet, 1 means next wagon in list is #1, and so on
 | 
			
		||||
    self.year = 1858
 | 
			
		||||
 | 
			
		||||
    # Players
 | 
			
		||||
    self.players = []
 | 
			
		||||
    for n in range(0, playersNb):
 | 
			
		||||
      color = input("Enter the player's color: ")
 | 
			
		||||
      self.players.append(Player(color))
 | 
			
		||||
 | 
			
		||||
  # TODO: print status of the game (year, players (color, concession pepites), circus next wagon, treasures remaining to find)
 | 
			
		||||
  #def printStatus(self):
 | 
			
		||||
 | 
			
		||||
  def saveData(self):
 | 
			
		||||
    savefile = open('./savefile.json', 'w+')
 | 
			
		||||
@@ -49,11 +99,33 @@ def loadData():
 | 
			
		||||
  data = jsonpickle.decode(content)
 | 
			
		||||
  return data
 | 
			
		||||
 | 
			
		||||
# Test of data generation
 | 
			
		||||
 | 
			
		||||
# TESTS
 | 
			
		||||
playersNb = 3
 | 
			
		||||
 | 
			
		||||
# Test of data generation
 | 
			
		||||
# myGame = Game()
 | 
			
		||||
# myGame.initGame(playersNb)
 | 
			
		||||
# myGame.saveData()
 | 
			
		||||
myGame = loadData()
 | 
			
		||||
print(myGame.year)
 | 
			
		||||
print(myGame.circusList.wagons)
 | 
			
		||||
 | 
			
		||||
# Test of data loading
 | 
			
		||||
# myGame = loadData()
 | 
			
		||||
# print(myGame.year)
 | 
			
		||||
# print(myGame.circus.wagons)
 | 
			
		||||
 | 
			
		||||
# Test of ConcessionCard
 | 
			
		||||
cc = ConcessionCard()
 | 
			
		||||
userChoice = 3
 | 
			
		||||
print(cc.pepites)
 | 
			
		||||
cc.getReward(userChoice - 1)
 | 
			
		||||
print(cc.pepites)
 | 
			
		||||
print(cc.taken)
 | 
			
		||||
cc.getReward(userChoice - 1)
 | 
			
		||||
print(cc.pepites)
 | 
			
		||||
print(cc.taken)
 | 
			
		||||
 | 
			
		||||
# Test of Player
 | 
			
		||||
# myGame = Game()
 | 
			
		||||
# myGame.initGame(playersNb)
 | 
			
		||||
# print(myGame.players[1].color)
 | 
			
		||||
# print(myGame.players[1].concession.pepites)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user