Skip to content
Snippets Groups Projects
Commit 0dbe1a4d authored by Sofiane Lasri's avatar Sofiane Lasri
Browse files

Calcul du score du joueur & gestion des vies.

parent bf8376a5
No related branches found
No related tags found
No related merge requests found
...@@ -31,6 +31,7 @@ class GameEngine: NSObject { ...@@ -31,6 +31,7 @@ class GameEngine: NSObject {
private var playerName : String = ""; private var playerName : String = "";
private var score : Int = 0; private var score : Int = 0;
private var combo : Int = 0; private var combo : Int = 0;
private var remainingLives : Int = 8;
private var managedObjectContext: NSManagedObjectContext?; private var managedObjectContext: NSManagedObjectContext?;
...@@ -86,22 +87,28 @@ class GameEngine: NSObject { ...@@ -86,22 +87,28 @@ class GameEngine: NSObject {
return word return word
} }
//public func startNewGame(difficulty: String) -> Void {
//wordToGuess = WordToGuess(theme: "Animals", difficulty: "Easy")
//}
public func guessLetter(letter: Character) -> Bool { public func guessLetter(letter: Character) -> Bool {
if(isGameOver()){
return false;
}
guessedLetters.append(letter);
if wordToGuess.contains(letter) { if wordToGuess.contains(letter) {
combo += 1;
let dateNow = Date(); 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) { if(lastGuessedLetterTime != nil) {
elapsedTime = Int(dateNow.timeIntervalSince(lastGuessedLetterTime!)); elapsedTimeInSeconds = Int(dateNow.timeIntervalSince(lastGuessedLetterTime!));
} }
var timeBonusMultiplier = 1;
switch difficulty { switch difficulty {
case "Easy": case "Easy":
timeBonusMultiplier = 1; timeBonusMultiplier = 1;
...@@ -112,28 +119,39 @@ class GameEngine: NSObject { ...@@ -112,28 +119,39 @@ class GameEngine: NSObject {
default: default:
timeBonusMultiplier = 1; timeBonusMultiplier = 1;
} }
let bonusPoints = (10 * (timeBonusMultiplier))
if(elapsedTime < 10) { if(elapsedTimeInSeconds > maxElapsedTimeInSecondsForBonus) {
score += 100 + bonusPoints; score += baseGuessedLetterBonusPoint;
} else if(elapsedTimeInSeconds < 10) {
score += baseGuessedLetterBonusPoint + baseBonusPoint * timeBonusMultiplier;
} else { } else {
score += 100; score += baseGuessedLetterBonusPoint + (baseBonusPoint * (elapsedTimeInSeconds / maxElapsedTimeInSecondsForBonus));
}
if (combo > 1) {
score += (combo - 1) * comboBonusPoints;
} }
lastGuessedLetterTime = Date(); lastGuessedLetterTime = Date();
return true; return true;
} else {
lastGuessedLetterTime = nil;
return false;
} }
remainingLives -= 1;
combo = 0;
lastGuessedLetterTime = nil;
return false;
} }
public func isGameOver() -> Bool { public func isGameOver() -> Bool {
// Vérification si le jeu est terminé if(remainingLives > 0) {
return false; return false;
} }
return true;
}
public func isLetterGuesses(letter: Character) -> Bool { public func isLetterGuessed(letter: Character) -> Bool {
if(guessedLetters.contains(letter)) {
return true;
}
return false; return false;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment