class Guesses(db.Model):
        guesses_id = db.Column(db.Integer, primary_key=True)
        game_id = db.Column(db.Integer, db.ForeignKey('game.game_id'), nullable=False)
        guess = db.Column(db.CHAR, nullable=False)

        def __repr__(self):
            return '<Guess ID %r>' % self.id
Esempio n. 2
0
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64))
    score = db.Column(db.Integer)

    def __repr__(self):
        return '<User %r>' % self.name
Esempio n. 3
0
class System(db.Model):
  """Game System model."""
  id = db.Column(db.Integer, primary_key=True)
  name = db.Column(db.String(80), nullable=False)
  purchased = db.Column(db.Date)
  games = db.relationship('Game', back_populates='system')
  added_by_id = db.Column(db.Integer, db.ForeignKey('user.id'))
  added_by = db.relationship('User')
Esempio n. 4
0
class Game(db.Model):
  """Game model."""
  id = db.Column(db.Integer, primary_key=True)
  title = db.Column(db.String(80), nullable=False)
  genre = db.Column(db.Enum(GameGenre), default=GameGenre.OTHER)
  photo_url = db.Column(URLType)
  purchased = db.Column(db.Date)
  system_id = db.Column(db.Integer, db.ForeignKey('system.id'), nullable=False)
  system = db.relationship('System', back_populates='games')
  added_by_id = db.Column(db.Integer, db.ForeignKey('user.id'))
  added_by = db.relationship('User')
class Game(db.Model):
    game_id = db.Column(db.Integer, primary_key=True)
    word = db.Column(db.String, nullable=False)
    guesses = db.relationship('Guesses', backref='Game', lazy=True)
    correct_guesses = db.Column(db.ARRAY(db.CHAR))
    incorrect_guesses = db.Column(db.Integer, nullable=False, default=0)
    max_guesses = db.Column(db.Integer, nullable=False, default=5)
    message = db.Column(db.String, nullable=False)
    game_over = db.Column(db.Boolean, nullable=False, default=False)

    def __repr__(self):
        return '<Game %r>' % self.id

    class Guesses(db.Model):
        guesses_id = db.Column(db.Integer, primary_key=True)
        game_id = db.Column(db.Integer, db.ForeignKey('game.game_id'), nullable=False)
        guess = db.Column(db.CHAR, nullable=False)

        def __repr__(self):
            return '<Guess ID %r>' % self.id

    def update_incorrect_guesses(self, letter):
        """
        Method to increment incorrect guesses.
        :param letter: Letter guessed.
        :return: Void
        """
        if not self.word.__contains__(letter):
            self.incorrect_guesses += 1

    # Method to update State value of Game State dictionary.  Guessed Letter is placed in correct position in State.
    # Example: Guess l in Hello = **ll*
    def update_state(self, letter):
        """
        Method to update correct gueeses.  Guessed Letter is placed in correct position in State.
        Example: Guess l in Hello = **ll*
        :param letter:
        :return: Void
        """
        for index, element in enumerate(self.word):
            if element == letter:
                self.correct_guesses[index] = letter
            elif element.isalpha():
                self.correct_guesses[index] = element
            else:
                self.correct_guesses[index] = '*'

    def game_win(self):
        """
        Method to determine if User has won game.
        Where State = Word and User has not reached maximum guesses.
        :return: True if joined correct guesses equals word, false otherwise.
        """
        temp = ''.join(self.correct_guesses)
        return temp == self.word

    def game_lose(self):
        """
        Method to determine if user has lost.
        :return: True if incorrect guesses equals max guesses, false otherwise.
        """
        return self.incorrect_guesses == self.max_guesses

    def update_message(self, letter):
        """
         Method to determine correct message based on current game state
        :param letter:
        :return: String
        """
        if self.game_win(self):
            self.message = 'You have won'
        elif self.game_lose(self):
            self.message = 'You have lost'
        elif self.word.__contains__(letter):
            self.message = 'There is a %s' % letter
        else:
            self.message = 'There is no %s' % letter

    def update_game(self, letter):
        """
        Method to update the game based on user input.
        :param letter: Letter guessed.
        :return: Void.
        """
        self.update_incorrect_guesses(self, letter)
        self.update_state(self, letter)
        self.update_message(self, letter)
Esempio n. 6
0
class User(UserMixin, db.Model):
  """User model."""
  id = db.Column(db.Integer, primary_key=True)
  username = db.Column(db.String(25), nullable=False)
  password = db.Column(db.String(80), nullable=False)