Skip to content
Snippets Groups Projects
Commit 79adf337 authored by yanis's avatar yanis
Browse files

Merge remote-tracking branch 'refs/remotes/origin/main'

parents 6dd843a2 40b1bb16
Branches
No related tags found
No related merge requests found
......@@ -155,6 +155,10 @@ class GameEngine: NSObject {
return false;
}
public func getScore() -> Int {
return self.score;
}
public func saveScore() -> Void {
// Enregistrement du score dans la base Core Data
......@@ -179,5 +183,78 @@ class GameEngine: NSObject {
static func getOnlineScoreboard() -> Void {
// Récupération du classement depuis le serveur
// URL de l'API
let url = URL(string: "https://miscs.sl-projects.com/IUT-ORSAY/LP-PRISM/TP-iOS/")!
// Création de la tâche de session URLSessionDataTask pour récupérer les données
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
// Vérification des erreurs et de la disponibilité des données
guard let data = data, error == nil else {
print("Erreur lors de la récupération des données : \(error?.localizedDescription ?? "Erreur inconnue")")
return
}
// Récupération du contexte Core Data
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
print("Impossible d'obtenir l'AppDelegate")
return
}
let managedContext = appDelegate.persistentContainer.viewContext
do {
// Décodage du JSON en une liste de dictionnaires
guard let jsonArray = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] else {
print("Le JSON n'est pas au format attendu.")
return
}
// Utilisation des données JSON
for jsonScore in jsonArray {
// Création d'une instance NSManagedObject pour le score
let scoreObject = Score(context: managedContext)
// Association des valeurs du JSON aux attributs du modèle Core Data
scoreObject.categoryName = jsonScore["categoryName"] as? String ?? ""
scoreObject.difficulty = jsonScore["difficulty"] as? String ?? ""
scoreObject.playerName = jsonScore["playerName"] as? String ?? ""
if let scoreValue = jsonScore["score"] as? Int {
scoreObject.score = Int16(scoreValue)
} else if let scoreValueString = jsonScore["score"] as? String,
let scoreValue = Int(scoreValueString) {
scoreObject.score = Int16(scoreValue)
} else {
scoreObject.score = 0 // Valeur par défaut si le score ne peut pas être extrait du JSON
}
}
// Sauvegarde du contexte Core Data
do {
try managedContext.save()
} catch {
print("Erreur lors de la sauvegarde du contexte Core Data : \(error.localizedDescription)")
}
// Récupération des scores enregistrés dans une liste
let fetchRequest = NSFetchRequest<Score>(entityName: "Score")
let fetchedScores = try managedContext.fetch(fetchRequest)
// Utilisation de la liste de scores
for fetchedScore in fetchedScores {
print("Category: \(fetchedScore.categoryName)")
print("Difficulty: \(fetchedScore.difficulty)")
print("Player Name: \(fetchedScore.playerName)")
print("Score: \(fetchedScore.score)")
print("------------------------")
}
} catch {
print("Erreur lors du décodage JSON : \(error.localizedDescription)")
}
}
// Lancement de la tâche
task.resume()
}
}
......@@ -30,9 +30,6 @@ 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
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment