merge louis

pull/25/head
Johan LACHENAL 10 months ago
commit 79ed823763

BIN
.DS_Store vendored

Binary file not shown.

@ -9,7 +9,7 @@ import Foundation
import SpriteKit
import DouShouQiModel
class GameScene: SKScene {
class GameScene: SKScene {
var isGameOver = false
let imageBoard: SKSpriteNode = SKSpriteNode(imageNamed: "board")
var game: Game = try! Game(withRules: ClassicRules(), andPlayer1: HumanPlayer(withName: "Bot1", andId: .player1)!, andPlayer2: RandomPlayer(withName: "Bot2", andId: .player2)!)
@ -40,6 +40,38 @@ import DouShouQiModel
var deplacementPossible: [SKShapeNode] = []
required init?(coder aDecoder: NSCoder) {
self.player1Name = ""
self.player1Image = UIImage()
self.player2Name = ""
self.player2Image = UIImage()
super.init(coder: aDecoder)
}
override init(size: CGSize) {
self.player1Name = ""
self.player1Image = UIImage()
self.player2Name = ""
self.player2Image = UIImage()
super.init(size: size)
// -- -- //
scaleMode = .aspectFit
anchorPoint = CGPoint(x: 0.5, y: 0.5)
imageBoard.zPosition = 0
self.addChild(imageBoard)
// -- -- //
for c in pieces.flatMap({ _,values in return values })
{
c.self.value.refGameScene = self
c.self.value.zPosition = 2
self.addChild(c.self.value)
}
displayBoard(board: game.board)
}
init(size: CGSize, player1Name: String, player1Image: UIImage, player2Name: String, player2Image: UIImage) {
self.player1Name = player1Name
self.player1Image = player1Image
@ -61,14 +93,6 @@ import DouShouQiModel
displayBoard(board: game.board)
}
required init?(coder aDecoder: NSCoder) {
self.player1Name = ""
self.player1Image = UIImage()
self.player2Name = ""
self.player2Image = UIImage()
super.init(coder: aDecoder)
}
func displayBoard(board: Board) {
for ligne in 0..<board.grid.count {
for col in 0..<board.grid[ligne].count {
@ -80,4 +104,4 @@ import DouShouQiModel
}
}
}
}
}

@ -24,20 +24,24 @@ struct GameView: View {
return scene
}
@State var msg: String = "Msg"
@State var msg: String = ""
var body: some View {
ZStack {
Text(msg)
SpriteView(scene: gameScene)
.edgesIgnoringSafeArea(.all)
.task {
gameScene.game.addGameStartedListener { board in startGame() }
gameScene.game.addGameOverListener { board, result, player in gameOver(result: result) }
gameScene.game.addGameOverListener { board, result, player in gameOver(result : result) }
gameScene.game.addGameChangedListener { game in gameChange() }
gameScene.game.addBoardChangedListener { board in boardChange() }
gameScene.game.addMoveChosenCallbacksListener { board, move, player in moveChose(board: board, move: move, player: player) }
gameScene.game.addInvalidMoveCallbacksListener { board, move, player, bool in invalidMove(board: board, move: move, player: player, bool: bool) }
gameScene.game.addPieceRemovedListener { _, _, piece in removePiece(piece: piece) }
gameScene.game.addPlayerNotifiedListener { board, player in
print("Player notif : \(player.id) à toi de jouer ")
msg = "Player notif : \(player.id) à toi de jouer !"
@ -46,6 +50,7 @@ struct GameView: View {
try! await player.chooseMove(in: board, with: gameScene.game.rules)
}
}
try! await gameScene.game.start()
}
@ -87,32 +92,32 @@ struct GameView: View {
}
}
// ------ Listener Methods -------- //
// ------ Listener -------- //
func startGame() {
print("Start game !")
msg = "Start !!"
}
func gameOver(result: Result) {
print("Game over !")
func gameOver(result : Result) { print("Game over !")
msg = "Game over ! "
switch result {
switch result
{
case .winner(let winner, _):
switch winner {
case .player1:
msg += "player 1 wins !"
msg = msg + "player 1 wins !"
case .player2:
msg += "player 2 wins !"
msg = msg + "player 2 wins !"
default:
msg += "equality !"
msg = msg + "equality !"
}
default:
msg = "Game over !"
msg="Game over !"
}
gameScene.isGameOver = true
actionEndGame(scene: gameScene, message: msg)
actionEndGame(scene: gameScene,message: msg)
}
func gameChange() {
@ -124,7 +129,8 @@ struct GameView: View {
gameScene.displayBoard(board: gameScene.game.board)
}
func moveChose(board: Board, move: Move, player: Player) {}
func moveChose(board: Board, move: Move, player: Player) {
}
func invalidMove(board: Board, move: Move, player: Player, bool: Bool) {
if bool {
@ -138,15 +144,15 @@ struct GameView: View {
print("------------")
}
func removePiece(piece: Piece) {
func removePiece(piece:Piece){
print("Remove piece")
if let node = gameScene.pieces[piece.owner]?[piece.animal] {
if let node = gameScene.pieces[piece.owner]![piece.animal] {
actionRemove(size: gameScene.size, node: node, scene: gameScene)
if let node = gameScene.pieces[piece.owner]?[piece.animal] {
print("Remove piece from parent")
}
}
}
// ------------------------- //
}
struct GameView_Previews: PreviewProvider {

Loading…
Cancel
Save