diff --git a/Pendu/GameViewController.swift b/Pendu/GameViewController.swift index 947bd311b0721a9094e8a7934c3c649ebe6c4475..018d09c7af30d3ddf152bc7c393dd60d9f709881 100644 --- a/Pendu/GameViewController.swift +++ b/Pendu/GameViewController.swift @@ -29,10 +29,7 @@ extension UIView { } class GameViewController: UIViewController { - - let mainstoryboard = UIStoryboard(name: "Game", bundle: nil) - var wordToGuess : String = "" - + @IBOutlet weak var wordLabel: UILabel! @IBOutlet weak var A_Button: UIButton! @@ -141,22 +138,23 @@ class GameViewController: UIViewController { InputButton(inputButton: N_Button) } + + func InputButton(inputButton: UIButton) { guard let letter = inputButton.titleLabel?.text else { return } - guessLetter(Character(letter)) + guessLetter(String(letter)) inputButton.isEnabled = false } - - func penduImage(nameFile: String) { - let image = UIImage(named: nameFile) - let imageView = UIImageView(image: image!) - imageView.frame = CGRect(x: 50, y: 250, width: 250, height: 250) - view.addSubview(imageView) - } - var currentWordState = "" + + var currentWordState: [String] = [] + var wordToGuess : String = "" + + var isWordFound = false + + var incorrectGuesses = 0 override func viewDidLoad() { view.addBackground() @@ -164,8 +162,8 @@ class GameViewController: UIViewController { print(wordToGuess) initializeWordState() updateWordLabel() + updateImage() - penduImage(nameFile: "humain8") let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 40)) label.center = CGPoint(x: 170, y: 230) label.font = UIFont(name: "whatever it takes", size: 40) @@ -176,30 +174,140 @@ class GameViewController: UIViewController { } func initializeWordState() { - for _ in wordToGuess { - currentWordState += "_" - } - } + let words = wordToGuess.components(separatedBy: " ") + print(words) + for word in words { + var wordState = "" + for _ in word { + wordState += "_" + } + currentWordState.append(wordState) + } + } func updateWordLabel() { - wordLabel.text = currentWordState + let wordString = currentWordState.joined(separator: " ") + wordLabel.text = wordString } - func guessLetter(_ letter:Character) { - let guessedLetter = letter.uppercased() - guard wordToGuess.contains(guessedLetter) - else { - return + func checkIfWordFound() { + if currentWordState.joined() == wordToGuess { + isWordFound = true + wordLabel.textColor = UIColor.green + A_Button.isHidden = true + Z_Button.isHidden = true + E_Button.isHidden = true + R_Button.isHidden = true + T_Button.isHidden = true + Y_Button.isHidden = true + U_Button.isHidden = true + I_Button.isHidden = true + O_Button.isHidden = true + P_Button.isHidden = true + Q_Button.isHidden = true + S_Button.isHidden = true + D_Button.isHidden = true + F_Button.isHidden = true + G_Button.isHidden = true + H_Button.isHidden = true + J_Button.isHidden = true + K_Button.isHidden = true + L_Button.isHidden = true + M_Button.isHidden = true + W_Button.isHidden = true + X_Button.isHidden = true + C_Button.isHidden = true + V_Button.isHidden = true + B_Button.isHidden = true + N_Button.isHidden = true } - for (index, char) in wordToGuess.enumerated() { - if char.uppercased() == guessedLetter { - let startIndex = currentWordState.startIndex - let offsetIndex = currentWordState.index(startIndex, offsetBy: index) - - currentWordState.replaceSubrange(offsetIndex...offsetIndex, with: String(char)) + } + + func guessLetter(_ letter:String) { + let guessedLetter = letter.uppercased() + + var updateWordState = currentWordState + + var guessedCorrectly = false + + for (wordIndex, word) in wordToGuess.components(separatedBy: " ").enumerated() { + var updateWord = "" + let wordCharacters = Array(currentWordState[wordIndex]) + for (charIndex, char) in word.enumerated() { + let currentChar = String(char) + + if currentChar.uppercased() == guessedLetter { + updateWord += currentChar + guessedCorrectly = true + } else { + let currentWordStateChar = String(wordCharacters[charIndex]) + updateWord += currentWordStateChar + } + } + updateWordState[wordIndex] = updateWord } + currentWordState = updateWordState + updateWordLabel() + checkIfWordFound() + + if !guessedCorrectly { + updateImage() + } + + } + + + func updateImage() { + let maxIncorrectGuesses = 8 + + let imageName: String + + incorrectGuesses += 1 + + if incorrectGuesses <= maxIncorrectGuesses - 1 { + imageName = "humain\(incorrectGuesses)" + } else { + imageName = "humain8" + wordLabel.textColor = UIColor.red + wordLabel.text = "Perdu" + A_Button.isHidden = true + Z_Button.isHidden = true + E_Button.isHidden = true + R_Button.isHidden = true + T_Button.isHidden = true + Y_Button.isHidden = true + U_Button.isHidden = true + I_Button.isHidden = true + O_Button.isHidden = true + P_Button.isHidden = true + Q_Button.isHidden = true + S_Button.isHidden = true + D_Button.isHidden = true + F_Button.isHidden = true + G_Button.isHidden = true + H_Button.isHidden = true + J_Button.isHidden = true + K_Button.isHidden = true + L_Button.isHidden = true + M_Button.isHidden = true + W_Button.isHidden = true + X_Button.isHidden = true + C_Button.isHidden = true + V_Button.isHidden = true + B_Button.isHidden = true + N_Button.isHidden = true + } + + let image = UIImage(named: imageName) + let imageView = UIImageView(image: image!) + imageView.frame = CGRect(x: 50, y: 250, width: 250, height: 250) + view.addSubview(imageView) + + if let image = UIImage(named: imageName) { + imageView.image = image } - updateWordLabel() } + + }