diff --git a/Pendu/GameEngine.swift b/Pendu/GameEngine.swift index d664baeea49513a75c91388fe5bebeaaddfa5c58..e99a54aed2060e237cf16568522c31fb489b48a7 100644 --- a/Pendu/GameEngine.swift +++ b/Pendu/GameEngine.swift @@ -31,6 +31,7 @@ class GameEngine: NSObject { private var playerName : String = ""; private var score : Int = 0; private var combo : Int = 0; + private var remainingLives : Int = 8; private var managedObjectContext: NSManagedObjectContext?; @@ -86,22 +87,28 @@ class GameEngine: NSObject { return word } - //public func startNewGame(difficulty: String) -> Void { - //wordToGuess = WordToGuess(theme: "Animals", difficulty: "Easy") - //} - public func guessLetter(letter: Character) -> Bool { - + if(isGameOver()){ + return false; + } + + guessedLetters.append(letter); + if wordToGuess.contains(letter) { + combo += 1; let dateNow = Date(); - var elapsedTime = 100; // temps au dessus du temps de bonus + let maxElapsedTimeInSecondsForBonus = 100; + var elapsedTimeInSeconds = maxElapsedTimeInSecondsForBonus; // Initialisation au temps max + let baseGuessedLetterBonusPoint = 100; + let baseBonusPoint = 100; + let comboBonusPoints = 50; + var timeBonusMultiplier = 1; if(lastGuessedLetterTime != nil) { - elapsedTime = Int(dateNow.timeIntervalSince(lastGuessedLetterTime!)); + elapsedTimeInSeconds = Int(dateNow.timeIntervalSince(lastGuessedLetterTime!)); } - - var timeBonusMultiplier = 1; + switch difficulty { case "Easy": timeBonusMultiplier = 1; @@ -112,28 +119,39 @@ class GameEngine: NSObject { default: timeBonusMultiplier = 1; } - let bonusPoints = (10 * (timeBonusMultiplier)) - if(elapsedTime < 10) { - score += 100 + bonusPoints; + if(elapsedTimeInSeconds > maxElapsedTimeInSecondsForBonus) { + score += baseGuessedLetterBonusPoint; + } else if(elapsedTimeInSeconds < 10) { + score += baseGuessedLetterBonusPoint + baseBonusPoint * timeBonusMultiplier; } else { - score += 100; + score += baseGuessedLetterBonusPoint + (baseBonusPoint * (elapsedTimeInSeconds / maxElapsedTimeInSecondsForBonus)); + } + if (combo > 1) { + score += (combo - 1) * comboBonusPoints; } + lastGuessedLetterTime = Date(); return true; - } else { - lastGuessedLetterTime = nil; - return false; } - + + remainingLives -= 1; + combo = 0; + lastGuessedLetterTime = nil; + return false; } public func isGameOver() -> Bool { - // Vérification si le jeu est terminé - return false; + if(remainingLives > 0) { + return false; + } + return true; } - public func isLetterGuesses(letter: Character) -> Bool { + public func isLetterGuessed(letter: Character) -> Bool { + if(guessedLetters.contains(letter)) { + return true; + } return false; }