parent
e4e06c168f
commit
cdd4d02e18
@ -0,0 +1,21 @@
|
|||||||
|
//
|
||||||
|
// File.swift
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Created by Louis Dufour on 29/01/2024.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
public class HumanPlayer: Player {
|
||||||
|
private var inputMethod: ((Board, VerySimpleRules) -> Move?)
|
||||||
|
|
||||||
|
public init?(name: String, id: Owner, inputMethod: @escaping (Board, VerySimpleRules) -> Move?) {
|
||||||
|
self.inputMethod = inputMethod
|
||||||
|
super.init(name: name, id: id)
|
||||||
|
}
|
||||||
|
|
||||||
|
public override func chooseMove(board: Board, rules: VerySimpleRules) -> Move? {
|
||||||
|
return inputMethod(board, rules) // Utilise la méthode de saisie injectée pour obtenir le mouvement
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
//
|
||||||
|
// File.swift
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Created by Louis Dufour on 29/01/2024.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
public class Player {
|
||||||
|
public let id: Owner
|
||||||
|
public let name: String
|
||||||
|
|
||||||
|
// Initialiseur de la classe Player.
|
||||||
|
public init?(name: String, id: Owner) {
|
||||||
|
self.name = name
|
||||||
|
self.id = id
|
||||||
|
}
|
||||||
|
|
||||||
|
// Méthode chooseMove qui doit être surchargée dans les classes dérivées.
|
||||||
|
public func chooseMove(board: Board, rules: VerySimpleRules) -> Move? {
|
||||||
|
// Dans la classe de base, cette méthode ne fait rien.
|
||||||
|
// Les classes dérivées implémenteront leur propre logique.
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
//
|
||||||
|
// File.swift
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Created by Louis Dufour on 29/01/2024.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
public class RandomPlayer: Player {
|
||||||
|
|
||||||
|
public override func chooseMove(board: Board, rules: VerySimpleRules) -> Move? {
|
||||||
|
let validMoves = rules.getMoves(board: board, owner: self.id)
|
||||||
|
return validMoves.randomElement() // Sélectionne un mouvement aléatoire parmi les mouvements valides
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue