From 373c1416e7229f9ee912c6c2708921fd277f59e7 Mon Sep 17 00:00:00 2001 From: "johan.lachenal" Date: Fri, 14 Jun 2024 09:52:31 +0200 Subject: [PATCH] Add(2DAnimations): fireworks and winning text --- .../ArkitDoushiQi.xcodeproj/project.pbxproj | 4 + .../ArkitDoushiQi/Game/GameView.swift | 20 +++- .../Game/SKActions/actionEndGame.swift | 100 ++++++++++++++---- .../Game/SKAnimations/FireworkLaunch.sks | Bin 0 -> 3646 bytes .../Game/SKAnimations/Fireworks.sks | Bin 3646 -> 3699 bytes 5 files changed, 101 insertions(+), 23 deletions(-) create mode 100644 ArkitDoushiQi/ArkitDoushiQi/Game/SKAnimations/FireworkLaunch.sks diff --git a/ArkitDoushiQi/ArkitDoushiQi.xcodeproj/project.pbxproj b/ArkitDoushiQi/ArkitDoushiQi.xcodeproj/project.pbxproj index 8f9dcf9..a75f232 100644 --- a/ArkitDoushiQi/ArkitDoushiQi.xcodeproj/project.pbxproj +++ b/ArkitDoushiQi/ArkitDoushiQi.xcodeproj/project.pbxproj @@ -27,6 +27,7 @@ C2DCC2BB2C19849A008AB78F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C2DCC2B92C19849A008AB78F /* Assets.xcassets */; }; C2DCC2BD2C19869B008AB78F /* Fireworks.sks in Resources */ = {isa = PBXBuildFile; fileRef = C2DCC2BC2C19869B008AB78F /* Fireworks.sks */; }; C2DCC2BF2C198702008AB78F /* actionEndGame.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2DCC2BE2C198702008AB78F /* actionEndGame.swift */; }; + C2E32ED52C1C24A800DD37B6 /* FireworkLaunch.sks in Resources */ = {isa = PBXBuildFile; fileRef = C2E32ED42C1C24A800DD37B6 /* FireworkLaunch.sks */; }; C2F015092C09D366000F7221 /* LanguageSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2F015082C09D366000F7221 /* LanguageSettings.swift */; }; C2F0150C2C09D3A4000F7221 /* KeyboardReadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2F0150B2C09D3A4000F7221 /* KeyboardReadable.swift */; }; C2F015102C09D3C3000F7221 /* Language.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2F0150E2C09D3C3000F7221 /* Language.swift */; }; @@ -87,6 +88,7 @@ C2DCC2B92C19849A008AB78F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; C2DCC2BC2C19869B008AB78F /* Fireworks.sks */ = {isa = PBXFileReference; lastKnownFileType = file.sks; path = Fireworks.sks; sourceTree = ""; }; C2DCC2BE2C198702008AB78F /* actionEndGame.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = actionEndGame.swift; sourceTree = ""; }; + C2E32ED42C1C24A800DD37B6 /* FireworkLaunch.sks */ = {isa = PBXFileReference; lastKnownFileType = file.sks; path = FireworkLaunch.sks; sourceTree = ""; }; C2F015082C09D366000F7221 /* LanguageSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LanguageSettings.swift; sourceTree = ""; }; C2F0150B2C09D3A4000F7221 /* KeyboardReadable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyboardReadable.swift; sourceTree = ""; }; C2F0150E2C09D3C3000F7221 /* Language.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Language.swift; sourceTree = ""; }; @@ -267,6 +269,7 @@ C2DCC2B82C19849A008AB78F /* Magic.sks */, C2DCC2B92C19849A008AB78F /* Assets.xcassets */, C2DCC2BC2C19869B008AB78F /* Fireworks.sks */, + C2E32ED42C1C24A800DD37B6 /* FireworkLaunch.sks */, ); path = SKAnimations; sourceTree = ""; @@ -468,6 +471,7 @@ buildActionMask = 2147483647; files = ( C2DCC2BD2C19869B008AB78F /* Fireworks.sks in Resources */, + C2E32ED52C1C24A800DD37B6 /* FireworkLaunch.sks in Resources */, C205A2BE2BF373380097BD93 /* Preview Assets.xcassets in Resources */, C2DCC2BA2C19849A008AB78F /* Magic.sks in Resources */, C2DCC2B62C1980A9008AB78F /* Spark.sks in Resources */, diff --git a/ArkitDoushiQi/ArkitDoushiQi/Game/GameView.swift b/ArkitDoushiQi/ArkitDoushiQi/Game/GameView.swift index dbf77e5..e4b3db4 100644 --- a/ArkitDoushiQi/ArkitDoushiQi/Game/GameView.swift +++ b/ArkitDoushiQi/ArkitDoushiQi/Game/GameView.swift @@ -22,7 +22,7 @@ struct GameView: View { SpriteView(scene: gameScene).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() } @@ -52,9 +52,23 @@ struct GameView: View { } func gameOver(result : Result) { print("Game over !") -// if(result) msg = "Game over ! " - actionEndGame(scene: gameScene) + switch result + { + case .winner(let winner, _): + switch winner { + case .player1: + msg = msg + "player 1 wins !" + case .player2: + msg = msg + "player 2 wins !" + default: + msg = msg + "equality !" + } + default: + msg="Game over !" + } +// foreach gameScene.pieces + actionEndGame(scene: gameScene,message: msg) } func gameChange() { print("Game change !") } diff --git a/ArkitDoushiQi/ArkitDoushiQi/Game/SKActions/actionEndGame.swift b/ArkitDoushiQi/ArkitDoushiQi/Game/SKActions/actionEndGame.swift index 5d724ae..7bd2c0b 100644 --- a/ArkitDoushiQi/ArkitDoushiQi/Game/SKActions/actionEndGame.swift +++ b/ArkitDoushiQi/ArkitDoushiQi/Game/SKActions/actionEndGame.swift @@ -8,35 +8,95 @@ import Foundation import SpriteKit -func actionEndGame(scene : SKScene) { +func actionEndGame(scene: SKScene, message: String) { let size = scene.size + var delay: TimeInterval = 0.0 for _ in 0..<5 { - // Créer un effet de particule pour les feux d'artifice - if let fireworkEmitter = SKEmitterNode(fileNamed: "Spark.sks") { - // Position aléatoire pour chaque feu d'artifice - let randomX = CGFloat.random(in: 0.. UIColor { - let red = CGFloat.random(in: 0...1) - let green = CGFloat.random(in: 0...1) - let blue = CGFloat.random(in: 0...1) - return UIColor(red: red, green: green, blue: blue, alpha: 1.0) + let red = CGFloat.random(in: 0...1) + let green = CGFloat.random(in: 0...1) + let blue = CGFloat.random(in: 0...1) + return UIColor(red: red, green: green, blue: blue, alpha: 1.0) } diff --git a/ArkitDoushiQi/ArkitDoushiQi/Game/SKAnimations/FireworkLaunch.sks b/ArkitDoushiQi/ArkitDoushiQi/Game/SKAnimations/FireworkLaunch.sks new file mode 100644 index 0000000000000000000000000000000000000000..fa19c94602773380577cae6cf63424aec5c3d581 GIT binary patch literal 3646 zcmZ`*3v?9a75-))^Unih32#IVZWO73E`n6?K@tK;BT2{-vRO#}Om-*9z-D)ynIIuz z#~!P;)@QBODg`4b6+QSyrAV!yt)5a3v}%1GTMt^bzNNKR+B>s5%j(h1$;_Sq-v2(o zd;h;XpD`>u7W*><1Q0|BVTfQDk*Hd$o0gHwwpVFps?VUWgn2|&;dx0p+IfrMz$xn+|1={=LARC5t)vWI0iT3CftgR;ONHfxD(rP zH+JAb?8GB@0WacJyoNXMH@tQwEIlW);qo; zu&T`JVjhX`lxx2(qi54z1S<=Ck9MQTQ)osiqsLu;;`#*xx)^RSXBlo9l6=t5 z$f|-$PeWZN&zVNAk<~H_GMZ(zmjd9Cijr>6`qErlZ{vMNI;~SuCziSCvHie!WKwCL zZ_#(Fom1Ck(x$86o3h*D2j|A(X45ZGJvFpjwj^KY>r8TMO{!TNu=I3!KrLU%iCc2t zxXbW>;A`+bCQTkbjP(>BQN6nD+BS79)wdv*wQN%}vbL4rTFT9&#Um4VkD+JMOR_x~ zFWtV0az_?-^5%x-zCp`KS#`NI;b~MUFSVYc&Qf?D0!#k+CG-8Gqy9{fF<@qzAm-ZX5Tl0SxL2l|_fsJE8q7WNxd zucOY?X7YWS@63v-lnd()zpFie+W0yzJ4L^IU&}K{eIDVOZJS2-fKAOzb++25elFY+ zym*YXajQ>D>t-i6i^IlK-$6i0=^34R+nYa;Qr(y9>+AtjZ|C`9SC#{&w%mS8J10|S zy=H4P%X|-cWNJy5mvgW477;FUrXR7xqVqq5_lwquZ4+yVbi`<3g-Aqe<`h1n^AFjn zN}{7R^@SA&4s(u)2#!LO6rF!?_Uszs&>}5FYbNlwE8Wi!ap9=m6VdsHdy$=cpUkYMCU_R$fmTTE+=E;T1!%>dM%L1Nap-VKZ(^ z7Ao(eD^Vb+f{k&nl*1%2oM?(1!4 zrl}3yj%~OL!=%gmlnUGL!5y^cAnx^)-G}?}07=Xw^je!YJ0lCq9>T+`8sqhb*Fl;& zIE;rd+!1eZA#CerBTd-XBN04`$FK{(!EQW`J>=SN@dSQ{C$Sg%@D!e=`^9!VgJ-?> zYV4=?b94wEp#Sao3!YDM!}5AfPrKxzjFHdl=~iyhfJ^d}nag|VcXec@x zs{boq&B+Rt->GoIkw9W-?wsn%xpOx7Vz0Ym&R8d0#`(La;7#Hjaut|l+*L516a=Zy zhYHB4t{j?GT{&w5sVYO93oU=)Jr{z`Bo}L*WTB`Z;-mI>LowiCd`Qq3np<5tJGLR| zDxNVb7K?3&P%}ETJJ6RH$KOIz7B&G@dg(Sg!dNR%IC5)WqfS?R}k>P7JP{# z_@4l$(wXX<=tQ>&0U;=ags@ZPoaCJBOmjw-55@*71PnOrOUiO61LIutj z#^4oUY%2w{xQ?2jaAeS(NN$6}9D4)7z%hZUz&U|MfsTL`7z|t$*c!Mu@Oa?az-xhb zg2CXpU}bPd@a*8C;L2bscyaKT!7agE!KZ^S2M+~53LXhf2*pBYg%*U`LS3Qtq02)z zhPH)vhMo((5;`0XhShLY_^j}fa3b6j{z3S<@aFJ6;RnLcgkKGRB90Kph*QPs;u+#X zF(Gz|hIoPKh*yiZiQC0T#C_tQ#FxY)3`}MfY%DvDoxo0Ev)DX#HanNqusT-H7P0f# zG8Sj8tc`WCZkA>}tdFf`8J1-ivO)Gkb}74zUBQ0Be#U;zZelmHTi8aniEU$dvAfwr zY$tn^?P9yx9`*!#lI>$pvp=x?>}B>A`B>nzx=X%NPb&>M}ANKObI9< zMN~#9Q8GfPE}7=<7!?VP%l=mRIgI6QEyd;)g9{d>Wk_d>ObhL RpcC=YaEw-%bn`=kpQv=*Ctb+0#PG z1aj<1tIqOQPOX%MQArguT}dvNJ0->C@wi>787{Zi<95%QG2!n{b9vk;-i);Lbhjtn zli~I5er1oeM_G&PXsg$b37s;TF$q1^87pkZ+HotE6f7tyF4cH`nlw>d=gLQb9oM5!#DCueu|&xE&K`ZPLXqDo?In2$-Ocp>*ZB>Q$CmPeUa)|HfoK>F<6#;kLKNcN(BU8Zwq)Mi^zZAro)BX1U4SYRXNesWR0jXdajs=C%3Y WK!>3M$fqAgrVdX8M){N&mzD%{uxVHHCJJugGPGc05ic+v(TF z6K)-{>a9Yr@XA+qpdDmwvxBWkJH$V35<{b3T34+`JIoHx+Mb!@E^?PN*5)EpO}5H=^0|C3XH|el z1*=FEqc*5ym96qrfhtyBbxvJZw^g?qR^#fOS^x_Wf*=GUU^PU;T1bE-NQP8MgRPJb z8Q_AQup4qA4+@|V_JbRWp%lvCFnHkr}l%@6q}CfOhL6x?CUA zXLODB>GQf)H|Q4KrhCysgJI}EC$7T;OhXsuUzp6T7e*A7Kyn zVm}VxAP(UZe2QZ@fm8Ser|}!k5hFp0mXd><6hmt$mNrv5Wsr+y|KI%h3)dZ_i~s-t