You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
3.7 KiB

//
// MyScene.swift
// ArkitDoushiQi
//
// Created by Enzo JOLYS on 27/05/2024.
//
import Foundation
import SpriteKit
import DouShouQiModel
class GameScene : SKScene {
let imageBoard:SKSpriteNode = SKSpriteNode(imageNamed: "board")
var game:Game = try! Game(withRules: ClassicRules(), andPlayer1: RandomPlayer(withName: "Bot1", andId: .player1)!, andPlayer2: HumanPlayer(withName: "Bot2", andId: .player2,andInputMethod:)!)
static var lastMove:Move? = nil
var pieces: [Owner : [ Animal : SpriteMoople]] = [ .player1 : [ .cat : SpriteMoople(nameImage: "catMeeple", couleur: .red),
.dog : SpriteMoople(nameImage: "dogMeeple", couleur: .red),
.leopard : SpriteMoople(nameImage: "leopardMeeple", couleur: .red),
.lion : SpriteMoople(nameImage: "lionMeeple", couleur: .red),
.rat : SpriteMoople(nameImage: "ratMeeple", couleur: .red),
.wolf : SpriteMoople(nameImage: "wolfMeeple", couleur: .red),
.elephant : SpriteMoople(nameImage: "elephantMeeple", couleur: .red),
.tiger : SpriteMoople(nameImage: "tigerMeeple", couleur: .red)],
.player2 : [ .cat : SpriteMoople(nameImage: "catMeeple", couleur: .blue),
.dog : SpriteMoople(nameImage: "dogMeeple", couleur: .blue),
.leopard : SpriteMoople(nameImage: "leopardMeeple", couleur: .blue),
.lion : SpriteMoople(nameImage: "lionMeeple", couleur: .blue),
.rat : SpriteMoople(nameImage: "ratMeeple", couleur: .blue),
.wolf : SpriteMoople(nameImage: "wolfMeeple", couleur: .blue),
.elephant : SpriteMoople(nameImage: "elephantMeeple", couleur: .blue),
.tiger : SpriteMoople(nameImage: "tigerMeeple", couleur: .blue)]]
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(size: CGSize) {
super.init(size: size)
// -- -- //
scaleMode = .aspectFit
anchorPoint = CGPoint(x: 0.5, y: 0.5)
self.addChild(imageBoard)
// -- -- //
for c in pieces.flatMap({ _,values in return values })
{
self.addChild(c.self.value)
}
displayBoard(board: game.board)
}
func displayBoard(board:Board){
for ligne in 0..<board.grid.count {
for col in 0..<board.grid[ligne].count {
if let piece = board.grid[ligne][col].piece {
if let element = pieces[piece.owner]![piece.animal]{
element.cellPosition = CGPoint(x: ligne, y: col)
}
}
}
}
}
func humanChoseMove(player:HumanPlayer){
return Move(of: player.id, fromRow: <#T##Int#>, andFromColumn: <#T##Int#>, toRow: <#T##Int#>, andToColumn: <#T##Int#>)
}
}