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