diff --git a/DouShouQiIOS/DouShouQiIOS/Class/GameScene.swift b/DouShouQiIOS/DouShouQiIOS/Class/GameScene.swift index 5821cf6..2ceeb01 100644 --- a/DouShouQiIOS/DouShouQiIOS/Class/GameScene.swift +++ b/DouShouQiIOS/DouShouQiIOS/Class/GameScene.swift @@ -11,80 +11,49 @@ import SpriteKit import SwiftUI class GameScene : SKScene{ + + @ObservedObject var gameVm : GameVM = GameVM(andPlayer1: Player(withName: "Meruemu", andId: .player1)!, + andPlayer2: Player(withName: "Kumogi", andId: .player2)!) + + let imgBoard : SKSpriteNode = SKSpriteNode(imageNamed: "BoardImg") let defaultSize : CGSize = CGSize(width: 120, height: 120) + var game : Game = try! Game(withRules: ClassicRules(), andPlayer1: Player(withName: "Meruemu", andId: .player1)!, andPlayer2: Player(withName: "Kumogi", andId: .player2)!) - - let pieces : [ Owner : [Animal : SpriteMeeple]] = - [ .player1 : [ - .rat : SpriteMeeple(imageName: "RatMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), - .cat : SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), - .dog : SpriteMeeple(imageName: "DogoMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), - .wolf : SpriteMeeple(imageName: "WolfMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), - .leopard : SpriteMeeple(imageName: "LeoMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), - .tiger : SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), - .lion : SpriteMeeple(imageName: "LionMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), - .elephant : SpriteMeeple(imageName: "ElphMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), - ], - - .player2: [ - .rat : SpriteMeeple(imageName: "RatMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), - .cat : SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), - .dog : SpriteMeeple(imageName: "DogoMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), - .wolf : SpriteMeeple(imageName: "WolfMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), - .leopard : SpriteMeeple(imageName: "LeoMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), - .tiger : SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), - .lion : SpriteMeeple(imageName: "LionMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), - .elephant : SpriteMeeple(imageName: "ElphMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), - ] - ] + +// let pieces : [ Owner : [Animal : SpriteMeeple]] = +// [ +// .player1 : [ +// .rat : SpriteMeeple(imageName: "RatMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), +// .cat : SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), +// .dog : SpriteMeeple(imageName: "DogoMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), +// .wolf : SpriteMeeple(imageName: "WolfMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), +// .leopard : SpriteMeeple(imageName: "LeoMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), +// .tiger : SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), +// .lion : SpriteMeeple(imageName: "LionMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), +// .elephant : SpriteMeeple(imageName: "ElphMeeple", size: CGSize(width: 120, height: 120), color: Color.player1), +// ], +// +// .player2: [ +// .rat : SpriteMeeple(imageName: "RatMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), +// .cat : SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), +// .dog : SpriteMeeple(imageName: "DogoMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), +// .wolf : SpriteMeeple(imageName: "WolfMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), +// .leopard : SpriteMeeple(imageName: "LeoMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), +// .tiger : SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), +// .lion : SpriteMeeple(imageName: "LionMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), +// .elephant : SpriteMeeple(imageName: "ElphMeeple", size: CGSize(width: 120, height: 120), color: Color.player2), +// ] +// ] override init(size s: CGSize){ super.init(size: s) self.addChild(imgBoard) self.displayBoard(game.board) - /* - let cat = SpriteMeeple(imageName: "CatMeeple") - cat.position = CGPoint(x: 300, y: 200) - cat.imageNode.size = CGSize(width: 120, height: 120) - self.addChild(cat) - - let rat = SpriteMeeple(imageName: "RatMeeple") - rat.position = CGPoint(x: 200, y: 100) - rat.imageNode.size = CGSize(width: 120, height: 120) - self.addChild(rat) - - let dog = SpriteMeeple(imageName: "DogoMeeple") - dog.position = CGPoint(x: 200, y: 300) - dog.imageNode.size = CGSize(width: 120, height: 120) - self.addChild(dog) - - let cat2 = SpriteMeeple(imageName: "CatMeeple") - cat2.position = CGPoint(x: 300, y: -200) - cat2.imageNode.size = CGSize(width: 120, height: 120) - self.addChild(cat2) - - let rat2 = SpriteMeeple(imageName: "RatMeeple") - rat2.position = CGPoint(x: 200, y: -100) - rat2.imageNode.size = CGSize(width: 120, height: 120) - self.addChild(rat2) - - let dog2 = SpriteMeeple(imageName: "DogoMeeple") - dog2.position = CGPoint(x: 200, y: -300) - dog2.imageNode.size = CGSize(width: 120, height: 120) - self.addChild(dog2) - - let wolf = SpriteMeeple(imageName: "WolfMeeple") - wolf.position = CGPoint(x: 300, y: 0) - wolf.imageNode.size = CGSize(width: 120, height: 120) - self.addChild(wolf) - */ - - - + self.scaleMode = .aspectFit self.anchorPoint = CGPoint(x: 0.5, y:0.5) } @@ -93,9 +62,9 @@ class GameScene : SKScene{ for row in 0.. Int { + var temp: Int? + while temp == nil { + print(message) + let result = readLine() + temp = Int(result ?? "") + } + return temp! + } + + func readMove(from player: HumanPlayer) -> Move? { + var originRow, originCol, destRow, destCol : Int? + + originRow = readInt(withMessage: "\(player.name) please enter the origin row in which your piece is)") + originCol = readInt(withMessage: "\(player.name) please enter the origin column in which your piece is)") + destRow = readInt(withMessage: "\(player.name) please enter the destination row in which you want to move your piece)") + destCol = readInt(withMessage: "\(player.name) please enter the destination column in which you want to move your piece)") + + return Move(of: player.id, fromRow: originRow!, andFromColumn: originCol!, toRow: destRow!, andToColumn: destCol!) + } + + + + func startGame() async throws -> Int + { +// if (player1 == nil || player2 == nil){ +// //Affichage de l'erreur +// return 1 +// } + + var game: Game = try Game(withRules: actualRules, andPlayer1: player1, andPlayer2: player2) + + for player in game.players { + if player.value is HumanPlayer { + let hp = player.value as! HumanPlayer + hp.changeInput(input: readMove) + } + } + + game.addGameStartedListener {_ in + self.displayMessage = "🎉 GAME STARTS! 🎉" + } + + game.addPlayerNotifiedListener({ board, player in + + self.displayMessage = "Player \(player.id == .player1 ? "🟡 1" : "🔴 2") - \(player.name), it's your turn!" + //try! await Persistance.saveGame(withName: "game", andGame: game2) + + _ = readLine() + + if player is HumanPlayer { + var move = self.readMove(from: player as! HumanPlayer) + try! await (player as! HumanPlayer).chooseMove(move) + } else { + _ = try! await player.chooseMove(in: board, with: game.rules) + } + }) + + return 0 + } +} diff --git a/DouShouQiIOS/DouShouQiIOS/Class/SpriteMeeple.swift b/DouShouQiIOS/DouShouQiIOS/Class/SpriteMeeple.swift index 29119a9..81b0444 100644 --- a/DouShouQiIOS/DouShouQiIOS/Class/SpriteMeeple.swift +++ b/DouShouQiIOS/DouShouQiIOS/Class/SpriteMeeple.swift @@ -86,6 +86,7 @@ class SpriteMeeple : SKNode{ self.position.y = (calcy.rounded(.toNearestOrAwayFromZero))*100; } + } required init?(coder aDecoder: NSCoder) {