From 4ca3dcabe62c38d948ef087c85b9196f8a0b7ac1 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Fri, 9 Aug 2019 06:40:32 +0200 Subject: [PATCH] Add Simon Light Game --- build/built-jar.properties | 2 +- build/classes/simonlightgame/Layout.fxml | 66 +++++++ .../simonlightgame/LayoutController.class | Bin 0 -> 7014 bytes build/classes/simonlightgame/Main.class | Bin 0 -> 1582 bytes build/classes/simonlightgame/Timer.class | Bin 0 -> 1787 bytes build/classes/utils/Runner.class | Bin 8319 -> 8563 bytes dist/java-fx-8-samples.html | 4 +- dist/java-fx-8-samples.jar | Bin 207882 -> 214591 bytes dist/java-fx-8-samples.jnlp | 2 +- src/simonlightgame/Layout.fxml | 66 +++++++ src/simonlightgame/LayoutController.java | 180 ++++++++++++++++++ src/simonlightgame/Main.java | 45 +++++ src/simonlightgame/Timer.java | 68 +++++++ src/utils/Runner.java | 4 + 14 files changed, 433 insertions(+), 4 deletions(-) create mode 100644 build/classes/simonlightgame/Layout.fxml create mode 100644 build/classes/simonlightgame/LayoutController.class create mode 100644 build/classes/simonlightgame/Main.class create mode 100644 build/classes/simonlightgame/Timer.class create mode 100644 src/simonlightgame/Layout.fxml create mode 100644 src/simonlightgame/LayoutController.java create mode 100644 src/simonlightgame/Main.java create mode 100644 src/simonlightgame/Timer.java diff --git a/build/built-jar.properties b/build/built-jar.properties index 60614ec..61cdadb 100644 --- a/build/built-jar.properties +++ b/build/built-jar.properties @@ -1,4 +1,4 @@ -#Fri, 09 Aug 2019 06:29:16 +0200 +#Fri, 09 Aug 2019 06:39:47 +0200 D\:\\Git-Repos\\java-fx-8-samples= diff --git a/build/classes/simonlightgame/Layout.fxml b/build/classes/simonlightgame/Layout.fxml new file mode 100644 index 0000000..f372c81 --- /dev/null +++ b/build/classes/simonlightgame/Layout.fxml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
diff --git a/build/classes/simonlightgame/LayoutController.class b/build/classes/simonlightgame/LayoutController.class new file mode 100644 index 0000000000000000000000000000000000000000..fd96bd9e41f541b1baa73827b5835fedd780f77e GIT binary patch literal 7014 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 CBTKRX literal 0 HcmV?d00001 diff --git a/build/classes/simonlightgame/Main.class b/build/classes/simonlightgame/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..af8d03875855d7d404042c7e415d3b283dfff92a GIT binary patch literal 1582 zcmZ`(TXWk)7(Ht{k*z2sb)6fff!>{@jerK)l2Rzafl}EiaT;36O>wufiY#ShxedRF z=knlYV20tjFa1ZrSxFwtj2X?WcEA13`Ocoby!!k1KLKpuCmm&&I^M;5MZB-$DmHX{ zfDbiX({NqG4Hf!G$0lx;@G)+w-X|J9)iI6RIzGdeYChLdL`}oCz~oKWccWVZ`RdBP zKw&F*ECpsP*O!f6=Rk&g_JPMp*$P^=w{M588mGZR)ONc9b5_^w1it4w?Z~k^(yZIA zzbP=$jqETISg2Z0?PvCrBa;C~noZSis&YAbq~L1SbOZCwPVJ~A4pQXPf*m?s_Q^5R0(vv(g)O=5D%VQNiFLI+11C|@@TGw}_)1{PvVRGB(fX64 zj;G~*1ADlyVc)J?$`&`N=*Vcx zv%AW*>Pp7dILPgo8Di4BDMEH-H#Sq?Y;uGW*1=XJJid&~`@0rN=2N-KRCD`5-LeAv zu?)GP9y>#l0U|3TQA!exbsIdyJUJsu)1m^4vD9AVdZrgR4iANC@vrKXh#mCT|6lPK zEDJA;;g!#%$2;1r?bmi|0!zt?NAW6$@I1u`Y^7Dlq-0!A*OH0swZq`Ky4mpoUmRZ8 z%n6LAid`AShi2qjXRcQKigeq-bL#f&p5JQY3}2fvpD!Q}9spF>&T(Y&FZiEWeF^b` zogC)bPR7AGEU<4R30TAuM*?r+6k7#;jRHU5hN!Rhkt^r>C>&$rFHF{dMWs9 z{u`#ml|GC=F#YiIOT5uo<7j5BkJ%R_%2C%GH0n}?FQUYDiP2MxFLUNC#!oZ;4z-@; z^Lq~0aXuEdfeFsdGUGJSl#xnQy=A-|b6+Fw4B1TRM4w~cd1lTd_YbM_8ZKzKsNoWX ohUzS9uV6J@+*SS)XO3}V=!{M>FsXpG5qH*bnQ?(DY;#!u7l!(IEC2ui literal 0 HcmV?d00001 diff --git a/build/classes/simonlightgame/Timer.class b/build/classes/simonlightgame/Timer.class new file mode 100644 index 0000000000000000000000000000000000000000..3231f3f090cb1cb200a95f13b32b0a2007865a56 GIT binary patch literal 1787 zcmah~&u<%55dL0bXJdCs+tm5h{A!>S$4$G?HiX7WNMfAS>DCTOnvw#A&H6RobiM1W z*Cjpk4z4K%6*mLgIvkkT@ez&K07}tR2@xL0H;(GxOf}&Fsv)^$&l4 z^DTf&@S^C)g$PdKVuZ}`C|<|J5xjxREG88s**z7-G-e`r6SGk$mCtt8P|D3qfup+R$ZVy!DZMpg({k zb!W&gSY?6kgVbwQQF4QETs zIKK3}O39b`^sXsOzU4Y93JkFjSFz379Tqm5Mb;b^E}JFRc3=v`4)im4CxPL5o`z!; z4d&M7_O<$n&LEeHZ`oRgQZam&#-laPB_BS(d2mJq+RJjMA{~>e*cG%z3y9`C&$y>s zWuF>y;yHiAO+c#=t2;j01l`YpkV?TQXXUORq;r!7!3m7m{`sJOxy@~9avX)`W8SV% zCdZyvx3){eLunc|jayf|7ONRMO5DBmI@M;XWLS=`rCgh95z#Y?SJvkB>uG_L|DL_3 zbDTk0`ZQ6tz+f#(V@7M|mYFrlg>A}kt>8%`FAy%I-qOM`+(eMpT zg^mXZPlg-*W8~k*9B;-PucGrX4EawqVPeggSQTA|VaVUzgz0I<^i4|PreO@ztGxB4FO$dZpi@2K_sXd6V!@nD(@`q&Qob~ zRLWa;g;++3=PWTLa2I3v7#cpstHgSNcrOw2MSO{IJf?q>?{S%;Bq`1`MVi8|n8EMF z_6Jfy<4#fRe*8$RamtgL(`exnijtt#oh9!$I{t#9VC)%Dh7_EmXH3C)2nCu@^9SWq Os86Zef|BCNdhH)wL7eUY literal 0 HcmV?d00001 diff --git a/build/classes/utils/Runner.class b/build/classes/utils/Runner.class index 1fbbdb9681d31c1bee8f34d5be975e9960ec036c..3f9757fde114219976e4127b1bd55d206d9dbf37 100644 GIT binary patch literal 8563 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

wAycN!(_2%{RU@-$P?s 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 diff --git a/dist/java-fx-8-samples.jnlp b/dist/java-fx-8-samples.jnlp index 03cc518..9be5021 100644 --- a/dist/java-fx-8-samples.jnlp +++ b/dist/java-fx-8-samples.jnlp @@ -8,7 +8,7 @@ - + diff --git a/src/simonlightgame/Layout.fxml b/src/simonlightgame/Layout.fxml new file mode 100644 index 0000000..f372c81 --- /dev/null +++ b/src/simonlightgame/Layout.fxml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ diff --git a/src/simonlightgame/LayoutController.java b/src/simonlightgame/LayoutController.java new file mode 100644 index 0000000..bb70de7 --- /dev/null +++ b/src/simonlightgame/LayoutController.java @@ -0,0 +1,180 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package simonlightgame; + +import java.net.URL; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Random; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.application.Platform; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.paint.Color; +import javafx.scene.shape.Circle; + +/** + * + * @author mschw + */ +public class LayoutController implements Initializable { + + @FXML + public Circle cirGreen; + @FXML + public Circle cirRed; + @FXML + public Circle cirYellow; + @FXML + public Circle cirBlue; + @FXML + private Label lblPoints; + @FXML + private Button btnNewGame; + @FXML + private Button btnExit; + + public static ArrayList sequence = new ArrayList<>(); + Circle[] circles = {cirBlue,cirGreen,cirRed,cirYellow}; + Timer timer = new Timer(this); + int stage = 0; + boolean isClickAllowed = true; + Thread animator; + + @Override + public void initialize(URL url, ResourceBundle rb) { + cirBlue.setOnMouseClicked((event) -> { + this.isClickAllowed = false; + new Thread(() -> this.doAnimation("blue")).start(); + this.processCircleClick("blue"); + this.isClickAllowed = true; + }); + + cirGreen.setOnMouseClicked((event) -> { + this.processCircleClick("green"); + }); + + cirRed.setOnMouseClicked((event) -> { + this.processCircleClick("red"); + }); + + cirYellow.setOnMouseClicked((event) -> { + this.processCircleClick("yellow"); + }); + + } + + @FXML + private void handleNewGame(ActionEvent event) { + this.sequence = new ArrayList<>(); + this.makeSequence(); + //this.showSequence(); + } + + @FXML + private void handleExit(ActionEvent event) { + System.exit(0); + } + + private void processCircleClick(String who) { + + switch (who) { + case "blue": + + break; + + case "red": + + break; + + case "green": + + break; + + case "yellow": + + break; + } + } + + private void showSequence() { + timer.start(); + } + + private void makeSequence() { + Random rd = new Random(); + for (int i = sequence.size(); i < 3 + stage; i++) { + sequence.add(circles[rd.nextInt(4)]); + } + printSequence(); + } + + private void doAnimation(String who) { + switch (who) { + case "blue": + Platform.runLater(() -> cirBlue.setFill(Color.LIGHTBLUE)); + try { + Thread.sleep(400); + } catch (InterruptedException ex) { + } + Platform.runLater(() -> cirBlue.setFill(Color.BLUE)); + break; + + case "red": + Platform.runLater(() -> cirRed.setFill(Color.PINK)); + try { + Thread.sleep(400); + } catch (InterruptedException ex) { + } + Platform.runLater(() -> cirRed.setFill(Color.RED)); + break; + + case "green": + Platform.runLater(() -> cirGreen.setFill(Color.LIGHTGREEN)); + try { + Thread.sleep(400); + } catch (InterruptedException ex) { + } + Platform.runLater(() -> cirGreen.setFill(Color.GREEN)); + break; + + case "yellow": + Platform.runLater(() -> cirYellow.setFill(Color.CORNSILK)); + try { + Thread.sleep(400); + } catch (InterruptedException ex) { + } + Platform.runLater(() -> cirYellow.setFill(Color.YELLOW)); + break; + } + } + + private void printSequence() { + System.out.println("Die aktuelle Sequenz ist: "); + String seq = new String(); + for (Circle circle : sequence) { + if (circle.equals(cirBlue)) { + seq += "blue "; + } + if (circle.equals(cirGreen)) { + seq += "green "; + } + if (circle.equals(cirRed)) { + seq += "red "; + } + if (circle.equals(cirYellow)) { + seq += "yellow "; + } + } + System.out.println(seq); + } + +} diff --git a/src/simonlightgame/Main.java b/src/simonlightgame/Main.java new file mode 100644 index 0000000..81dc702 --- /dev/null +++ b/src/simonlightgame/Main.java @@ -0,0 +1,45 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package simonlightgame; + +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; + +/** + * + * @author mschw + */ +public class Main extends Application { + + @Override + public void start(Stage stage) { + Parent root = null; + try { + root = FXMLLoader.load(getClass().getResource("Layout.fxml")); + } catch (IOException ex) { + Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); + } + + Scene scene = new Scene(root); + + stage.setScene(scene); + stage.show(); + } + + /** + * @param args the command line arguments + */ + public static void main(String[] args) { + launch(args); + } + +} diff --git a/src/simonlightgame/Timer.java b/src/simonlightgame/Timer.java new file mode 100644 index 0000000..cbaf063 --- /dev/null +++ b/src/simonlightgame/Timer.java @@ -0,0 +1,68 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package simonlightgame; + +import java.util.ArrayList; +import javafx.animation.AnimationTimer; +import javafx.application.Platform; +import javafx.scene.paint.Color; +import javafx.scene.shape.Circle; + +/** + * + * @author mschw + */ +public class Timer extends AnimationTimer { + + private LayoutController controller; + + Timer(LayoutController controller) { + controller = this.controller; + } + + @Override + public void handle(long now) { + for (Circle circle : LayoutController.sequence) { + if (circle.equals(controller.cirBlue)) { + controller.cirBlue.setFill(Color.LIGHTBLUE); + try { + Thread.sleep(400); + } catch (InterruptedException ex) { + } + controller.cirBlue.setFill(Color.BLUE); + } + + if (circle.equals(controller.cirGreen)) { + controller.cirGreen.setFill(Color.LIGHTGREEN); + try { + Thread.sleep(400); + } catch (InterruptedException ex) { + } + controller.cirGreen.setFill(Color.GREEN); + } + + if (circle.equals(controller.cirRed)) { + controller.cirRed.setFill(Color.PINK); + try { + Thread.sleep(400); + } catch (InterruptedException ex) { + } + controller.cirRed.setFill(Color.RED); + } + + if (circle.equals(controller.cirYellow)) { + controller.cirYellow.setFill(Color.CORNSILK); + try { + Thread.sleep(400); + } catch (InterruptedException ex) { + } + controller.cirYellow.setFill(Color.YELLOW); + + } + + } + } +} \ No newline at end of file diff --git a/src/utils/Runner.java b/src/utils/Runner.java index ad53d5e..af47762 100644 --- a/src/utils/Runner.java +++ b/src/utils/Runner.java @@ -144,6 +144,10 @@ public class Runner extends Application{ btn24.setOnAction(event -> new chatspammer.Main().start(new Stage())); gridpane.add(btn24, 2, 9); + Button btn25 = new Button("Start Simon Light Game"); + btn25.setOnAction(event -> new simonlightgame.Main().start(new Stage())); + gridpane.add(btn25, 0, 10); + ScrollPane root = new ScrollPane(gridpane); Scene scene = new Scene(root, 600, 400);