|
|
@ -92,21 +92,85 @@ if var board = Board(withGrid: initialBoardConfiguration) {
|
|
|
|
print("Erreur lors de l'initialisation du plateau de jeu.")
|
|
|
|
print("Erreur lors de l'initialisation du plateau de jeu.")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Création des joueurs
|
|
|
|
|
|
|
|
let player1 = HumanPlayer(name: "Joueur 1", id: .player1) { board, rules in
|
|
|
|
|
|
|
|
// Ici, vous pourriez implémenter une logique pour lire le mouvement du joueur depuis la console.
|
|
|
|
|
|
|
|
// Cet exemple ne fournit pas une implémentation fonctionnelle pour la saisie utilisateur.
|
|
|
|
|
|
|
|
// Retournez un mouvement valide ou nil si vous voulez simuler l'interaction.
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
let player2 = RandomPlayer(withName: "IA", andId: .player2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Vérification que les joueurs sont correctement créés (Optional Binding)
|
|
|
|
|
|
|
|
if let player1 = player1, let player2 = player2 {
|
|
|
|
|
|
|
|
// Création des règles
|
|
|
|
|
|
|
|
let rules = VerySimpleRules()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Création du plateau initial
|
|
|
|
|
|
|
|
let board = VerySimpleRules.createBoard()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Configuration et démarrage du jeu
|
|
|
|
|
|
|
|
var game = Game(withRules: rules, andPlayer1: player1, andPlayer2: player2)
|
|
|
|
|
|
|
|
// Configuration des callbacks pour la console
|
|
|
|
|
|
|
|
game.onStart = {
|
|
|
|
|
|
|
|
print("""
|
|
|
|
|
|
|
|
**************************************
|
|
|
|
|
|
|
|
==>> GAME STARTS! <<==
|
|
|
|
|
|
|
|
**************************************
|
|
|
|
|
|
|
|
\(board)
|
|
|
|
|
|
|
|
""")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
game.onNextPlayer = { (player:Player) in
|
|
|
|
|
|
|
|
print("""
|
|
|
|
|
|
|
|
**************************************
|
|
|
|
|
|
|
|
\(player.name), it's your turn!
|
|
|
|
|
|
|
|
**************************************
|
|
|
|
|
|
|
|
\(board)
|
|
|
|
|
|
|
|
""")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
game.onMoveChosen = { (move:Move) in
|
|
|
|
|
|
|
|
print("Move chosen: \(move)")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
game.onInvalidMove = { (error:GameError) in
|
|
|
|
|
|
|
|
print("Invalid move due to \(error). Please try again.")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
game.onBoardChanged = {
|
|
|
|
|
|
|
|
print("Board has changed.\n\(board)")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
game.onGameOver = { (winner: Player?) in
|
|
|
|
|
|
|
|
print("**************************************")
|
|
|
|
|
|
|
|
print("Game Over!!!")
|
|
|
|
|
|
|
|
if let winner = winner {
|
|
|
|
|
|
|
|
print("And the winner is... \(winner.name)!")
|
|
|
|
|
|
|
|
print(winner.id == .player1 ? "Congratulations!" : "Better luck next time!")
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
print("It's a draw!")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
print("**************************************")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// Démarrer le jeu
|
|
|
|
|
|
|
|
game.start()
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
print("Erreur lors de la création des joueurs.")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
// Création des règles et du plateau initial
|
|
|
|
// Création des règles et du plateau initial
|
|
|
|
var rules = VerySimpleRules()
|
|
|
|
var rules = VerySimpleRules()
|
|
|
|
var board = VerySimpleRules.createBoard()
|
|
|
|
var board = VerySimpleRules.createBoard()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
// Simulation du mouvement sur le plateau
|
|
|
|
// Simulation du mouvement sur le plateau
|
|
|
|
if let piece = oldBoard.grid[move.rowOrigin][move.columnOrigin].piece {
|
|
|
|
if let piece = oldBoard.grid[move.rowOrigin][move.columnOrigin].piece {
|
|
|
|
newBoard.grid[move.rowDestination][move.columnDestination].piece = piece
|
|
|
|
newBoard.grid[move.rowDestination][move.columnDestination].piece = piece
|
|
|
|
newBoard.grid[move.rowOrigin][move.columnOrigin].piece = nil
|
|
|
|
newBoard.grid[move.rowOrigin][move.columnOrigin].piece = nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
// Création des joueurs
|
|
|
|
// Création des joueurs
|
|
|
|
let humanPlayer = HumanPlayer(name: "Joueur Humain", id: .player1) { board, rules in
|
|
|
|
let humanPlayer = HumanPlayer(name: "Joueur Humain", id: .player1) { board, rules in
|
|
|
|
// Logique pour permettre à l'utilisateur de choisir un mouvement
|
|
|
|
// Logique pour permettre à l'utilisateur de choisir un mouvement
|
|
|
|