IQ PUZZLER FINAL VERSION
By downloading this source code and providing the javafx and sqlite libraries you can run the game.
diff --git a/.DS_Store b/.DS_Store
index c4dded4..9a10e61 100644
--- a/.DS_Store
+++ b/.DS_Store
Binary files differ
diff --git a/images/.DS_Store b/images/.DS_Store
new file mode 100644
index 0000000..becd9b0
--- /dev/null
+++ b/images/.DS_Store
Binary files differ
diff --git a/images/LastBoard.png b/images/LastBoard.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/boardLast.png b/images/boardLast.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/boardpic1.png b/images/boardpic1.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/emptySquare.png b/images/emptySquare.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/gift.png b/images/gift.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/hammer.png b/images/hammer.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/hammer20.png b/images/hammer20.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/ice.png b/images/ice.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/ice2.png b/images/ice2.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/ice3.png b/images/ice3.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/k-november-brain-games.jpg b/images/k-november-brain-games.jpg
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/lastBoardVersion.png b/images/lastBoardVersion.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/loadgame/.DS_Store b/images/loadgame/.DS_Store
new file mode 100644
index 0000000..8b87839
--- /dev/null
+++ b/images/loadgame/.DS_Store
Binary files differ
diff --git a/images/loadgame/levelEight.png b/images/loadgame/levelEight.png
new file mode 100644
index 0000000..9718466
--- /dev/null
+++ b/images/loadgame/levelEight.png
Binary files differ
diff --git a/images/loadgame/levelEightU.png b/images/loadgame/levelEightU.png
new file mode 100644
index 0000000..1a8c1db
--- /dev/null
+++ b/images/loadgame/levelEightU.png
Binary files differ
diff --git a/images/loadgame/levelFive.png b/images/loadgame/levelFive.png
new file mode 100644
index 0000000..4c22d7b
--- /dev/null
+++ b/images/loadgame/levelFive.png
Binary files differ
diff --git a/images/loadgame/levelFiveU.png b/images/loadgame/levelFiveU.png
new file mode 100644
index 0000000..ad0c8f9
--- /dev/null
+++ b/images/loadgame/levelFiveU.png
Binary files differ
diff --git a/images/loadgame/levelFour.png b/images/loadgame/levelFour.png
new file mode 100644
index 0000000..96358c9
--- /dev/null
+++ b/images/loadgame/levelFour.png
Binary files differ
diff --git a/images/loadgame/levelFourU.png b/images/loadgame/levelFourU.png
new file mode 100644
index 0000000..9a9acad
--- /dev/null
+++ b/images/loadgame/levelFourU.png
Binary files differ
diff --git a/images/loadgame/levelNine.png b/images/loadgame/levelNine.png
new file mode 100644
index 0000000..a1ba7e3
--- /dev/null
+++ b/images/loadgame/levelNine.png
Binary files differ
diff --git a/images/loadgame/levelNineU.png b/images/loadgame/levelNineU.png
new file mode 100644
index 0000000..1264284
--- /dev/null
+++ b/images/loadgame/levelNineU.png
Binary files differ
diff --git a/images/loadgame/levelOne.png b/images/loadgame/levelOne.png
new file mode 100644
index 0000000..9000ddd
--- /dev/null
+++ b/images/loadgame/levelOne.png
Binary files differ
diff --git a/images/loadgame/levelSeven.png b/images/loadgame/levelSeven.png
new file mode 100644
index 0000000..d640be5
--- /dev/null
+++ b/images/loadgame/levelSeven.png
Binary files differ
diff --git a/images/loadgame/levelSix.png b/images/loadgame/levelSix.png
new file mode 100644
index 0000000..aa352fb
--- /dev/null
+++ b/images/loadgame/levelSix.png
Binary files differ
diff --git a/images/loadgame/levelSixU.png b/images/loadgame/levelSixU.png
new file mode 100644
index 0000000..e572715
--- /dev/null
+++ b/images/loadgame/levelSixU.png
Binary files differ
diff --git a/images/loadgame/levelTen.png b/images/loadgame/levelTen.png
new file mode 100644
index 0000000..935c831
--- /dev/null
+++ b/images/loadgame/levelTen.png
Binary files differ
diff --git a/images/loadgame/levelTenU.png b/images/loadgame/levelTenU.png
new file mode 100644
index 0000000..322f5b7
--- /dev/null
+++ b/images/loadgame/levelTenU.png
Binary files differ
diff --git a/images/loadgame/levelThree.png b/images/loadgame/levelThree.png
new file mode 100644
index 0000000..8b519c1
--- /dev/null
+++ b/images/loadgame/levelThree.png
Binary files differ
diff --git a/images/loadgame/levelThreeU.png b/images/loadgame/levelThreeU.png
new file mode 100644
index 0000000..212327f
--- /dev/null
+++ b/images/loadgame/levelThreeU.png
Binary files differ
diff --git a/images/loadgame/levelTwo.png b/images/loadgame/levelTwo.png
new file mode 100644
index 0000000..98fa45d
--- /dev/null
+++ b/images/loadgame/levelTwo.png
Binary files differ
diff --git a/images/loadgame/levelTwoU.png b/images/loadgame/levelTwoU.png
new file mode 100644
index 0000000..ab60cb8
--- /dev/null
+++ b/images/loadgame/levelTwoU.png
Binary files differ
diff --git a/images/loadgame/levenSevenU.png b/images/loadgame/levenSevenU.png
new file mode 100644
index 0000000..7b1e74a
--- /dev/null
+++ b/images/loadgame/levenSevenU.png
Binary files differ
diff --git a/images/menu/.DS_Store b/images/menu/.DS_Store
new file mode 100644
index 0000000..f56051e
--- /dev/null
+++ b/images/menu/.DS_Store
Binary files differ
diff --git a/images/menu/gameOverStar.png b/images/menu/gameOverStar.png
new file mode 100644
index 0000000..aa39c73
--- /dev/null
+++ b/images/menu/gameOverStar.png
Binary files differ
diff --git a/images/menu/gameover.png b/images/menu/gameover.png
new file mode 100644
index 0000000..bd1227d
--- /dev/null
+++ b/images/menu/gameover.png
Binary files differ
diff --git a/images/menu/pauseButton.png b/images/menu/pauseButton.png
new file mode 100644
index 0000000..901f3a3
--- /dev/null
+++ b/images/menu/pauseButton.png
Binary files differ
diff --git a/images/p1.png b/images/p1.png
old mode 100644
new mode 100755
index 6ff4141..8aaec97
--- a/images/p1.png
+++ b/images/p1.png
Binary files differ
diff --git a/images/p10.png b/images/p10.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/p10Version2.png b/images/p10Version2.png
new file mode 100755
index 0000000..7f293e6
--- /dev/null
+++ b/images/p10Version2.png
Binary files differ
diff --git a/images/p11.png b/images/p11.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/p12.png b/images/p12.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/p2.png b/images/p2.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/p3Version2.png b/images/p3Version2.png
new file mode 100644
index 0000000..26f920f
--- /dev/null
+++ b/images/p3Version2.png
Binary files differ
diff --git a/images/p5.png b/images/p5.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/images/p6Version2.png b/images/p6Version2.png
new file mode 100644
index 0000000..4902494
--- /dev/null
+++ b/images/p6Version2.png
Binary files differ
diff --git a/images/p7.png b/images/p7.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/out/.DS_Store b/out/.DS_Store
new file mode 100644
index 0000000..a1c437e
--- /dev/null
+++ b/out/.DS_Store
Binary files differ
diff --git a/out/production/.DS_Store b/out/production/.DS_Store
new file mode 100644
index 0000000..204e584
--- /dev/null
+++ b/out/production/.DS_Store
Binary files differ
diff --git a/out/production/IQPuzzlerPro/.DS_Store b/out/production/IQPuzzlerPro/.DS_Store
new file mode 100644
index 0000000..fd4b8e2
--- /dev/null
+++ b/out/production/IQPuzzlerPro/.DS_Store
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/AdditionController$1.class b/out/production/IQPuzzlerPro/sample/AdditionController$1.class
new file mode 100644
index 0000000..75d16d9
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/AdditionController$1.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/AdditionController$2.class b/out/production/IQPuzzlerPro/sample/AdditionController$2.class
new file mode 100644
index 0000000..455cd00
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/AdditionController$2.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/AdditionController$3.class b/out/production/IQPuzzlerPro/sample/AdditionController$3.class
new file mode 100644
index 0000000..1fe3893
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/AdditionController$3.class
Binary files differ
diff --git a/out/production/Version2IQ/sample/AdditionController.class b/out/production/IQPuzzlerPro/sample/AdditionController.class
similarity index 87%
rename from out/production/Version2IQ/sample/AdditionController.class
rename to out/production/IQPuzzlerPro/sample/AdditionController.class
index 30c9698..dc107bf 100644
--- a/out/production/Version2IQ/sample/AdditionController.class
+++ b/out/production/IQPuzzlerPro/sample/AdditionController.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/AdditionModel.class b/out/production/IQPuzzlerPro/sample/AdditionModel.class
new file mode 100644
index 0000000..13460bf
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/AdditionModel.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/AdditionView$1.class b/out/production/IQPuzzlerPro/sample/AdditionView$1.class
new file mode 100644
index 0000000..114299b
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/AdditionView$1.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/AdditionView$2.class b/out/production/IQPuzzlerPro/sample/AdditionView$2.class
new file mode 100644
index 0000000..2ee97e1
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/AdditionView$2.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/AdditionView$3.class b/out/production/IQPuzzlerPro/sample/AdditionView$3.class
new file mode 100644
index 0000000..6f16c91
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/AdditionView$3.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/AdditionView$4.class b/out/production/IQPuzzlerPro/sample/AdditionView$4.class
new file mode 100644
index 0000000..50a5ba1
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/AdditionView$4.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/AdditionView$5.class b/out/production/IQPuzzlerPro/sample/AdditionView$5.class
new file mode 100644
index 0000000..33e4ccc
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/AdditionView$5.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/AdditionView$6.class b/out/production/IQPuzzlerPro/sample/AdditionView$6.class
new file mode 100644
index 0000000..daddbf2
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/AdditionView$6.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/AdditionView$7.class b/out/production/IQPuzzlerPro/sample/AdditionView$7.class
new file mode 100644
index 0000000..e77c0a7
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/AdditionView$7.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/AdditionView.class b/out/production/IQPuzzlerPro/sample/AdditionView.class
new file mode 100644
index 0000000..fbeee4b
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/AdditionView.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/Board.class b/out/production/IQPuzzlerPro/sample/Board.class
new file mode 100644
index 0000000..7194f2f
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/Board.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/ConnectionManager.class b/out/production/IQPuzzlerPro/sample/ConnectionManager.class
new file mode 100644
index 0000000..9b422c0
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/ConnectionManager.class
Binary files differ
diff --git a/out/production/Version2IQ/sample/Controller.class b/out/production/IQPuzzlerPro/sample/Controller.class
similarity index 100%
rename from out/production/Version2IQ/sample/Controller.class
rename to out/production/IQPuzzlerPro/sample/Controller.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/DatabaseManager.class b/out/production/IQPuzzlerPro/sample/DatabaseManager.class
new file mode 100644
index 0000000..5b31c56
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/DatabaseManager.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/Game.class b/out/production/IQPuzzlerPro/sample/Game.class
new file mode 100644
index 0000000..b2c4b71
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/Game.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/GameOverScreen.class b/out/production/IQPuzzlerPro/sample/GameOverScreen.class
new file mode 100644
index 0000000..6348e33
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/GameOverScreen.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/GameOverScreen.fxml b/out/production/IQPuzzlerPro/sample/GameOverScreen.fxml
new file mode 100644
index 0000000..dcfe1a8
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/GameOverScreen.fxml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+
+<AnchorPane prefHeight="286.0" prefWidth="442.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.GameOverScreen">
+ <children>
+ <ImageView fitHeight="451.0" fitWidth="621.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/FinishScreen.png" />
+ </image>
+ </ImageView>
+ <ImageView fitHeight="84.0" fitWidth="384.0" layoutX="129.0" layoutY="38.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/Ribbon.png" />
+ </image>
+ </ImageView>
+ <ImageView fitHeight="150.0" fitWidth="200.0" layoutX="221.0" layoutY="52.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/gameover.png" />
+ </image>
+ </ImageView>
+ <ImageView fitHeight="160.0" fitWidth="284.0" layoutX="232.0" layoutY="115.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/gameOverStar.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="replayView" fitHeight="90.0" fitWidth="125.0" layoutX="345.0" layoutY="277.0" onMousePressed="#replayButtonHandle" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/DoneButton.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="exitView" fitHeight="90.0" fitWidth="125.0" layoutX="208.0" layoutY="277.0" onMousePressed="#exitButtonHandle" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/ReplayButton.png" />
+ </image>
+ </ImageView>
+ <Label layoutX="368.0" layoutY="367.0" text="Replay" />
+ <Label layoutX="240.0" layoutY="367.0" text="Exit" />
+ </children>
+</AnchorPane>
diff --git a/out/production/IQPuzzlerPro/sample/LeaderBoard.fxml b/out/production/IQPuzzlerPro/sample/LeaderBoard.fxml
new file mode 100755
index 0000000..d8522fb
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/LeaderBoard.fxml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane maxHeight="600.0" maxWidth="600.0" minHeight="600.0" minWidth="600.0" prefHeight="600.0" prefWidth="600.0" style="-fx-background-color: #E5F4F4;" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.LeaderBoardController">
+ <children>
+ <ImageView fitHeight="584.0" fitWidth="681.0" layoutX="-81.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/snowy.png" />
+ </image>
+ </ImageView>
+ <Label layoutX="159.0" layoutY="110.0" text="1." textFill="WHITE">
+ <font>
+ <Font size="54.0" />
+ </font>
+ </Label>
+ <Label layoutX="155.0" layoutY="176.0" text="2." textFill="WHITE">
+ <font>
+ <Font size="54.0" />
+ </font>
+ </Label>
+ <Label layoutX="155.0" layoutY="245.0" text="3." textFill="WHITE">
+ <font>
+ <Font size="54.0" />
+ </font>
+ </Label>
+ <Label fx:id="firstUsername" layoutX="218.0" layoutY="143.0" prefHeight="26.0" prefWidth="145.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label layoutX="218.0" layoutY="93.0" prefHeight="22.0" prefWidth="145.0" style="-fx-background-color: FFA500;" text="USERNAME" textFill="WHITE">
+ <font>
+ <Font size="17.0" />
+ </font>
+ </Label>
+ <Label layoutX="384.0" layoutY="93.0" style="-fx-background-color: FFA500;" text="SCORE" textFill="WHITE">
+ <font>
+ <Font size="17.0" />
+ </font>
+ </Label>
+ <Label layoutX="155.0" layoutY="316.0" text="4." textFill="WHITE">
+ <font>
+ <Font size="54.0" />
+ </font>
+ </Label>
+ <Label fx:id="firstScore" layoutX="380.0" layoutY="143.0" prefHeight="26.0" prefWidth="65.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label fx:id="secondUsername" layoutX="218.0" layoutY="202.0" prefHeight="26.0" prefWidth="145.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label fx:id="secondScore" layoutX="380.0" layoutY="202.0" prefHeight="26.0" prefWidth="65.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label fx:id="thirdUsername" layoutX="218.0" layoutY="265.0" prefHeight="26.0" prefWidth="145.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label fx:id="thirdScore" layoutX="380.0" layoutY="265.0" prefHeight="26.0" prefWidth="65.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label fx:id="fourthUsername" layoutX="218.0" layoutY="336.0" prefHeight="26.0" prefWidth="145.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label fx:id="fourthScore" layoutX="380.0" layoutY="336.0" prefHeight="26.0" prefWidth="65.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <ImageView fx:id="backView" fitHeight="66.0" fitWidth="65.0" layoutX="503.0" layoutY="14.0" onMouseClicked="#backButtonHandle" pickOnBounds="true" preserveRatio="true" rotate="45.0">
+ <image>
+ <Image url="file:images/menu/Back.png" />
+ </image>
+ </ImageView>
+ </children>
+</AnchorPane>
diff --git a/out/production/IQPuzzlerPro/sample/LeaderBoardController.class b/out/production/IQPuzzlerPro/sample/LeaderBoardController.class
new file mode 100644
index 0000000..a3f22b4
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/LeaderBoardController.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/Level.class b/out/production/IQPuzzlerPro/sample/Level.class
new file mode 100644
index 0000000..f6326c6
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/Level.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/LoadGame.fxml b/out/production/IQPuzzlerPro/sample/LoadGame.fxml
new file mode 100755
index 0000000..49d92c1
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/LoadGame.fxml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+
+<AnchorPane maxHeight="600.0" maxWidth="600.0" minHeight="600.0" minWidth="600.0" prefHeight="600.0" prefWidth="600.0" style="-fx-background-color: #E5F4F4;" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.LoadGameController">
+ <children>
+ <ImageView fx:id="backView" fitHeight="752.0" fitWidth="814.0" layoutX="-214.0" layoutY="-5.0" onMouseMoved="#refreshLevels" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/snowy.png" />
+ </image>
+ </ImageView>
+ <Button fx:id="backButton" layoutX="500.0" layoutY="28.0" mnemonicParsing="false" onAction="#backButtonHandle" prefHeight="31.0" prefWidth="73.0" text="Back" />
+ <ImageView fx:id="levelOneButton" fitHeight="79.0" fitWidth="73.0" layoutX="120.0" layoutY="103.0" onMouseClicked="#levelOneClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelOne.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelTwoButton" fitHeight="87.0" fitWidth="84.0" layoutX="249.0" layoutY="95.0" onMouseClicked="#levelTwoClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelTwoU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelThreeButton" fitHeight="98.0" fitWidth="73.0" layoutX="386.0" layoutY="95.0" onMouseClicked="#levelThreeClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelThreeU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelFiveButton" fitHeight="87.0" fitWidth="84.0" layoutX="249.0" layoutY="213.0" onMouseClicked="#levelFiveClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelFiveU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelEightButton" fitHeight="87.0" fitWidth="84.0" layoutX="249.0" layoutY="346.0" onMouseClicked="#levelEightClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelEightU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelSixButton" fitHeight="87.0" fitWidth="84.0" layoutX="386.0" layoutY="213.0" onMouseClicked="#levelSixClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelSixU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelNineButton" fitHeight="87.0" fitWidth="84.0" layoutX="386.0" layoutY="346.0" onMouseClicked="#levelNineClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelNineU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelSevenButton" fitHeight="87.0" fitWidth="84.0" layoutX="120.0" layoutY="346.0" onMouseClicked="#levelSevenClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levenSevenU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelFourButton" fitHeight="87.0" fitWidth="84.0" layoutX="120.0" layoutY="213.0" onMouseClicked="#levelFourClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelFourU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelTenButton" fitHeight="87.0" fitWidth="84.0" layoutX="249.0" layoutY="463.0" onMouseClicked="#levelTenClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelTenU.png" />
+ </image>
+ </ImageView>
+ </children>
+</AnchorPane>
diff --git a/out/production/IQPuzzlerPro/sample/LoadGameController.class b/out/production/IQPuzzlerPro/sample/LoadGameController.class
new file mode 100644
index 0000000..e5628c9
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/LoadGameController.class
Binary files differ
diff --git a/out/production/Version2IQ/sample/Main.class b/out/production/IQPuzzlerPro/sample/Main.class
similarity index 79%
rename from out/production/Version2IQ/sample/Main.class
rename to out/production/IQPuzzlerPro/sample/Main.class
index 4446460..c0b534d 100644
--- a/out/production/Version2IQ/sample/Main.class
+++ b/out/production/IQPuzzlerPro/sample/Main.class
Binary files differ
diff --git a/out/production/Version2IQ/sample/NewGame.fxml b/out/production/IQPuzzlerPro/sample/NewGame.fxml
old mode 100644
new mode 100755
similarity index 70%
rename from out/production/Version2IQ/sample/NewGame.fxml
rename to out/production/IQPuzzlerPro/sample/NewGame.fxml
index c1b7fc1..eb09aca
--- a/out/production/Version2IQ/sample/NewGame.fxml
+++ b/out/production/IQPuzzlerPro/sample/NewGame.fxml
@@ -8,32 +8,32 @@
<children>
<ImageView fitHeight="600.0" fitWidth="859.0" layoutX="-147.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/snowy.png" />
+ <Image url="file:images/menu/snowy.png" />
</image>
</ImageView>
<ImageView fitHeight="622.0" fitWidth="460.0" layoutX="57.0" layoutY="59.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/Menu_Base.png" />
+ <Image url="file:images/menu/Menu_Base.png" />
</image>
</ImageView>
<ImageView fx:id="twoD" fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="274.0" onMousePressed="#twoDHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/2DGame.png" />
+ <Image url="file:images/menu/2DGame.png" />
</image>
</ImageView>
<ImageView fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="369.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/3DGame.png" />
+ <Image url="file:images/menu/3DGame.png" />
</image>
</ImageView>
<ImageView fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="213.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/ChooseMode.png" />
+ <Image url="file:images/menu/ChooseMode.png" />
</image>
</ImageView>
<ImageView fx:id="backImage" fitHeight="150.0" fitWidth="50.0" layoutX="492.0" layoutY="33.0" onMousePressed="#backButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/Back.png" />
+ <Image url="file:images/menu/Back.png" />
</image>
</ImageView>
</children>
diff --git a/out/production/Version2IQ/sample/NewGameController.class b/out/production/IQPuzzlerPro/sample/NewGameController.class
similarity index 93%
rename from out/production/Version2IQ/sample/NewGameController.class
rename to out/production/IQPuzzlerPro/sample/NewGameController.class
index 1e01bc8..f9bdb5f 100644
--- a/out/production/Version2IQ/sample/NewGameController.class
+++ b/out/production/IQPuzzlerPro/sample/NewGameController.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/PauseAlertBox.class b/out/production/IQPuzzlerPro/sample/PauseAlertBox.class
new file mode 100644
index 0000000..2e270b9
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/PauseAlertBox.class
Binary files differ
diff --git a/out/production/Version2IQ/sample/PauseAlertBox.fxml b/out/production/IQPuzzlerPro/sample/PauseAlertBox.fxml
old mode 100644
new mode 100755
similarity index 65%
rename from out/production/Version2IQ/sample/PauseAlertBox.fxml
rename to out/production/IQPuzzlerPro/sample/PauseAlertBox.fxml
index 8a3c2c0..48ef4f9
--- a/out/production/Version2IQ/sample/PauseAlertBox.fxml
+++ b/out/production/IQPuzzlerPro/sample/PauseAlertBox.fxml
@@ -9,32 +9,32 @@
<children>
<ImageView fitHeight="451.0" fitWidth="621.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/FinishScreen.png" />
+ <Image url="file:images/menu/FinishScreen.png" />
</image>
</ImageView>
<ImageView fitHeight="84.0" fitWidth="384.0" layoutX="129.0" layoutY="38.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/Ribbon.png" />
+ <Image url="file:images/menu/Ribbon.png" />
</image>
</ImageView>
<ImageView fitHeight="150.0" fitWidth="200.0" layoutX="221.0" layoutY="52.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/Congraculations.png" />
+ <Image url="file:images/menu/Congraculations.png" />
</image>
</ImageView>
- <ImageView fitHeight="160.0" fitWidth="284.0" layoutX="179.0" layoutY="124.0" pickOnBounds="true" preserveRatio="true">
+ <ImageView fx:id="starView" fitHeight="160.0" fitWidth="284.0" layoutX="179.0" layoutY="124.0" onMouseMoved="#calculateScore" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/threeStar.png" />
+ <Image url="file:images/menu/OneStar.png" />
</image>
</ImageView>
<ImageView fx:id="nextView" fitHeight="90.0" fitWidth="125.0" layoutX="348.0" layoutY="277.0" onMousePressed="#nextLevelButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/DoneButton.png" />
+ <Image url="file:images/menu/DoneButton.png" />
</image>
</ImageView>
<ImageView fx:id="replayView" fitHeight="90.0" fitWidth="125.0" layoutX="208.0" layoutY="277.0" onMousePressed="#replayButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/ReplayButton.png" />
+ <Image url="file:images/menu/ReplayButton.png" />
</image>
</ImageView>
<Label layoutX="377.0" layoutY="367.0" text="Next" />
diff --git a/out/production/IQPuzzlerPro/sample/Piece.class b/out/production/IQPuzzlerPro/sample/Piece.class
new file mode 100644
index 0000000..fcd9d02
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/Piece.class
Binary files differ
diff --git a/out/production/Version2IQ/sample/TutorialScreen.fxml b/out/production/IQPuzzlerPro/sample/TutorialScreen.fxml
old mode 100644
new mode 100755
similarity index 100%
rename from out/production/Version2IQ/sample/TutorialScreen.fxml
rename to out/production/IQPuzzlerPro/sample/TutorialScreen.fxml
diff --git a/out/production/Version2IQ/sample/TutorialScreenController.class b/out/production/IQPuzzlerPro/sample/TutorialScreenController.class
similarity index 100%
rename from out/production/Version2IQ/sample/TutorialScreenController.class
rename to out/production/IQPuzzlerPro/sample/TutorialScreenController.class
Binary files differ
diff --git a/out/production/IQPuzzlerPro/sample/User.class b/out/production/IQPuzzlerPro/sample/User.class
new file mode 100644
index 0000000..4b34825
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/User.class
Binary files differ
diff --git a/out/production/Version2IQ/sample/logInScreen.fxml b/out/production/IQPuzzlerPro/sample/logInScreen.fxml
old mode 100644
new mode 100755
similarity index 82%
rename from out/production/Version2IQ/sample/logInScreen.fxml
rename to out/production/IQPuzzlerPro/sample/logInScreen.fxml
index cbf1288..6c26b21
--- a/out/production/Version2IQ/sample/logInScreen.fxml
+++ b/out/production/IQPuzzlerPro/sample/logInScreen.fxml
@@ -14,24 +14,24 @@
<children>
<ImageView fitHeight="580.0" fitWidth="659.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/snowy.png" />
+ <Image url="file:images/menu/snowy.png" />
</image>
</ImageView>
<TextField fx:id="userNameTextField" layoutX="193.0" layoutY="228.0" prefHeight="39.0" prefWidth="223.0" promptText="Username" />
<PasswordField fx:id="passwordTextField" layoutX="193.0" layoutY="303.0" prefHeight="39.0" prefWidth="223.0" promptText="Password" />
<ImageView fitHeight="145.0" fitWidth="292.0" layoutX="208.0" layoutY="78.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/IQPuzzler.png" />
+ <Image url="file:images/menu/IQPuzzler.png" />
</image>
</ImageView>
<ImageView fx:id="loginView" fitHeight="39.0" fitWidth="109.0" layoutX="431.0" layoutY="228.0" onMousePressed="#signInButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/login.png" />
+ <Image url="file:images/menu/login.png" />
</image>
</ImageView>
<ImageView fx:id="logupView" fitHeight="47.0" fitWidth="104.0" layoutX="431.0" layoutY="303.0" onMousePressed="#signUpButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/logup.png" />
+ <Image url="file:images/menu/logup.png" />
</image>
</ImageView>
</children>
diff --git a/out/production/Version2IQ/sample/logInScreenController.class b/out/production/IQPuzzlerPro/sample/logInScreenController.class
similarity index 100%
rename from out/production/Version2IQ/sample/logInScreenController.class
rename to out/production/IQPuzzlerPro/sample/logInScreenController.class
Binary files differ
diff --git a/out/production/Version2IQ/sample/mainMenu.fxml b/out/production/IQPuzzlerPro/sample/mainMenu.fxml
old mode 100644
new mode 100755
similarity index 72%
rename from out/production/Version2IQ/sample/mainMenu.fxml
rename to out/production/IQPuzzlerPro/sample/mainMenu.fxml
index cd796e7..679fddc
--- a/out/production/Version2IQ/sample/mainMenu.fxml
+++ b/out/production/IQPuzzlerPro/sample/mainMenu.fxml
@@ -9,38 +9,38 @@
<children>
<ImageView fitHeight="670.0" fitWidth="805.0" layoutX="-205.0" layoutY="-2.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/snowy.png" />
+ <Image url="file:images/menu/snowy.png" />
</image>
</ImageView>
<ImageView fitHeight="622.0" fitWidth="460.0" layoutX="57.0" layoutY="59.0" onMouseClicked="#newGameButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/Menu_Base.png" />
+ <Image url="file:images/menu/Menu_Base.png" />
</image>
</ImageView>
<Group layoutX="8.0" layoutY="-18.0" />
<ImageView fx:id="PlayView" fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="176.0" onMousePressed="#newGameButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/YellowFirst.png" />
+ <Image url="file:images/menu/YellowFirst.png" />
</image>
</ImageView>
<ImageView fx:id="tutorialView" fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="344.0" onMousePressed="#tutorialButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/BlueFirst.png" />
+ <Image url="file:images/menu/BlueFirst.png" />
</image>
</ImageView>
<ImageView fx:id="LoadView" fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="257.0" onMousePressed="#loadGameButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/GreenFirst.png" />
+ <Image url="file:images/menu/GreenFirst.png" />
</image>
</ImageView>
<ImageView fx:id="LeaderView" fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="429.0" onMousePressed="#leaderBoardButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/GreyFirst.png" />
+ <Image url="file:images/menu/GreyFirst.png" />
</image>
</ImageView>
<ImageView fx:id="backView" fitHeight="60.0" fitWidth="50.0" layoutX="506.0" layoutY="26.0" onKeyPressed="#backButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/Back.png" />
+ <Image url="file:images/menu/Back.png" />
</image>
</ImageView>
</children>
diff --git a/out/production/Version2IQ/sample/mainMenuController.class b/out/production/IQPuzzlerPro/sample/mainMenuController.class
similarity index 82%
rename from out/production/Version2IQ/sample/mainMenuController.class
rename to out/production/IQPuzzlerPro/sample/mainMenuController.class
index a2add20..db9222d 100644
--- a/out/production/Version2IQ/sample/mainMenuController.class
+++ b/out/production/IQPuzzlerPro/sample/mainMenuController.class
Binary files differ
diff --git a/out/production/Version2IQ/sample/sample.fxml b/out/production/IQPuzzlerPro/sample/sample.fxml
old mode 100644
new mode 100755
similarity index 100%
rename from out/production/Version2IQ/sample/sample.fxml
rename to out/production/IQPuzzlerPro/sample/sample.fxml
diff --git a/out/production/IQPuzzlerPro/sample/signUp.fxml b/out/production/IQPuzzlerPro/sample/signUp.fxml
new file mode 100755
index 0000000..206530a
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/signUp.fxml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane maxHeight="600.0" maxWidth="600.0" minHeight="600.0" prefHeight="600.0" prefWidth="600.0" style="-fx-background-color: #E5F4F4;" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.signUpController">
+ <children>
+ <ImageView fitHeight="600.0" fitWidth="600.0" layoutX="3.0" layoutY="6.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/snowy.png" />
+ </image>
+ </ImageView>
+ <TextField fx:id="usernameField" layoutX="286.0" layoutY="209.0" prefHeight="41.0" prefWidth="198.0" />
+ <TextField fx:id="passwordField" layoutX="286.0" layoutY="280.0" prefHeight="41.0" prefWidth="198.0" />
+ <Button fx:id="signUpButton" layoutX="235.0" layoutY="379.0" mnemonicParsing="false" onAction="#signUpButtonHandle" prefHeight="50.0" prefWidth="122.0" text="Sign Up" textFill="#222121" />
+ <Button fx:id="backButton" layoutX="500.0" layoutY="28.0" mnemonicParsing="false" onAction="#backButtonHandle" prefHeight="31.0" prefWidth="73.0" text="Back" />
+ <Label alignment="CENTER" layoutX="212.0" layoutY="107.0" prefHeight="50.0" prefWidth="168.0" style="-fx-background-color: #FFA500;" text="Sign Up" textFill="#f8f7f7">
+ <font>
+ <Font size="36.0" />
+ </font>
+ </Label>
+ <Label alignment="CENTER" layoutX="129.0" layoutY="214.0" prefHeight="31.0" prefWidth="122.0" style="-fx-background-color: #FFA500;" text="Username" textFill="#f8f7f7">
+ <font>
+ <Font size="18.0" />
+ </font>
+ </Label>
+ <Label alignment="CENTER" layoutX="129.0" layoutY="285.0" prefHeight="31.0" prefWidth="122.0" style="-fx-background-color: #FFA500;" text="Password" textFill="#f8f7f7">
+ <font>
+ <Font size="18.0" />
+ </font>
+ </Label>
+ </children>
+</AnchorPane>
diff --git a/out/production/IQPuzzlerPro/sample/signUpController.class b/out/production/IQPuzzlerPro/sample/signUpController.class
new file mode 100644
index 0000000..0a9602a
--- /dev/null
+++ b/out/production/IQPuzzlerPro/sample/signUpController.class
Binary files differ
diff --git a/out/production/Version2IQ/sample/AdditionModel.class b/out/production/Version2IQ/sample/AdditionModel.class
deleted file mode 100644
index b354d66..0000000
--- a/out/production/Version2IQ/sample/AdditionModel.class
+++ /dev/null
Binary files differ
diff --git a/out/production/Version2IQ/sample/AdditionView.class b/out/production/Version2IQ/sample/AdditionView.class
deleted file mode 100644
index c552029..0000000
--- a/out/production/Version2IQ/sample/AdditionView.class
+++ /dev/null
Binary files differ
diff --git a/out/production/Version2IQ/sample/Board.class b/out/production/Version2IQ/sample/Board.class
deleted file mode 100644
index f458c0e..0000000
--- a/out/production/Version2IQ/sample/Board.class
+++ /dev/null
Binary files differ
diff --git a/out/production/Version2IQ/sample/Game.class b/out/production/Version2IQ/sample/Game.class
deleted file mode 100644
index 79c15fb..0000000
--- a/out/production/Version2IQ/sample/Game.class
+++ /dev/null
Binary files differ
diff --git a/out/production/Version2IQ/sample/GameField.class b/out/production/Version2IQ/sample/GameField.class
deleted file mode 100644
index 1c4d0e6..0000000
--- a/out/production/Version2IQ/sample/GameField.class
+++ /dev/null
Binary files differ
diff --git a/out/production/Version2IQ/sample/LeaderBoard.fxml b/out/production/Version2IQ/sample/LeaderBoard.fxml
deleted file mode 100644
index 0d63868..0000000
--- a/out/production/Version2IQ/sample/LeaderBoard.fxml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<?import java.lang.*?>
-<?import javafx.scene.control.*?>
-<?import javafx.scene.layout.*?>
-<?import javafx.scene.text.*?>
-<?import javafx.scene.control.Button?>
-<?import javafx.scene.control.Label?>
-<?import javafx.scene.control.TableColumn?>
-<?import javafx.scene.control.TableView?>
-<?import javafx.scene.control.TextField?>
-<?import javafx.scene.layout.AnchorPane?>
-<?import javafx.scene.text.Font?>
-
-<AnchorPane prefHeight="400.0" prefWidth="600.0" style="-fx-background-color: #E5F4F4;" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.LeaderBoardController">
- <children>
- <Button fx:id="backButton" layoutX="500.0" layoutY="28.0" mnemonicParsing="false" onAction="#backButtonHandle" prefHeight="31.0" prefWidth="73.0" text="Back" />
- <TableView fx:id="table" layoutX="74.0" layoutY="84.0" prefHeight="275.0" prefWidth="421.0">
- <columns>
- <TableColumn fx:id="nameCol" prefWidth="218.0" text="name" />
- <TableColumn fx:id="scoreCol" minWidth="0.0" prefWidth="202.0" text="score" />
- </columns>
- </TableView>
- </children>
-</AnchorPane>
diff --git a/out/production/Version2IQ/sample/LeaderBoardController.class b/out/production/Version2IQ/sample/LeaderBoardController.class
deleted file mode 100644
index 86089e2..0000000
--- a/out/production/Version2IQ/sample/LeaderBoardController.class
+++ /dev/null
Binary files differ
diff --git a/out/production/Version2IQ/sample/Level.class b/out/production/Version2IQ/sample/Level.class
deleted file mode 100644
index 24864ee..0000000
--- a/out/production/Version2IQ/sample/Level.class
+++ /dev/null
Binary files differ
diff --git a/out/production/Version2IQ/sample/LoadGame.fxml b/out/production/Version2IQ/sample/LoadGame.fxml
deleted file mode 100644
index 3c8fb65..0000000
--- a/out/production/Version2IQ/sample/LoadGame.fxml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<?import javafx.scene.text.*?>
-<?import java.lang.*?>
-<?import java.util.*?>
-<?import javafx.scene.*?>
-<?import javafx.scene.control.*?>
-<?import javafx.scene.layout.*?>
-
-<AnchorPane prefHeight="400.0" prefWidth="600.0" style="-fx-background-color: #E5F4F4;" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.LoadGameController">
- <children>
- <Button fx:id="backButton" layoutX="500.0" layoutY="28.0" mnemonicParsing="false" onAction="#backButtonHandle" prefHeight="31.0" prefWidth="73.0" text="Back" />
- <Text layoutX="246.0" layoutY="60.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Load Game " />
- <TableView layoutX="132.0" layoutY="82.0" prefHeight="251.0" prefWidth="307.0">
- <columns>
- <TableColumn prefWidth="160.0" text="User Name " />
- <TableColumn minWidth="0.0" prefWidth="146.0" text="Date" />
- </columns>
- </TableView>
- </children>
-</AnchorPane>
diff --git a/out/production/Version2IQ/sample/LoadGameController.class b/out/production/Version2IQ/sample/LoadGameController.class
deleted file mode 100644
index a9c1a54..0000000
--- a/out/production/Version2IQ/sample/LoadGameController.class
+++ /dev/null
Binary files differ
diff --git a/out/production/Version2IQ/sample/PauseAlertBox.class b/out/production/Version2IQ/sample/PauseAlertBox.class
deleted file mode 100644
index a56724b..0000000
--- a/out/production/Version2IQ/sample/PauseAlertBox.class
+++ /dev/null
Binary files differ
diff --git a/out/production/Version2IQ/sample/Piece.class b/out/production/Version2IQ/sample/Piece.class
deleted file mode 100644
index 9a25aaa..0000000
--- a/out/production/Version2IQ/sample/Piece.class
+++ /dev/null
Binary files differ
diff --git a/out/production/Version2IQ/sample/signUp.fxml b/out/production/Version2IQ/sample/signUp.fxml
deleted file mode 100644
index 9e2055c..0000000
--- a/out/production/Version2IQ/sample/signUp.fxml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<?import javafx.scene.text.*?>
-<?import java.lang.*?>
-<?import javafx.scene.control.*?>
-<?import javafx.scene.layout.*?>
-<?import javafx.scene.control.Button?>
-<?import javafx.scene.control.Label?>
-<?import javafx.scene.control.TextField?>
-<?import javafx.scene.layout.AnchorPane?>
-
-<AnchorPane prefHeight="400.0" prefWidth="600.0" style="-fx-background-color: #E5F4F4;" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.signUpController">
- <children>
- <TextField fx:id="usernameField" layoutX="209.0" layoutY="188.0" />
- <TextField fx:id="passwordField" layoutX="209.0" layoutY="242.0" />
- <Button fx:id="signUpButton" layoutX="255.0" layoutY="281.0" mnemonicParsing="false" onAction="#signUpButtonHandle" text="Sign Up" />
- <Label layoutX="124.0" layoutY="247.0" text="Password" />
- <Label layoutX="103.0" layoutY="193.0" text="Email Adress" />
- <Button fx:id="backButton" layoutX="500.0" layoutY="28.0" mnemonicParsing="false" onAction="#backButtonHandle" prefHeight="31.0" prefWidth="73.0" text="Back" />
- <Text layoutX="272.0" layoutY="64.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Sign Up" />
- </children>
-</AnchorPane>
diff --git a/out/production/Version2IQ/sample/signUpController.class b/out/production/Version2IQ/sample/signUpController.class
deleted file mode 100644
index 8433734..0000000
--- a/out/production/Version2IQ/sample/signUpController.class
+++ /dev/null
Binary files differ
diff --git a/src/.DS_Store b/src/.DS_Store
index 0132e68..36d5e05 100644
--- a/src/.DS_Store
+++ b/src/.DS_Store
Binary files differ
diff --git a/src/AdditionController.java b/src/AdditionController.java
new file mode 100644
index 0000000..ff9ed44
--- /dev/null
+++ b/src/AdditionController.java
@@ -0,0 +1,397 @@
+package sample;
+
+import javafx.event.Event;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+import java.io.IOException;
+
+public class AdditionController {
+
+ private final AdditionModel model ;
+
+ Piece selectedPiece;
+
+
+ public AdditionController(AdditionModel model) {
+ this.model = model;
+ }
+
+ javafx.event.EventHandler handler = new javafx.event.EventHandler() {
+ @Override
+ public void handle(Event event) {
+ try {
+ Parent root = FXMLLoader.load(getClass().getResource("mainMenu.fxml"));
+ Stage m = Main.getMainStage();
+ Scene t = new Scene(root);
+ m.setScene(t);
+ Main.setMainStage(m);
+ m.centerOnScreen();
+
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }};
+
+
+ javafx.event.EventHandler pressedHandler = new javafx.event.EventHandler() {
+ @Override
+ public void handle(Event event) {
+
+
+ if (event.getSource() == model.getGame().pieceOne.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceOne;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceOne.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+
+ else if (event.getSource() == model.getGame().pieceTwo.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceTwo;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceTwo.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+
+ else if (event.getSource() == model.getGame().pieceThree.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceThree;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceThree.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+
+ else if (event.getSource() == model.getGame().pieceThreeVersion2.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceThreeVersion2;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceThreeVersion2.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+
+ else if (event.getSource() == model.getGame().pieceFour.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceFour;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceFour.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+
+ else if (event.getSource() == model.getGame().pieceFive.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceFive;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceFive.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+
+ else if (event.getSource() == model.getGame().pieceSix.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceSix;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceSix.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+
+ else if (event.getSource() == model.getGame().pieceSixVersion2.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceSixVersion2;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceSixVersion2.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+
+ else if (event.getSource() == model.getGame().pieceSeven.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceSeven;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceSeven.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+
+ else if (event.getSource() == model.getGame().pieceEight.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceEight;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceEight.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+
+ else if (event.getSource() == model.getGame().pieceNine.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceNine;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceNine.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+
+ else if (event.getSource() == model.getGame().pieceTen.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceTen;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceTen.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+
+ else if (event.getSource() == model.getGame().pieceTenVersion2.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceTenVersion2;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceTenVersion2.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+
+ else if (event.getSource() == model.getGame().pieceEleven.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceEleven;
+
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceEleven.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ } else if (event.getSource() == model.getGame().pieceTwelve.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceTwelve;
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceTwelve.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }else if (event.getSource() == model.getGame().pieceTwelve2.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceTwelve2;
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceTwelve2.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }else if (event.getSource() == model.getGame().pieceEleven2.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceEleven2;
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceEleven2.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }else if (event.getSource() == model.getGame().pieceTwo2.getCurrentImage()) {
+ selectedPiece = model.getGame().pieceTwo2;
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 11; j++) {
+ if (model.getBoard().boardMatrix[i][j] == model.getGame().pieceTwo2.getPieceId()) {
+ model.getBoard().boardMatrix[i][j] = 0;
+ }
+ }
+ }
+ }
+ }};
+
+
+
+ //--------------------------------------------------------------------------------------------------
+
+ //MOUSE RELEASED EVENT HANDLER
+ //This code calculates the position of piece
+
+
+ javafx.event.EventHandler releaseHandler = new javafx.event.EventHandler() {
+ @Override
+ public void handle(Event event){
+/*
+ ArrayList<Piece> unUsuedPieces = model.getGame().twoDLevels[model.getGame().getCurrent2DLevel()].getUnusedPieces();
+ for(int i = 0; i < unUsuedPieces.size(); i++){
+ if(event.getSource() == unUsuedPieces.get(i)) {
+ if (model.getBoard().checkPieceBoundary(unUsuedPieces.get(i).getCurrentImage(), 40, 440)) {
+ model.getBoard().putPiece(unUsuedPieces.get(i), model.getXboardMatrix(), model.getYboardMatrix(), 40, 440);
+ }
+ }
+ }
+ */
+
+ if(event.getSource() == model.getGame().pieceOne.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceOne.getCurrentImage(), 40, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceOne, model.getXboardMatrix(), model.getYboardMatrix(), 40, 440);
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceTwo.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceTwo.getCurrentImage(), 40, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceTwo, model.getXboardMatrix(), model.getYboardMatrix(), 40, 440);
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceThree.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceThree.getCurrentImage(), 40, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceThree, model.getXboardMatrix(), model.getYboardMatrix(), 40, 440);
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceThreeVersion2.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceThreeVersion2.getCurrentImage(), 40, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceThreeVersion2, model.getXboardMatrix(), model.getYboardMatrix(), 40, 440);
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceFour.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceFour.getCurrentImage(), 280, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceFour, model.getXboardMatrix(), model.getYboardMatrix(), 40, 440);
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceFive.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceFive.getCurrentImage(), 280, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceFive, model.getXboardMatrix(), model.getYboardMatrix(), 280, 440);
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceSix.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceSix.getCurrentImage(), 570, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceSix, model.getXboardMatrix(), model.getYboardMatrix(), 570, 440);
+
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceSixVersion2.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceSixVersion2.getCurrentImage(), 570, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceSixVersion2, model.getXboardMatrix(), model.getYboardMatrix(), 570, 440);
+
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceSeven.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceSeven.getCurrentImage(), 570, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceSeven, model.getXboardMatrix(), model.getYboardMatrix(), 570, 440);
+
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceEight.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceEight.getCurrentImage(), 570, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceEight, model.getXboardMatrix(), model.getYboardMatrix(), 570, 440);
+
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceNine.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceNine.getCurrentImage(), 570, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceNine, model.getXboardMatrix(), model.getYboardMatrix(), 570, 440);
+
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceTen.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceTen.getCurrentImage(), 40, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceTen, model.getXboardMatrix(), model.getYboardMatrix(), 40, 440);
+
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceTenVersion2.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceTenVersion2.getCurrentImage(), 40, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceTenVersion2, model.getXboardMatrix(), model.getYboardMatrix(), 40, 440);
+
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceEleven.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary( model.getGame().pieceEleven.getCurrentImage(), 280, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceEleven, model.getXboardMatrix(), model.getYboardMatrix(), 280, 440);
+
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceTwelve.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceTwelve.getCurrentImage(), 570, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceTwelve, model.getXboardMatrix(), model.getYboardMatrix(), 570, 440);
+ }
+ }
+ if(event.getSource() == model.getGame().pieceTwo2.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceTwo2.getCurrentImage(), 40, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceTwo2, model.getXboardMatrix(), model.getYboardMatrix(), 40, 440);
+
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceEleven2.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary( model.getGame().pieceEleven2.getCurrentImage(), 280, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceEleven2, model.getXboardMatrix(), model.getYboardMatrix(), 280, 440);
+
+ }
+ }
+
+ if(event.getSource() == model.getGame().pieceTwelve2.getCurrentImage()) {
+ if (model.getBoard().checkPieceBoundary(model.getGame().pieceTwelve2.getCurrentImage(), 570, 440)) {
+ model.getBoard().putPiece(model.getGame().pieceTwelve2, model.getXboardMatrix(), model.getYboardMatrix(), 570, 440);
+ }
+ }
+
+ }};
+
+
+
+ public Piece getSelectedPiece(){
+ return selectedPiece;
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/AdditionModel.java b/src/AdditionModel.java
new file mode 100644
index 0000000..e8ce38f
--- /dev/null
+++ b/src/AdditionModel.java
@@ -0,0 +1,107 @@
+package sample;
+
+public class AdditionModel {
+
+ final int sceneWidth = 1500;
+ final int sceneHeight = 1000;
+
+ private double []xPositions = new double[9];
+ private double []yPositions = new double[9];
+
+ //----------------------------------------------------------------------------------------------------------------------
+
+ //BOARD MATRIXI INITIALIZE EDILIYOR VE BIR MATRIX XPOSITIONLARI TUTUYOR BIR MATRIX YPOSITIONLARI TUTUYOR
+ //BIR MATRIX TUM BOARD ENTRYLERININ BOS OLUP OLMADIGINI TUTUYOR
+ //Boardun constructorinda initialize edilece
+
+ private double [][]XboardMatrix = new double[5][11];
+ private double [][]YboardMatrix = new double[5][11];
+
+ //init x positions
+
+ private Board board;
+ private Game game;
+
+ private int levelTime;
+
+
+ public AdditionModel(){
+ game = Game.getInstance();
+ levelTime = game.twoDLevels[game.getCurrent2DLevel()].getTime();
+
+ board = new Board(game.twoDLevels[game.getCurrent2DLevel()].getLevelMatrix(), sceneWidth, sceneHeight);
+
+ xPositions[0] = 5;
+ xPositions[1] = 290;
+ xPositions[2] = 575;
+ xPositions[3] = 860;
+ xPositions[4] = 1145;
+ xPositions[5] = 5;
+ xPositions[6] = 5;
+ xPositions[7] = 775;
+ xPositions[8] = 775;
+
+ yPositions[0] = 450;
+ yPositions[1] = 450;
+ yPositions[2] = 450;
+ yPositions[3] = 450;
+ yPositions[4] = 450;
+ yPositions[5] = 0;
+ yPositions[6] = 285;
+ yPositions[7] = 0;
+ yPositions[8] = 285;
+
+
+ for(int i = 0; i < 5; i++) {
+ for(int j =0; j < 11; j++) {
+ XboardMatrix[i][j] = ((sceneWidth - board.getBoardWidth()) / 2) + (70 * j);
+ YboardMatrix[i][j] = 70 * i;
+ }
+ }
+ }
+
+ public int getSceneWidth(){
+ return sceneWidth;
+ }
+
+ public int getSceneHeight(){
+ return sceneHeight;
+ }
+
+ public Board getBoard(){
+ return board;
+ }
+
+ public Game getGame(){
+ return game;
+ }
+
+ public double[] getxPositions() {
+ return xPositions;
+ }
+
+ public double[] getyPositions() {
+ return yPositions;
+ }
+
+ public double[][] getXboardMatrix() {
+ return XboardMatrix;
+ }
+
+ public double[][] getYboardMatrix() {
+ return YboardMatrix;
+ }
+
+ public int getLevelTime(){
+ return game.twoDLevels[game.getCurrent2DLevel()].getTime();
+ }
+
+ public void setElapsedTime(int time){ game.twoDLevels[game.getCurrent2DLevel()].setElapsedTime(time);}
+
+ public int getElapsedTime(){ return game.twoDLevels[game.getCurrent2DLevel()].getElapsedTime();}
+
+ public void incrementTime(){ game.twoDLevels[game.getCurrent2DLevel()].incrementElapsedTime();}
+
+}
+
+
diff --git a/src/AdditionView.java b/src/AdditionView.java
new file mode 100644
index 0000000..bccabe2
--- /dev/null
+++ b/src/AdditionView.java
@@ -0,0 +1,416 @@
+package sample;
+
+import javafx.application.Platform;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
+import javafx.fxml.FXMLLoader;
+import javafx.geometry.Insets;
+import javafx.scene.ImageCursor;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.TextField;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.*;
+import javafx.stage.Stage;
+import jfxtras.labs.util.event.MouseControlUtil;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Timer;
+import java.util.TimerTask;
+
+public class AdditionView {
+
+ private BorderPane backgroundPane;
+ private BorderPane menuPane;
+ private int timerPosition;
+ private int levelTime;
+ private int time;
+ int hammerClickCount;
+ int iceBreakClickCount;
+ boolean hammerButtonClicked;
+
+ private AdditionController controller;
+ private AdditionModel model ;
+
+ ImageView boardView;
+ Scene currentScene;
+
+ public AdditionView(AdditionController controller, AdditionModel model) {
+
+ this.controller = controller ;
+ this.model = model ;
+
+ createAndConfigurePane();
+
+ levelTime = 60;//model.getGame().twoDLevels[model.getGame().getCurrent2DLevel()].getTime();
+ time = 0;
+
+ hammerClickCount = 0;
+ iceBreakClickCount = 0;
+ hammerButtonClicked = false;
+ currentScene = Main.getMainStage().getScene();
+ }
+
+ public Parent asParent() {
+ return backgroundPane ;
+ }
+
+ private void createAndConfigurePane() {
+
+ backgroundPane = new BorderPane();
+ menuPane = new BorderPane();
+ menuPane.setPadding(new Insets(10, 20 ,10 ,20));
+
+ menuPane.setMinSize(150,150);
+ menuPane.setMaxSize(150, 150);
+
+ Image pauseButton = new Image("file:images/menu/pauseButton.png");
+ ImageView pauseView = new ImageView(pauseButton);
+ pauseView.setLayoutX(200);
+ pauseView.setLayoutY(40);
+
+ pauseView.addEventHandler(MouseEvent.MOUSE_CLICKED, controller.handler);
+ menuPane.getChildren().add(pauseView);
+
+ //Hammer Logic
+ Button hammerButton = new Button();
+ hammerButton.setGraphic(new ImageView("file:images/hammer.png"));
+ //menuPane.getChildren().addAll(hammerButton);
+ menuPane.setTop(hammerButton);
+
+ hammerButton.setOnAction(new EventHandler<ActionEvent>() {
+ @Override public void handle(ActionEvent e) {
+ Image hammerImage = new Image("file:images/hammer.png");
+ ImageCursor cursor = new ImageCursor(hammerImage, 0, 0);
+ currentScene.setCursor(cursor);
+ hammerButtonClicked = true;
+ }
+ });
+
+ Pane pieceBox = new Pane();
+ pieceBox.setMinHeight(model.sceneHeight - menuPane.getHeight());
+ pieceBox.setMinWidth(model.sceneWidth);
+
+ Image timerImage = new Image("file:images/menu/progress.png");
+ ImageView timerView = new ImageView(timerImage);
+ Image lineImage = new Image("file:images/menu/theLine.png");
+ ImageView lineView = new ImageView(lineImage);
+
+ menuPane.getChildren().addAll(lineView);
+ menuPane.getChildren().addAll(timerView);
+
+ lineView.setLayoutY(60);
+
+ int timerStartingX = (model.getSceneWidth() - 660) / 2;
+
+ lineView.setLayoutX(timerStartingX);
+ timerView.setLayoutY(55);
+ timerView.setLayoutX(timerStartingX);
+ timerPosition = timerStartingX;
+
+ //TIMERS
+ Timer timer = new Timer();
+ Timer iceTimer = new Timer();
+ Timer giftTimer = new Timer();
+ Timer deleteGiftTimer = new Timer();
+
+ //GIFTS AND ICES
+ ArrayList<ImageView> iceBlocks = new ArrayList<>();
+ ArrayList<ImageView> gifts = new ArrayList<>();
+
+
+ TimerTask task = new TimerTask()
+ {
+ public void run()
+ {
+ model.getGame().twoDLevels[model.getGame().getCurrent2DLevel()].incrementElapsedTime();
+ timerView.setLayoutX(timerPosition += 2);
+
+ if(model.getGame().twoDLevels[model.getGame().getCurrent2DLevel()].getElapsedTime() == 300){
+ model.getGame().twoDLevels[model.getGame().getCurrent2DLevel()].setElapsedTime(310);
+ timer.cancel();
+ }
+ }
+ };
+
+ int period = (int) 60 * 1000 / 300; //60 yerine levelTime gelicek
+
+ timer.scheduleAtFixedRate(task,100, period);
+
+ TimerTask giftTask = new TimerTask(){
+ @Override
+ public void run(){
+ Platform.runLater(() ->{
+ ArrayList<Integer> emptyRowPositions = new ArrayList<>();
+ ArrayList<Integer> emptyColumnPositions = new ArrayList<>();
+ for(int i = 0; i < 5; i++){ //find empy positions
+ for(int j = 0; j < 11; j++){
+ if(model.getBoard().boardMatrix[i][j] == 0){
+ emptyRowPositions.add(i);
+ emptyColumnPositions.add(j);
+ }
+ }
+ }
+ int randomRow1, randomColumn;
+ if(gifts.size() == 0){
+ randomRow1 = (int)(Math.random() * emptyRowPositions.size());
+ randomColumn = randomRow1;
+ Image gift = new Image("file:images/gift.png");
+ ImageView giftView = new ImageView(gift);
+ giftView.setFitHeight(70);
+ giftView.setFitWidth(70);
+ pieceBox.getChildren().addAll(giftView);
+ giftView.relocate(model.getXboardMatrix()[emptyRowPositions.get(randomRow1)][emptyColumnPositions.get(randomColumn)], model.getYboardMatrix()[emptyRowPositions.get(randomRow1)][emptyColumnPositions.get(randomColumn)]);
+ gifts.add(giftView);
+ model.getBoard().boardMatrix[emptyRowPositions.get(randomRow1)][emptyColumnPositions.get(randomColumn)] = -2;
+ }
+ });
+ }
+ };
+
+ TimerTask deleteGiftTask = new TimerTask() {
+ @Override
+ public void run() {
+ Platform.runLater(()->{
+ ArrayList<Integer> giftPositionRow = new ArrayList<Integer>();
+ ArrayList<Integer> giftPositionColumn = new ArrayList<Integer>();
+ for(int i = 0; i < 5; i++){
+ for(int j = 0; j < 11; j++){
+ if(model.getBoard().boardMatrix[i][j] == -2){
+ giftPositionColumn.add(j);
+ giftPositionRow.add(i);
+ }
+ }
+ }
+ if(gifts.isEmpty() == false){
+ gifts.get(0).setImage(null);
+ gifts.remove(0);
+ model.getBoard().boardMatrix[giftPositionRow.get(0)][giftPositionColumn.get(0)] = 0;
+ }
+
+ });
+ }
+ };
+
+
+ TimerTask iceTask = new TimerTask() {
+ @Override
+ public void run() {
+ Platform.runLater(() ->{
+ ArrayList<Integer> emptyRowPositions = new ArrayList<>();
+ ArrayList<Integer> emptColumnPositions = new ArrayList<>();
+ for(int i = 0; i < 5; i++){ //find empy positions
+ for(int j = 0; j < 11; j++){
+ if(model.getBoard().boardMatrix[i][j] == 0){
+ emptyRowPositions.add(i);
+ emptColumnPositions.add(j);
+ }
+ }
+ }
+ //choose random empty positions
+ int randomRow1, randomRow2, randomRow3, randomColumn1, randomColumn2, randomColumn3;
+ if(emptyRowPositions.size() >= 3){
+ do{
+ randomRow1 = (int)(Math.random() * emptyRowPositions.size());
+ randomRow2 = (int)(Math.random() * emptyRowPositions.size());
+ randomRow3 = (int)(Math.random() * emptyRowPositions.size());
+ if(randomRow1 != randomRow2 && randomRow1 != randomRow3 && randomRow2 != randomRow3){
+ randomColumn1 = randomRow1;
+ randomColumn2 = randomRow2;
+ randomColumn3 = randomRow3;
+
+ Image ice = new Image("file:images/ice.png");
+ Image ice2 = new Image("file:images/ice2.png");
+ Image ice3 = new Image("file:images/ice3.png");
+
+ ImageView ice1View = new ImageView(ice);
+ ImageView ice2View = new ImageView(ice2);
+ ImageView ice3View = new ImageView(ice3);
+
+ ice1View.setFitHeight(70);
+ ice1View.setFitWidth(70);
+ ice2View.setFitHeight(70);
+ ice2View.setFitWidth(70);
+ ice3View.setFitHeight(70);
+ ice3View.setFitWidth(70);
+
+ pieceBox.getChildren().add(ice1View);
+ pieceBox.getChildren().add(ice2View);
+ pieceBox.getChildren().add(ice3View);
+
+ ice1View.relocate(model.getXboardMatrix()[emptyRowPositions.get(randomRow1)][emptColumnPositions.get(randomColumn1)], model.getYboardMatrix()[emptyRowPositions.get(randomRow1)][emptColumnPositions.get(randomColumn1)]);
+ ice2View.relocate(model.getXboardMatrix()[emptyRowPositions.get(randomRow2)][emptColumnPositions.get(randomColumn2)], model.getYboardMatrix()[emptyRowPositions.get(randomRow2)][emptColumnPositions.get(randomColumn2)]);
+ ice3View.relocate(model.getXboardMatrix()[emptyRowPositions.get(randomRow3)][emptColumnPositions.get(randomColumn3)], model.getYboardMatrix()[emptyRowPositions.get(randomRow3)][emptColumnPositions.get(randomColumn3)]);
+
+ iceBlocks.add(ice1View);
+ iceBlocks.add(ice2View);
+ iceBlocks.add(ice3View);
+
+ model.getBoard().boardMatrix[emptyRowPositions.get(randomRow1)][emptColumnPositions.get(randomColumn1)] = -1;
+ model.getBoard().boardMatrix[emptyRowPositions.get(randomRow2)][emptColumnPositions.get(randomColumn2)] = -1;
+ model.getBoard().boardMatrix[emptyRowPositions.get(randomRow3)][emptColumnPositions.get(randomColumn3)] = -1;
+
+ System.out.println("first indexes" + randomRow1 +"," + randomColumn1 );
+ System.out.println("second indexes" + randomRow2 +"," + randomColumn2 );
+ System.out.println("third indexes" + randomRow3 +"," + randomColumn3 );
+ System.out.println("size is: " + iceBlocks.size());
+ break;
+ }
+ }while(randomRow1 != randomRow2 && randomRow1 != randomRow3 && randomRow2 != randomRow3);
+ }
+ });
+ }
+ };
+
+ //TIMER JUSTIFICATIONS
+ iceTimer.scheduleAtFixedRate(iceTask, 300000, 8000);
+ giftTimer.scheduleAtFixedRate(giftTask, 6000, 7000);
+ deleteGiftTimer.scheduleAtFixedRate(deleteGiftTask,0,10000);
+
+ ImageView boardView = model.getGame().twoDLevels[model.getGame().getCurrent2DLevel()].getBoardView();
+
+ ArrayList<Piece> unUsuedPieces = model.getGame().twoDLevels[model.getGame().getCurrent2DLevel()].getUnusedPieces();
+ //System.out.println( model.getGame().twoDLevels[model.getGame().getCurrent2DLevel()].getUnusedPieces().get(0).getPieceId());
+ ArrayList<ImageView> unUsedPiecesView = new ArrayList<ImageView>();
+ //model.getBoard().updateBoard();
+
+ //assign imageviews of pieces
+ for(int i = 0; i < unUsuedPieces.size(); i++){
+ unUsedPiecesView.add(i, unUsuedPieces.get(i).getCurrentImage());
+ unUsedPiecesView.get(i).relocate(model.getxPositions()[i], model.getyPositions()[i]);
+ pieceBox.getChildren().add(unUsedPiecesView.get(i));
+ MouseControlUtil.makeDraggable(unUsuedPieces.get(i).getCurrentImage());
+ }
+
+ pieceBox.getChildren().add(boardView);
+ boardView.setLayoutX((model.sceneWidth - model.getBoard().getBoardWidth()) / 2 );
+ boardView.setLayoutY(0);
+
+//--------------------------------------------------------------------------------------------------
+
+ backgroundPane.addEventFilter(KeyEvent.KEY_PRESSED, event->{
+ if (event.getCode() == KeyCode.R) {
+ controller.getSelectedPiece().getCurrentImage().setRotate(controller.getSelectedPiece().getCurrentImage().getRotate()+90);
+ controller.getSelectedPiece().rotateMatrixLeft();
+ controller.getSelectedPiece().getCurrentImage().setFitWidth(280);
+ controller.getSelectedPiece().getCurrentImage().setFitHeight(280);
+ controller.getSelectedPiece().incrementRotationCount();
+ }
+ });
+
+
+ //BUZLARI KIRMA
+ backgroundPane.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
+ @Override
+ public void handle(MouseEvent mouseEvent) {
+
+ if(model.getGame().twoDLevels[model.getGame().getCurrent2DLevel()].isTimeOver()){
+ model.getGame().replay();
+ }
+
+ hammerClickCount++;
+ if(hammerButtonClicked){
+ if(hammerClickCount % 2 == 0){
+ Image hammerImage = new Image("file:images/hammer.png");
+ ImageCursor cursor = new ImageCursor(hammerImage, 0, 0);
+ //backgroundPane.setCursor(cursor);
+ }
+
+ else{
+ Image hammerImage = new Image("file:images/hammer20.png");
+ ImageCursor cursor = new ImageCursor(hammerImage, 0, 0);
+ //backgroundPane.setCursor(cursor);
+ }
+ }
+
+ double xClicked = mouseEvent.getX();
+ double yClicked = mouseEvent.getY() - 150;
+
+ double boardHeight = 350;
+ double boardWidth = 770;
+ double sceneWidth = backgroundPane.getWidth();
+ double sceneHeight = backgroundPane.getHeight();
+ double leftXCoordinate = (sceneWidth - boardWidth) / 2 ;
+ double topYCoordinate = 0;
+ double rightXCoordinate = leftXCoordinate + boardWidth;;
+ double bottomYCoordinate = boardHeight + topYCoordinate;
+
+ if(((xClicked > leftXCoordinate && xClicked < rightXCoordinate) && (yClicked > topYCoordinate && yClicked < bottomYCoordinate)) && hammerButtonClicked){
+ int indexColumn = (int)((xClicked - leftXCoordinate) / 70);
+ int indexRow = (int)((yClicked - topYCoordinate) / 70);
+
+ if(model.getBoard().boardMatrix[indexRow][indexColumn] == -1){
+ iceBreakClickCount++;
+ for(int i = 0; i < iceBlocks.size(); i++){
+ if(iceBlocks.get(i).getLayoutX() == (model.getXboardMatrix()[indexRow][indexColumn]) && iceBlocks.get(i).getLayoutY() == model.getYboardMatrix()[indexRow][indexColumn] && iceBreakClickCount == 4){
+ iceBlocks.get(i).setImage(null);
+ model.getBoard().boardMatrix[indexRow][indexColumn] = 0;
+ iceBlocks.remove(i);
+ iceBreakClickCount = 0;
+ }
+ }
+ }
+ }
+ else{
+ iceBreakClickCount = 0;
+ }
+ }
+ });
+
+
+ //HEDİYELERİ ALMA
+ backgroundPane.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
+ @Override
+ public void handle(MouseEvent mouseEvent) {
+ double xClicked = mouseEvent.getX();
+ double yClicked = mouseEvent.getY() - 150;
+
+ double boardHeight = 350;
+ double boardWidth = 770;
+ double sceneWidth = backgroundPane.getWidth();
+ double sceneHeight = backgroundPane.getHeight();
+ double leftXCoordinate = (sceneWidth - boardWidth) / 2 ;
+ double topYCoordinate = 0;
+ double rightXCoordinate = leftXCoordinate + boardWidth;;
+ double bottomYCoordinate = boardHeight + topYCoordinate;
+
+ if(((xClicked > leftXCoordinate && xClicked < rightXCoordinate) && (yClicked > topYCoordinate && yClicked < bottomYCoordinate))){
+ int indexColumn = (int)((xClicked - leftXCoordinate) / 70);
+ int indexRow = (int)((yClicked - topYCoordinate) / 70);
+
+ if(model.getBoard().boardMatrix[indexRow][indexColumn] == -2){
+ model.getGame().twoDLevels[model.getGame().getCurrent2DLevel()].setExtraScore();
+ gifts.get(0).setImage(null);
+ model.getBoard().boardMatrix[indexRow][indexColumn] = 0;
+ gifts.remove(0);
+ }
+ }
+ }
+ });
+
+
+//--------------------------------------------------------------------------------------------------
+
+ //Adding event handler to unused pieces in specific level
+ for(int i = 0; i < model.getGame().twoDLevels[model.getGame().getCurrent2DLevel()].getUnusedPieces().size(); i++){
+ model.getGame().twoDLevels[model.getGame().getCurrent2DLevel()].getUnusedPieces().get(i).getCurrentImage().addEventHandler(MouseEvent.MOUSE_RELEASED, controller.releaseHandler);
+ model.getGame().twoDLevels[model.getGame().getCurrent2DLevel()].getUnusedPieces().get(i).getCurrentImage().addEventHandler(MouseEvent.MOUSE_PRESSED, controller.pressedHandler);
+ }
+
+ Image backgroundImage = new Image("file:images/menu/snowySecond.png");
+
+ BackgroundImage myBI= new BackgroundImage(backgroundImage, BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, BackgroundPosition.CENTER, BackgroundSize.DEFAULT);
+
+
+ backgroundPane.setBottom(pieceBox);
+ backgroundPane.setTop(menuPane);
+ backgroundPane.setBackground(new Background(myBI));
+ }
+
+}
\ No newline at end of file
diff --git a/src/Board.java b/src/Board.java
new file mode 100755
index 0000000..1c3471b
--- /dev/null
+++ b/src/Board.java
@@ -0,0 +1,228 @@
+package sample;
+
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.stage.Stage;
+
+import java.io.IOException;
+
+public class Board {
+
+
+ final int boardWidth = 770;
+ final int boardHeight = 350;
+
+ Image boardImage;
+ ImageView boardView;
+ int[][] boardMatrix;
+ private int sceneWidth;
+ private int sceneHeight;
+ private int leftXCoordinate;
+ private int topYCoordinate;
+ private int rightXCoordinate;
+ private int bottomYCoordinate;
+ private int treshold;
+ private boolean gameOver;
+ private int score;
+ private Game game;
+
+ public Board(int[][] matrix,int sceneWidth, int sceneHeight){
+
+ game = Game.getInstance();
+ boardImage = new Image("file:images/boardLast.png");
+ boardView = new ImageView(boardImage);
+ boardMatrix = matrix;
+ this.sceneHeight = sceneHeight;
+ this.sceneWidth = sceneWidth;
+ gameOver = false;
+ score = 10;
+
+ leftXCoordinate = (this.sceneWidth - boardWidth) / 2 ;
+ topYCoordinate = 0;
+ rightXCoordinate = leftXCoordinate + boardWidth;
+ bottomYCoordinate = boardHeight + topYCoordinate;
+ treshold = 10;
+ }
+
+
+
+ public ImageView getBoardView(){
+ return boardView;
+ }
+
+ public int getBoardWidth(){
+ return boardWidth;
+ }
+
+ public void updateBoard(){
+ game = Game.getInstance();
+ boardMatrix = game.twoDLevels[game.getCurrent2DLevel()].getLevelMatrix();
+ }
+
+ // no two piece on each other
+ public boolean isAvailable(int rowIndex, int columnIndex, int[][] pieceMatrix){
+ for(int m = 0; m <4; m++){
+ for (int n = 0; n < 4; n++){
+ if(n + columnIndex >= 11){
+ int fazlalikColumn = (n + columnIndex) - 11;
+ if(pieceMatrix[m][n] != 0 && boardMatrix[rowIndex+m][columnIndex+n-fazlalikColumn] != 0) {
+ if(pieceMatrix[m][n] != 0 && boardMatrix[rowIndex+m][columnIndex+n-fazlalikColumn] != -2){
+ return false;
+ }
+ }
+ }
+ if(rowIndex + m >= 5){
+ int fazlalikRow = (rowIndex + m) - 5;
+ if(pieceMatrix[m][n] != 0 && boardMatrix[rowIndex+m-fazlalikRow][columnIndex+n] != 0) {
+ if(pieceMatrix[m][n] != 0 && boardMatrix[rowIndex+m-fazlalikRow][columnIndex+n] != -2){
+ return false;
+ }
+ }
+ }
+
+ if(pieceMatrix[m][n] != 0 && boardMatrix[rowIndex+m][columnIndex+n] != 0) {
+ if(pieceMatrix[m][n] != 0 && boardMatrix[rowIndex+m][columnIndex+n] != -2){
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ //check is board full
+ public boolean isFull(){
+ for(int i = 0; i < 5; i++){
+ for(int j = 0; j < 11; j++){
+ if(boardMatrix[i][j] == 0)
+ return false;
+ }
+ }
+ return true;
+ }
+
+ //Puzlle piecelerinin dogru yerde oluip olmadigini kontrol eden fonksiyon degilse boardun boundarylerinin disindaysa
+ //initial positiona geri donecek
+ public boolean checkPieceBoundary(ImageView pieceView, double xPosition, double yPosition){
+ double currentX = pieceView.getLayoutX();
+ double currentY = pieceView.getLayoutY();
+
+ if((currentX < leftXCoordinate || currentX > rightXCoordinate) || (currentY < topYCoordinate ||currentY > bottomYCoordinate)){
+ //set piece to its initial place
+ pieceView.relocate(xPosition,yPosition);
+ System.out.println(leftXCoordinate);
+ System.out.println(topYCoordinate);
+ System.out.println(rightXCoordinate);
+ System.out.print(bottomYCoordinate);
+ return false;
+ }
+
+ else{
+ return true;
+ }
+ }
+
+
+ //PIECEI BIRAZ DISARI KOYDUGUMUZDA PICECEI BOARDA FIX EDEN FONKSIYON
+ public void putPiece(Piece piece, double [][]XboardMatrix, double [][]YboardMatrix, double initX, double initY){
+ updateBoard();
+ double currentX = piece.getCurrentImage().getLayoutX();
+ double currentY = piece.getCurrentImage().getLayoutY();
+
+ int indexColumn = ((int)currentX - leftXCoordinate) / 70;
+ int indexRow = ((int)currentY - topYCoordinate) / 70;
+
+ System.out.println("index row is : " + indexRow);
+ System.out.println("index column is: " + indexColumn);
+
+ if(isAvailable(indexRow, indexColumn, piece.getMatrix())){
+ if (((XboardMatrix[indexRow][indexColumn] - treshold < currentX) && (currentX < XboardMatrix[indexRow][indexColumn + 1])) || ((YboardMatrix[indexRow][indexColumn] - treshold < currentY) && (currentY < YboardMatrix[indexRow + 1][indexColumn]))) {
+ piece.getCurrentImage().relocate(XboardMatrix[indexRow][indexColumn], YboardMatrix[indexRow][indexColumn]);
+
+ }
+
+ //set empty locations to 1
+ for(int i = 0; i < 4; i++) {
+ for(int j = 0; j < 4; j++) {
+
+ if(piece.getMatrix()[i][j] == 1) {
+ boardMatrix[indexRow+i][j+indexColumn] = piece.getPieceId();
+ }
+ }
+ }
+ }
+ //if place is occupied return iinitial position do not update board
+ else{
+ // System.out.println("buraya girdi 3");
+ piece.getCurrentImage().relocate(initX,initY);
+ }
+
+ //print board matrix----------------------------------------------------------------------------------------------------------------------------------------------------------------
+ System.out.println();
+ printBoardMatrix();
+ //----------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+ if(isFull()){
+ int score = calculateScore(game.twoDLevels[game.getCurrent2DLevel()].getElapsedTime() / 5, game.twoDLevels[game.getCurrent2DLevel()].getTime());
+ game.finishGame(score,game.twoDLevels[game.getCurrent2DLevel()].getLevelNo());
+ try {
+ Parent root = FXMLLoader.load(getClass().getResource("PauseAlertBox.fxml"));
+ Stage window = Main.getMainStage();
+ Scene scene = new Scene(root);
+ window.setTitle("Pause");
+ window.setScene(scene);
+ window.centerOnScreen();
+ Main.setMainStage(window);
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void printBoardMatrix() {
+ for(int i = 0; i < 5; i++) {
+ for(int j =0; j < 11; j++) {
+ System.out.print("(");
+ System.out.print(boardMatrix[i][j]);
+ System.out.print(")");
+ }
+ System.out.println();
+ }
+ }
+
+ public int calculateScore(int elapsedTime, int levelTime){
+
+ int extraScore = game.twoDLevels[game.getCurrent2DLevel()].getExtraScore();
+ System.out.println("extraScore" + extraScore + "--");
+
+ double ratio = levelTime / elapsedTime;
+ System.out.println("elapsed time: " + elapsedTime);
+ System.out.println("level time: " + levelTime);
+ System.out.println("ratio: " + ratio);
+
+ if(ratio >= 3 )
+ score = 30;
+ else if(ratio >= 2)
+ score = 20;
+ else if (ratio >= 1)
+ score = 10;
+ else
+ score = 0;
+
+ score = score + extraScore;
+ return score;
+ }
+
+ public int getScore(){
+ return score;
+ }
+
+ public boolean isGameOver() {
+ return gameOver;
+ }
+
+}
diff --git a/src/ConnectionManager.java b/src/ConnectionManager.java
new file mode 100644
index 0000000..5de4a2a
--- /dev/null
+++ b/src/ConnectionManager.java
@@ -0,0 +1,36 @@
+/*
+ * Author: Elif Gulsah Kasdogan
+ * Class: Connection Manager for Database Connection
+ * Handles Connection Manager object will be used for database connection
+ */
+package sample;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+//DATABASE CONNECTION MANAGER
+public class ConnectionManager {
+ private static String url;
+ private static Connection connection;
+
+ public ConnectionManager(){
+ url = "jdbc:sqlite:/Users/egeakin/Desktop/loginDB.db"; //database url
+ Connection connection = null;
+ }
+
+ public static Connection getConnection(){
+ try{
+ //System.out.println("in try block");
+ try {
+ Class.forName("org.sqlite.JDBC"); //driver name
+ connection = DriverManager.getConnection(url);
+ }catch(ClassNotFoundException e){
+ System.out.println("Driver not found!" + e);
+ }
+ } catch(SQLException e){
+ System.out.println(e);
+ }
+ return connection;
+ }
+}
diff --git a/src/Controller.java b/src/Controller.java
new file mode 100755
index 0000000..54e5bd1
--- /dev/null
+++ b/src/Controller.java
@@ -0,0 +1,4 @@
+package sample;
+
+public class Controller {
+}
diff --git a/src/DatabaseManager.java b/src/DatabaseManager.java
new file mode 100644
index 0000000..ab4be7c
--- /dev/null
+++ b/src/DatabaseManager.java
@@ -0,0 +1,305 @@
+/*
+ * Author: Elif Gulsah Kasdogan
+ * Class: Database Manager
+ * Handles database connection and related operations: sign in/sign up
+ */
+package sample;
+
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+import java.io.IOException;
+import java.io.PipedReader;
+import java.sql.*;
+
+
+public class DatabaseManager {
+ // all operations related to database will be done in this class
+ private final String TABLE_NAME = "table2";
+ private final int MAX_SIZE = 100;
+ private ConnectionManager connectionManager;
+ private Connection connection; //database connection
+ private Game game;
+ private User user; //bu user boÅŸ.
+
+ public DatabaseManager(){
+ game = Game.getInstance();
+ user = new User();
+ connectionManager = new ConnectionManager();
+ connection = null;
+ }
+
+ //return true if log in is successful
+ public boolean logIn(String name, String passw) throws IOException {
+ boolean result = false;
+ openDatabaseConnection();
+ if (userExists(name)) {
+ //if user exist you can log in
+ ResultSet rs = null;
+ try {
+ String query = "SELECT * FROM " + TABLE_NAME +" WHERE USERNAME = ? AND PASSWORD = ?";
+ PreparedStatement pst = connection.prepareStatement(query);
+ pst.setString(1, name);
+ pst.setString(2, passw);
+ rs = pst.executeQuery();
+ int count = 0;
+ while(rs.next()){
+ count++;
+ }
+ //count = 1 --> one user exists with the given username and password
+ //count > 1 --> multpile users exists with the same username and password (precondition check is done)
+ //count = 0 --> user DNE
+ if(count == 1){
+ //log in successful
+ System.out.println("Successful log in");
+ //game.setUsername(name); //NULL POINTER yedik
+ //read level and score from database
+
+ int level = -9; //databaseden çekilecek
+ level = retrieveLevel(name);
+
+ int score = -9; //databaseden çekilecek
+ score = retrieveScore(name);
+
+ user.setUsername(name);
+ user.setScore(score);
+ user.setLastPassedLevel(level);
+ game.setUser(user); //game now has the user
+ game.printUserInfo();
+ result = true;
+ }
+ else{
+ System.out.println("Unsuccessful log in");
+ }
+ }
+ catch(SQLException e){
+ System.out.println("Exception in logIn method" + e);
+ }
+ }
+ closeDatabaseConnection();
+ return result;
+ }
+
+ //return true if register is successful
+ public boolean registerUser(String username, String password){
+ //add new user to database if username is not taken
+ //first open database connection
+ openDatabaseConnection();
+ if(!userExists(username)){
+ System.out.println("User does not exists");
+ //user is not in database
+ int levelNo = 0; //initial level is 0
+ int score = 0; //initially score is 0
+ String sql = "INSERT INTO " + TABLE_NAME + " (username,password,level,totalScore) VALUES(?,?,?,?)";
+
+ try {
+ PreparedStatement pstmt = connection.prepareStatement(sql);
+ pstmt.setString(1,username);
+ pstmt.setString(2,password);
+ pstmt.setInt(3,levelNo);
+ pstmt.setInt(4, score);
+ pstmt.executeUpdate();
+
+ //user ın score ve level ı ayarlanmalı
+ user.setUsername(username);
+ user.setScore(score);
+ user.setLastPassedLevel(levelNo);
+
+ game.setUser(user); //game now has the user
+ game.printUserInfo();
+
+ return true;
+
+ } catch(SQLException e){
+ System.out.println("Exception in register user method" + e);
+ return false;
+ }
+ }
+ else{
+ System.out.println("User exists!");
+ }
+ return false;
+ }
+
+ //returns true if user exists
+ public boolean userExists(String name){
+ //check database
+ //return true if user is in database
+ boolean result = false;
+ ResultSet rs = null;
+ try{
+ String query = "SELECT * FROM " + TABLE_NAME + " WHERE USERNAME = ?";
+ PreparedStatement pst = connection.prepareStatement(query);
+ pst.setString(1,name);
+ rs = pst.executeQuery();
+
+ int count = 0;
+ while(rs.next()){
+ count++;
+ }
+ if(count == 1){
+ //user exists
+ result = true;
+ }
+ //if(count > 1) --> user duplicate but we will not have such a case
+ else{
+ //user does not exist
+ result = false;
+ }
+
+ } catch(SQLException e){
+ System.out.println("Exception in userExists method: " + e);
+ }
+ return result;
+ }
+
+ //return true if update score is successful
+ //update score in database
+ public boolean updateScore(String username, int score){
+ //return true if score change is successful
+ /*
+ updateScore ve updateLevelPasssed oyun bittikten sonra çağırılacak
+ oyunu oynayan kişinin bilgileri database e yazılabilsin diye
+ */
+ boolean result = false;
+ openDatabaseConnection();
+
+ if(userExists(username)){
+ //update score if user exists
+
+ String sql = "UPDATE " + TABLE_NAME + " SET TOTALSCORE = ? WHERE USERNAME = ?";
+ try {
+ PreparedStatement pst = connection.prepareStatement(sql);
+ pst.setInt(1, score);
+ pst.setString(2,username);
+ pst.executeUpdate();
+ result = true;
+
+ } catch (SQLException e) {
+ System.out.println("Exception in updateScore method" + e);
+ //e.printStackTrace();
+ }
+ }
+
+ closeDatabaseConnection();
+ return result;
+ }
+
+ //update last level passed in database, return true if update is successful
+ public boolean updateLevelPassed(String username, int levelPassed){
+
+ //oyundan userın son levelını alıp database e yazacak
+ openDatabaseConnection();
+ int level = 0;
+
+ if(userExists(username)){
+ String sql = "UPDATE " + TABLE_NAME + " SET LEVEL = ? WHERE USERNAME = ?";
+
+ level = levelPassed; //write last passed level of user object to database
+
+ try {
+ PreparedStatement pst = connection.prepareStatement(sql);
+ pst.setInt(1, level);
+ pst.setString(2, username);
+ pst.executeUpdate();
+ closeDatabaseConnection();
+ return true;
+
+ } catch (SQLException e) {
+ System.out.println("Exception in updateLevel method" + e);
+ }
+ }
+ closeDatabaseConnection();
+ return false;
+ }
+
+ public void openDatabaseConnection(){
+ connection = connectionManager.getConnection(); // we will use this connection to change database
+ }
+
+ public void closeDatabaseConnection(){
+ try{
+ connection.close();
+
+ } catch(SQLException e){
+ System.out.println("Cannot close Database");
+ }
+
+ }
+
+ //returns last passed level of user
+ public int retrieveLevel(String username){
+ openDatabaseConnection();
+ int level = 0;
+ String sql = "SELECT LEVEL FROM " + TABLE_NAME + " WHERE USERNAME = ?";
+ ResultSet rs = null;
+ try {
+ PreparedStatement pst = connection.prepareStatement(sql);
+ pst.setString(1,username);
+ rs = pst.executeQuery();
+
+ while(rs.next()){
+ level = rs.getInt("LEVEL");
+ }
+
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ closeDatabaseConnection();
+ return level;
+ }
+
+ public int retrieveScore(String username){
+ openDatabaseConnection();
+ int score = 0;
+ String sql = "SELECT TOTALSCORE FROM " + TABLE_NAME + " WHERE USERNAME = ?";
+ ResultSet rs = null;
+ try {
+ PreparedStatement pst = connection.prepareStatement(sql);
+ pst.setString(1,username);
+ rs = pst.executeQuery();
+
+ while(rs.next()){
+ score = rs.getInt("TOTALSCORE");
+ }
+
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ closeDatabaseConnection();
+ return score;
+ }
+
+ //return user array
+ public User[] fillLeaderBoard(User[]userArray){
+ openDatabaseConnection();
+
+ int index = 0;
+ String sql = "SELECT* FROM " + TABLE_NAME;
+ ResultSet rs = null;
+
+ try {
+ PreparedStatement pst = connection.prepareStatement(sql);
+ rs = pst.executeQuery();
+ while(rs.next()){
+ String username = rs.getString("USERNAME");
+ int lastLevelPassed = rs.getInt("LEVEL");
+ int totalScore = rs.getInt("TOTALSCORE");
+
+ User newUser = new User();
+ newUser.setUsername(username);
+ newUser.setLastPassedLevel(lastLevelPassed);
+ newUser.setScore(totalScore);
+ userArray[index] = newUser;
+ index++;
+ }
+
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ closeDatabaseConnection();
+ return userArray;
+ }
+}
\ No newline at end of file
diff --git a/src/Game.java b/src/Game.java
new file mode 100755
index 0000000..93f3367
--- /dev/null
+++ b/src/Game.java
@@ -0,0 +1,726 @@
+package sample;
+
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.stage.Stage;
+
+import java.io.IOException;
+import java.util.ArrayList;
+
+public class Game {
+
+ Piece pieceOne;
+ Piece pieceTwo;
+ Piece pieceThree;
+ Piece pieceThreeVersion2;
+ Piece pieceFour;
+ Piece pieceFive;
+ Piece pieceSix;
+ Piece pieceSixVersion2;
+ Piece pieceSeven;
+ Piece pieceEight;
+ Piece pieceNine;
+ Piece pieceTen;
+ Piece pieceTenVersion2;
+ Piece pieceEleven;
+ Piece pieceTwelve;
+ Piece pieceTwelve2;
+ Piece pieceTwo2;
+ Piece pieceEleven2;
+
+ //Levels Declaration Assume we have 5 twoDLevels
+ Level levelOne;
+ Level levelTwo;
+ Level levelThree;
+ Level levelFour;
+ Level levelFive;
+ Level levelSix;
+ Level levelSeven;
+
+ Level[] twoDLevels;
+
+ private int current2DLevel;
+ private int current3DLevel;
+
+ private int lastPassed2d;
+
+ private static Game ourInstance = new Game();
+
+ User user;
+ DatabaseManager database;
+
+ public static Game getInstance() {
+ return ourInstance;
+ }
+
+ public static void setInstance(Game gameInstance){
+ ourInstance = gameInstance;
+ }
+
+ private Game(){
+ current2DLevel = 0;
+ current3DLevel = 0;
+ lastPassed2d = 0;
+ user = new User();
+ database = new DatabaseManager();
+
+ twoDLevels = new Level[15];
+
+ constructPieces();
+ constructLevels();
+ }
+
+ public void constructPieces(){
+
+
+ // PIECE 1
+ int[][] pieceOneMatrix = new int[4][4];
+ pieceOneMatrix[0][0] = 1;
+ pieceOneMatrix[1][0] = 1;
+ pieceOneMatrix[2][0] = 1;
+ pieceOneMatrix[2][1] = 1;
+ pieceOneMatrix[3][1] = 1;
+
+ int pieceOneId = 1;
+ Image pieceOneImage = new Image("file:images/p1.png");
+ ImageView pieceOneImageView = new ImageView(pieceOneImage);
+
+ //---------------------------------------------------------------------------------------------------------
+
+ // PIECE 2
+ int[][] pieceTwoMatrix = new int[4][4];
+ pieceTwoMatrix[2][0] = 1;
+ pieceTwoMatrix[2][1] = 1;
+ pieceTwoMatrix[2][2] = 1;
+ pieceTwoMatrix[1][2] = 1;
+ pieceTwoMatrix[0][2] = 1;
+
+ int pieceTwoId = 2;
+ Image pieceTwoImage = new Image("file:images/p2.png");
+ ImageView pieceTwoImageView = new ImageView(pieceTwoImage);
+
+ //---------------------------------------------------------------------------------------------------------
+
+ //PIECE 3
+ int [][]pieceThreeMatrix = new int[4][4];
+ pieceThreeMatrix[0][0] = 1;
+ pieceThreeMatrix[0][1] = 1;
+ pieceThreeMatrix[0][2] = 1;
+ pieceThreeMatrix[0][3] = 1;
+ pieceThreeMatrix[1][2] = 1;
+
+ int pieceThreeId = 3;
+ Image pieceThreeImage = new Image("file:images/p3.png");
+ ImageView pieceThreeImageView = new ImageView(pieceThreeImage);
+
+ //---------------------------------------------------------------------------------------------------------
+
+
+ //PIECE 3 Version 2
+ int [][]pieceThreeVersion2Matrix = new int[4][4];
+ pieceThreeVersion2Matrix[0][0] = 1;
+ pieceThreeVersion2Matrix[0][1] = 1;
+ pieceThreeVersion2Matrix[0][2] = 1;
+ pieceThreeVersion2Matrix[0][3] = 1;
+ pieceThreeVersion2Matrix[1][2] = 1;
+
+ int pieceThreeVersion2Id = 30;
+ Image pieceThreeVersion2Image = new Image("file:images/p3Version2.png");
+ ImageView pieceThreeVersion2ImageView = new ImageView(pieceThreeVersion2Image);
+
+ //---------------------------------------------------------------------------------------------------------
+
+ //PIECE 4
+ int [][]pieceFourMatrix = new int[4][4];
+ pieceFourMatrix[0][0] = 1;
+ pieceFourMatrix[1][0] = 1;
+ pieceFourMatrix[1][1] = 1;
+
+ int pieceFourId = 4;
+ Image pieceFourImage = new Image("file:images/p4.png");
+ ImageView pieceFourImageView = new ImageView(pieceFourImage);
+
+
+ //---------------------------------------------------------------------------------------------------------
+
+ // PIECE 5
+ int[][] pieceFiveMatrix = new int[4][4];
+ pieceFiveMatrix[0][1] = 1;
+ pieceFiveMatrix[1][0] = 1;
+ pieceFiveMatrix[1][1] = 1;
+ pieceFiveMatrix[2][1] = 1;
+
+ int pieceFiveId = 5;
+ Image pieceFiveImage = new Image("file:images/p5.png");
+ ImageView pieceFiveImageView = new ImageView(pieceFiveImage);
+
+ //---------------------------------------------------------------------------------------------------------
+
+ // PIECE 6
+ int[][] pieceSixMatrix = new int[4][4];
+ pieceSixMatrix[0][1] = 1;
+ pieceSixMatrix[1][0] = 1;
+ pieceSixMatrix[1][1] = 1;
+ pieceSixMatrix[2][1] = 1;
+ pieceSixMatrix[2][2] = 1;
+
+ int pieceSixId = 6;
+ Image pieceSixImage = new Image("file:images/p6.png");
+ ImageView pieceSixImageView = new ImageView(pieceSixImage);
+
+ //---------------------------------------------------------------------------------------------------------
+
+ // PIECE 6 VERSION 2
+ int[][] pieceSixVersion2Matrix = new int[4][4];
+ pieceSixVersion2Matrix[0][2] = 1;
+ pieceSixVersion2Matrix[1][2] = 1;
+ pieceSixVersion2Matrix[1][3] = 1;
+ pieceSixVersion2Matrix[2][1] = 1;
+ pieceSixVersion2Matrix[2][2] = 1;
+
+ int pieceSixVersion2Id = 60;
+ Image pieceSixVersion2Image = new Image("file:images/p6Version2.png");
+ ImageView pieceSixVersion2ImageView = new ImageView(pieceSixVersion2Image);
+
+ //---------------------------------------------------------------------------------------------------------
+
+ // PIECE 7
+ int[][] pieceSevenMatrix = new int[4][4];
+ pieceSevenMatrix[0][1] = 1;
+ pieceSevenMatrix[1][0] = 1;
+ pieceSevenMatrix[1][1] = 1;
+ pieceSevenMatrix[2][0] = 1;
+
+ int pieceSevenId = 7;
+ Image pieceSevenImage = new Image("file:images/p7.png");
+ ImageView pieceSevenImageView = new ImageView(pieceSevenImage);
+
+ //---------------------------------------------------------------------------------------------------------
+
+ // PIECE 8
+ int[][] pieceEightMatrix = new int[4][4];
+ pieceEightMatrix[0][1] = 1;
+ pieceEightMatrix[1][0] = 1;
+ pieceEightMatrix[1][1] = 1;
+ pieceEightMatrix[2][0] = 1;
+
+ int pieceEightId = 8;
+ Image pieceEightImage = new Image("file:images/p8.png");
+ ImageView pieceEightImageView = new ImageView(pieceEightImage);
+
+ //---------------------------------------------------------------------------------------------------------
+
+ // PIECE 9
+ int[][] pieceNineMatrix = new int[4][4];
+ pieceNineMatrix[0][0] = 1;
+ pieceNineMatrix[0][1] = 1;
+ pieceNineMatrix[1][0] = 1;
+ pieceNineMatrix[1][1] = 1;
+ pieceNineMatrix[1][2] = 1;
+
+ int pieceNineId = 9;
+ Image pieceNineImage = new Image("file:images/p9.png");
+ ImageView pieceNineImageView = new ImageView(pieceNineImage);
+
+ //---------------------------------------------------------------------------------------------------------
+
+ // PIECE 10
+ int[][] pieceTenMatrix = new int[4][4];
+ pieceTenMatrix[0][0] = 1;
+ pieceTenMatrix[0][1] = 1;
+ pieceTenMatrix[1][1] = 1;
+ pieceTenMatrix[2][1] = 1;
+ pieceTenMatrix[3][1] = 1;
+
+ int pieceTenId = 10;
+ Image pieceTenImage = new Image("file:images/p10.png");
+ ImageView pieceTenImageView = new ImageView(pieceTenImage);
+
+ //---------------------------------------------------------------------------------------------------------
+
+
+ // PIECE 10 Version 2
+ int[][] pieceTenVersion2Matrix = new int[4][4];
+ pieceTenVersion2Matrix[0][2] = 1;
+ pieceTenVersion2Matrix[0][3] = 1;
+ pieceTenVersion2Matrix[1][2] = 1;
+ pieceTenVersion2Matrix[2][2] = 1;
+ pieceTenVersion2Matrix[3][2] = 1;
+
+ int pieceTenVersion2Id = 100;
+ Image pieceTenVersion2Image = new Image("file:images/p10Version2.png");
+ ImageView pieceTenVersion2ImageView = new ImageView(pieceTenVersion2Image);
+
+
+ //---------------------------------------------------------------------------------------------------------
+
+ // PIECE 11
+ int[][] pieceElevenMatrix = new int[4][4];
+ pieceElevenMatrix[0][0] = 1;
+ pieceElevenMatrix[0][1] = 1;
+ pieceElevenMatrix[0][2] = 1;
+ pieceElevenMatrix[1][0] = 1;
+ pieceElevenMatrix[1][2] = 1;
+
+ int pieceElevenId = 11;
+ Image pieceElevenImage= new Image("file:images/p11.png");
+ ImageView pieceElevenImageView = new ImageView(pieceElevenImage);
+ //pieceElevenImageView.setFitWidth(240);
+ //pieceElevenImageView.setFitHeight(240);
+
+ //---------------------------------------------------------------------------------------------------------
+
+ // PIECE 12
+ int[][] pieceTwelveMatrix = new int[4][4];
+ pieceTwelveMatrix[0][0] = 1;
+ pieceTwelveMatrix[1][0] = 1;
+ pieceTwelveMatrix[1][1] = 1;
+ pieceTwelveMatrix[2][1] = 1;
+ pieceTwelveMatrix[2][2] = 1;
+
+ int pieceTwelveId = 12;
+ Image pieceTwelveImage = new Image("file:images/p12.png");
+ ImageView pieceTwelveImageView = new ImageView(pieceTwelveImage);
+
+ //---------------------------------------------------------------------------------------------------------
+ // PIECE 13
+ int[][] pieceTwo2Matrix = new int[4][4];
+ pieceTwo2Matrix[2][0] = 1;
+ pieceTwo2Matrix[2][1] = 1;
+ pieceTwo2Matrix[2][2] = 1;
+ pieceTwo2Matrix[1][2] = 1;
+ pieceTwo2Matrix[0][2] = 1;
+
+ int pieceTwo2Id = 2;
+ Image pieceTwo2Image = new Image("file:images/p2.png");
+ ImageView pieceTwo2ImageView = new ImageView(pieceTwo2Image);
+
+ //---------------------------------------------------------------------------------------------------------
+
+ // PIECE 12-2
+ int[][] pieceTwelve2Matrix = new int[4][4];
+ pieceTwelve2Matrix[0][0] = 1;
+ pieceTwelve2Matrix[1][0] = 1;
+ pieceTwelve2Matrix[1][1] = 1;
+ pieceTwelve2Matrix[2][1] = 1;
+ pieceTwelve2Matrix[2][2] = 1;
+
+ int pieceTwelve2Id = 12;
+ Image pieceTwelve2Image = new Image("file:images/p12.png");
+ ImageView pieceTwelve2ImageView = new ImageView(pieceTwelve2Image);
+ //---------------------------------------------------------------------------------------------------------
+
+ // PIECE 11-2
+ int[][] pieceEleven2Matrix = new int[4][4];
+ pieceEleven2Matrix[0][0] = 1;
+ pieceEleven2Matrix[0][1] = 1;
+ pieceEleven2Matrix[0][2] = 1;
+ pieceEleven2Matrix[1][0] = 1;
+ pieceEleven2Matrix[1][2] = 1;
+
+ int pieceEleven2Id = 11;
+ Image pieceEleven2Image= new Image("file:images/p11.png");
+ ImageView pieceEleven2ImageView = new ImageView(pieceEleven2Image);
+
+
+ //PIECE CONSTRUCTIONS
+ pieceOne = new Piece(pieceOneId, pieceOneImageView, pieceOneMatrix);
+ pieceTwo = new Piece(pieceTwoId, pieceTwoImageView, pieceTwoMatrix);
+ pieceThree = new Piece(pieceThreeId, pieceThreeImageView, pieceThreeMatrix);
+ pieceThreeVersion2 = new Piece(pieceThreeVersion2Id, pieceThreeVersion2ImageView, pieceThreeVersion2Matrix);
+ pieceFour = new Piece(pieceFourId, pieceFourImageView, pieceFourMatrix);
+ pieceFive = new Piece(pieceFiveId, pieceFiveImageView, pieceFiveMatrix);
+ pieceSix = new Piece(pieceSixId, pieceSixImageView, pieceSixMatrix);
+ pieceSixVersion2 = new Piece(pieceSixVersion2Id, pieceSixVersion2ImageView, pieceSixVersion2Matrix);
+ pieceSeven = new Piece(pieceSevenId, pieceSevenImageView, pieceSevenMatrix);
+ pieceEight = new Piece(pieceEightId, pieceEightImageView, pieceEightMatrix);
+ pieceNine = new Piece(pieceNineId, pieceNineImageView, pieceNineMatrix);
+ pieceTen = new Piece(pieceTenId, pieceTenImageView, pieceTenMatrix);
+ pieceTenVersion2 = new Piece(pieceTenVersion2Id, pieceTenVersion2ImageView, pieceTenVersion2Matrix);
+ pieceEleven = new Piece(pieceElevenId, pieceElevenImageView, pieceElevenMatrix);
+ pieceTwelve = new Piece(pieceTwelveId, pieceTwelveImageView, pieceTwelveMatrix);
+ pieceTwo2 = new Piece(pieceTwo2Id, pieceTwo2ImageView, pieceTwo2Matrix);
+ pieceTwelve2 = new Piece(pieceTwelveId, pieceTwelve2ImageView, pieceTwelve2Matrix);
+ pieceEleven2 = new Piece(pieceEleven2Id, pieceEleven2ImageView, pieceEleven2Matrix);
+
+
+ //---------------------------------------------------------------------------------------------------------
+ }
+
+
+ // bu metod bütün levelları initalize eder
+ public void constructLevels(){
+
+ int levelWidth = 11;
+ int levelHeight = 5;
+
+ //----------------------------------------------------------------------------------------------
+
+ // LEVEL 1 CONSTRUCTION
+ int[][] levelOneMatrix = new int[levelHeight][levelWidth];
+ for(int i = 0; i < levelHeight; i++){
+ for(int m = 0; m < levelWidth; m++){
+ levelOneMatrix[i][m] = 1;
+ }
+ }
+
+ levelOneMatrix[0][10] = 0;
+ levelOneMatrix[1][10] = 0;
+ levelOneMatrix[2][10] = 0;
+ levelOneMatrix[3][10] = 0;
+ levelOneMatrix[4][10] = 0;
+ levelOneMatrix[0][9] = 0;
+ levelOneMatrix[1][9] = 0;
+ levelOneMatrix[2][9] = 0;
+ levelOneMatrix[3][9] = 0;
+ levelOneMatrix[4][9] = 0;
+ levelOneMatrix[1][8] = 0;
+ levelOneMatrix[2][8] = 0;
+ levelOneMatrix[3][8] = 0;
+ levelOneMatrix[1][7] = 0;
+ levelOneMatrix[2][7] = 0;
+
+ ArrayList<Piece> unusedPieces = new ArrayList<>();
+ unusedPieces.add(pieceTen);
+ unusedPieces.add(pieceEleven);
+ unusedPieces.add(pieceTwelve);
+
+
+ Image levelOneImage = new Image("file:images/level1Board.png");
+ ImageView levelOneView = new ImageView(levelOneImage);
+ levelOne = new Level(0,60, unusedPieces, levelOneMatrix, levelOneView);
+
+ //----------------------------------------------------------------------------------------------
+
+ //LEVEL 2 CONSTRUCTION
+ int[][] levelTwoMatrix = new int[levelHeight][levelWidth];
+ for(int i = 0; i < levelHeight; i++){
+ for(int m = 0; m < levelWidth; m++){
+ levelTwoMatrix[i][m] = 1;
+ }
+ }
+
+ levelTwoMatrix[1][7] = 0;
+ levelTwoMatrix[1][9] = 0;
+ levelTwoMatrix[2][6] = 0;
+ levelTwoMatrix[2][7] = 0;
+ levelTwoMatrix[2][8] = 0;
+ levelTwoMatrix[2][9] = 0;
+ levelTwoMatrix[2][10] = 0;
+ levelTwoMatrix[3][7] = 0;
+ levelTwoMatrix[3][8] = 0;
+ levelTwoMatrix[3][9] = 0;
+ levelTwoMatrix[3][10] = 0;
+ levelTwoMatrix[4][8] = 0;
+ levelTwoMatrix[4][9] = 0;
+ levelTwoMatrix[4][10] = 0;
+
+
+ ArrayList<Piece> unusedPieces2 = new ArrayList<>();
+ unusedPieces2 = new ArrayList<>();
+ unusedPieces2.add(pieceTwo);
+ unusedPieces2.add(pieceSix);
+ unusedPieces2.add(pieceFive);
+
+ Image levelTwoImage = new Image("file:images/level2Board.png");
+ ImageView levelTwoView = new ImageView(levelTwoImage);
+ levelTwo = new Level(1,60, unusedPieces2, levelTwoMatrix, levelTwoView);
+
+ //----------------------------------------------------------------------------------------------
+
+ //LEVEL 3 CONSTRUCTION (Level 6 in real game)
+
+ int[][] levelThreeMatrix = new int[levelHeight][levelWidth];
+ for(int i = 0; i < levelHeight; i++){
+ for(int m = 0; m < levelWidth; m++){
+ levelThreeMatrix[i][m] = 2;
+ }
+ }
+
+ levelThreeMatrix[2][2] = 0;
+ levelThreeMatrix[2][3] = 0;
+ levelThreeMatrix[2][4] = 0;
+ levelThreeMatrix[3][0] = 0;
+ levelThreeMatrix[3][1] = 0;
+ levelThreeMatrix[3][2] = 0;
+ levelThreeMatrix[3][3] = 0;
+ levelThreeMatrix[3][4] = 0;
+ levelThreeMatrix[4][0] = 0;
+ levelThreeMatrix[4][1] = 0;
+ levelThreeMatrix[4][2] = 0;
+ levelThreeMatrix[4][3] = 0;
+ levelThreeMatrix[4][4] = 0;
+
+ ArrayList<Piece> unusedPieces3 = new ArrayList<>();
+ unusedPieces3.add(pieceOne);
+ unusedPieces3.add(pieceFour);
+ unusedPieces3.add(pieceTenVersion2);
+
+ Image levelThreeImage = new Image("file:images/level6Board.png");
+ ImageView levelThreeView = new ImageView(levelThreeImage);
+ levelThree = new Level(2,60, unusedPieces3, levelThreeMatrix, levelThreeView);
+
+ //----------------------------------------------------------------------------------------------
+
+ //LEVEL 4 CONSTRUCTION (Level 8 in real game)
+
+ int[][] levelFourMatrix = new int[levelHeight][levelWidth];
+ for(int i = 0; i < levelHeight; i++){
+ for(int m = 0; m < levelWidth; m++){
+ levelFourMatrix[i][m] = 0;
+ }
+ }
+
+ levelFourMatrix[1][1] = 0;
+ levelFourMatrix[2][0] = 0;
+ levelFourMatrix[2][1] = 0;
+ levelFourMatrix[2][2] = 0;
+ levelFourMatrix[2][3] = 0;
+ levelFourMatrix[3][0] = 0;
+ levelFourMatrix[3][1] = 0;
+ levelFourMatrix[3][2] = 0;
+ levelFourMatrix[3][3] = 0;
+ levelFourMatrix[4][0] = 0;
+ levelFourMatrix[4][1] = 0;
+ levelFourMatrix[4][2] = 0;
+ levelFourMatrix[4][3] = 0;
+
+ ArrayList<Piece> unusedPieces4 = new ArrayList<>();
+ unusedPieces4.add(pieceThreeVersion2);
+ unusedPieces4.add(pieceFour);
+ unusedPieces4.add(pieceSix);
+
+ Image levelFourImage = new Image("file:images/level8Board.png");
+ ImageView levelFourView = new ImageView(levelFourImage);
+ levelFour = new Level(3,60, unusedPieces4, levelFourMatrix, levelFourView);
+
+ //----------------------------------------------------------------------------------------------
+
+ //LEVEL 5 CONSTRUCTION (Level 10 in real game)
+
+ int[][] levelFiveMatrix = new int[levelHeight][levelWidth];
+ for(int i = 0; i < levelHeight; i++){
+ for(int m = 0; m < levelWidth; m++){
+ levelFiveMatrix[i][m] = 13;
+ }
+ }
+
+ levelFiveMatrix[0][6] = 0;
+ levelFiveMatrix[0][7] = 0;
+ levelFiveMatrix[0][8] = 0;
+ levelFiveMatrix[0][9] = 0;
+ levelFiveMatrix[0][10] = 0;
+ levelFiveMatrix[1][6] = 0;
+ levelFiveMatrix[1][7] = 0;
+ levelFiveMatrix[1][8] = 0;
+ levelFiveMatrix[1][9] = 0;
+ levelFiveMatrix[1][10] = 0;
+ levelFiveMatrix[2][7] = 0;
+ levelFiveMatrix[2][8] = 0;
+ levelFiveMatrix[2][9] = 0;
+ levelFiveMatrix[2][10] = 0;
+ levelFiveMatrix[3][8] = 0;
+ levelFiveMatrix[3][9] = 0;
+ levelFiveMatrix[3][10] = 0;
+ levelFiveMatrix[4][8] = 0;
+ levelFiveMatrix[4][9] = 0;
+ levelFiveMatrix[4][10] = 0;
+
+
+ ArrayList<Piece> unusedPieces5 = new ArrayList<>();
+ unusedPieces5.add(pieceTwo2);
+ unusedPieces5.add(pieceNine);
+ unusedPieces5.add(pieceEleven2);
+ unusedPieces5.add(pieceTwelve2);
+
+ Image levelFiveImage = new Image("file:images/level10Board.png");
+ ImageView levelFiveView = new ImageView(levelFiveImage);
+ levelFive = new Level(4,120, unusedPieces5, levelFiveMatrix, levelFiveView);
+
+ //----------------------------------------------------------------------------------------------
+
+ //LEVEL 6 CONSTRUCTION (12 in real game)
+
+ int[][] levelSixMatrix = new int[levelHeight][levelWidth];
+ for(int i = 0; i < levelHeight; i++){
+ for(int m = 0; m < levelWidth; m++){
+ levelSixMatrix[i][m] = 2;
+ }
+ }
+
+ levelSixMatrix[1][0] = 0;
+ levelSixMatrix[2][0] = 0;
+ levelSixMatrix[3][0] = 0;
+ levelSixMatrix[4][0] = 0;
+ levelSixMatrix[2][1] = 0;
+ levelSixMatrix[3][1] = 0;
+ levelSixMatrix[4][1] = 0;
+ levelSixMatrix[2][2] = 0;
+ levelSixMatrix[3][2] = 0;
+ levelSixMatrix[4][2] = 0;
+ levelSixMatrix[1][3] = 0;
+ levelSixMatrix[2][3] = 0;
+ levelSixMatrix[3][3] = 0;
+ levelSixMatrix[4][3] = 0;
+ levelSixMatrix[1][4] = 0;
+ levelSixMatrix[2][4] = 0;
+ levelSixMatrix[3][4] = 0;
+ levelSixMatrix[4][4] = 0;
+ levelSixMatrix[4][5] = 0;
+ levelSixMatrix[3][5] = 0;
+
+ ArrayList<Piece> unusedPieces6 = new ArrayList<>();
+ unusedPieces6.add(pieceThreeVersion2);
+ unusedPieces6.add(pieceTenVersion2);
+ unusedPieces6.add(pieceTwelve);
+ unusedPieces6.add(pieceSixVersion2);
+
+ Image levelSixImage = new Image("file:images/level12Board.png");
+ ImageView levelSixView = new ImageView(levelSixImage);
+ levelSix = new Level(5,60, unusedPieces6, levelSixMatrix, levelSixView);
+
+ //----------------------------------------------------------------------------------------------
+
+ //LEVEL 7 CONSTRUCTION (35 in real game)
+
+ int[][] levelSevenMatrix = new int[levelHeight][levelWidth];
+ for(int i = 0; i < levelHeight; i++){
+ for(int m = 0; m < levelWidth; m++){
+ levelSevenMatrix[i][m] = 0;
+ }
+ }
+ levelSevenMatrix[0][0] = 2;
+ levelSevenMatrix[1][0] = 2;
+ levelSevenMatrix[2][0] = 2;
+ levelSevenMatrix[0][1] = 2;
+ levelSevenMatrix[1][1] = 2;
+ levelSevenMatrix[0][2] = 2;
+ levelSevenMatrix[1][2] = 2;
+ levelSevenMatrix[0][3] = 2;
+ levelSevenMatrix[0][4] = 2;
+ levelSevenMatrix[1][4] = 2;
+ levelSevenMatrix[2][4] = 2;
+ levelSevenMatrix[2][5] = 2;
+ levelSevenMatrix[2][6] = 2;
+ levelSevenMatrix[3][6] = 2;
+
+
+ ArrayList<Piece> unusedPieces7 = new ArrayList<>();
+ unusedPieces7.add(pieceOne);
+ unusedPieces7.add(pieceTwo);
+ unusedPieces7.add(pieceThree);
+ unusedPieces7.add(pieceFour);
+ unusedPieces7.add(pieceFive);
+ unusedPieces7.add(pieceSix);
+ unusedPieces7.add(pieceSeven);
+ unusedPieces7.add(pieceTen);
+ unusedPieces7.add(pieceTwelve);
+
+ Image levelSevenImage = new Image("file:images/level35.png");
+ ImageView levelSevenView = new ImageView(levelSevenImage);
+ levelSeven = new Level(6,60, unusedPieces7, levelSevenMatrix, levelSevenView);
+
+ //----------------------------------------------------------------------------------------------
+
+ twoDLevels[0] = levelOne;
+ twoDLevels[1] = levelTwo;
+ twoDLevels[2] = levelThree;
+ twoDLevels[3] = levelFive;
+ twoDLevels[4] = levelSix;
+ twoDLevels[5] = levelTwo;
+ twoDLevels[6] = levelOne;
+
+ //twoDLevels[5] = levelSeven;
+ //twoDLevels[6] = levelFour;
+ }
+
+
+ public void finishGame(int score, int levelId){
+ if(lastPassed2d < levelId)
+ lastPassed2d = levelId;
+ twoDLevels[current2DLevel].setHighScore(score);
+ current2DLevel++;
+ userScore();
+ System.out.print("this last pass" + lastPassed2d);
+ }
+
+ public void setSettings(){
+ // Will be imlemented later
+ }
+
+ public void nextLevel(){
+
+ user.setLastPassedLevel(current2DLevel + 1);
+
+ //SİL
+ printUserInfo();
+
+ current2DLevel++;
+ }
+
+
+
+ public void setUser(User newUser){
+ user = newUser;
+ }
+
+ public void printUserInfo(){
+ System.out.println("USER:");
+ System.out.println("username: " + user.getUsername() + "\nscore: " + user.getScore() + "\nlast passed: " + user.getLastPassedLevel());
+ }
+
+ public int getCurrent2DLevel(){
+ return current2DLevel;
+ }
+
+
+ public void replayLevel(){
+ current2DLevel+=1;
+ current2DLevel-=1;
+ }
+
+ public void replay(){
+ try {
+ twoDLevels[current2DLevel].setElapsedTime(0);
+ Parent root = FXMLLoader.load(getClass().getResource("View/GameOverScreen.fxml"));
+ Stage window = Main.getMainStage();
+ Scene scene = new Scene(root);
+ window.setTitle("GAME OVER");
+ window.setScene(scene);
+ window.centerOnScreen();
+ Main.setMainStage(window);
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ public void userScore(){
+
+ int totalScore = 0;
+ for(int i = 0; i < lastPassed2d + 1; i++)
+ totalScore += twoDLevels[i].getHighScore();
+ System.out.println("totalScore"+ totalScore);
+
+ user.setScore(totalScore);
+ user.setLastPassedLevel(lastPassed2d);
+ database.updateScore(user.getUsername(), user.getScore());
+ database.updateLevelPassed(user.getUsername(), user.getLastPassedLevel());
+ }
+
+ public int getLastPassed2d(){
+ return lastPassed2d;
+ }
+
+ public void setCurrent2DLevel(int level){
+ current2DLevel = level;
+ }
+
+
+
+}
+
diff --git a/src/GameOverScreen.fxml b/src/GameOverScreen.fxml
new file mode 100644
index 0000000..dcfe1a8
--- /dev/null
+++ b/src/GameOverScreen.fxml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+
+<AnchorPane prefHeight="286.0" prefWidth="442.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.GameOverScreen">
+ <children>
+ <ImageView fitHeight="451.0" fitWidth="621.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/FinishScreen.png" />
+ </image>
+ </ImageView>
+ <ImageView fitHeight="84.0" fitWidth="384.0" layoutX="129.0" layoutY="38.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/Ribbon.png" />
+ </image>
+ </ImageView>
+ <ImageView fitHeight="150.0" fitWidth="200.0" layoutX="221.0" layoutY="52.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/gameover.png" />
+ </image>
+ </ImageView>
+ <ImageView fitHeight="160.0" fitWidth="284.0" layoutX="232.0" layoutY="115.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/gameOverStar.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="replayView" fitHeight="90.0" fitWidth="125.0" layoutX="345.0" layoutY="277.0" onMousePressed="#replayButtonHandle" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/DoneButton.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="exitView" fitHeight="90.0" fitWidth="125.0" layoutX="208.0" layoutY="277.0" onMousePressed="#exitButtonHandle" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/ReplayButton.png" />
+ </image>
+ </ImageView>
+ <Label layoutX="368.0" layoutY="367.0" text="Replay" />
+ <Label layoutX="240.0" layoutY="367.0" text="Exit" />
+ </children>
+</AnchorPane>
diff --git a/src/GameOverScreen.java b/src/GameOverScreen.java
new file mode 100644
index 0000000..947844c
--- /dev/null
+++ b/src/GameOverScreen.java
@@ -0,0 +1,44 @@
+package sample;
+
+import javafx.application.Platform;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+import javax.swing.text.html.ImageView;
+import java.io.IOException;
+
+public class GameOverScreen {
+
+ ImageView replayView;
+ ImageView exitView;
+ Game game;
+
+
+ public void exitButtonHandle() throws IOException {
+ Platform.exit();
+
+ }
+
+
+ public void replayButtonHandle() throws IOException {
+ Game game = Game.getInstance();
+ game.replayLevel();
+ Game.setInstance(game);
+
+ Stage primaryStage = Main.getMainStage();
+
+ AdditionModel model = new AdditionModel();
+ AdditionController controller = new AdditionController(model);
+ AdditionView view = new AdditionView(controller, model);
+
+ Scene scene = new Scene(view.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+ }
+
+
+}
diff --git a/src/LeaderBoard.fxml b/src/LeaderBoard.fxml
new file mode 100755
index 0000000..d8522fb
--- /dev/null
+++ b/src/LeaderBoard.fxml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane maxHeight="600.0" maxWidth="600.0" minHeight="600.0" minWidth="600.0" prefHeight="600.0" prefWidth="600.0" style="-fx-background-color: #E5F4F4;" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.LeaderBoardController">
+ <children>
+ <ImageView fitHeight="584.0" fitWidth="681.0" layoutX="-81.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/snowy.png" />
+ </image>
+ </ImageView>
+ <Label layoutX="159.0" layoutY="110.0" text="1." textFill="WHITE">
+ <font>
+ <Font size="54.0" />
+ </font>
+ </Label>
+ <Label layoutX="155.0" layoutY="176.0" text="2." textFill="WHITE">
+ <font>
+ <Font size="54.0" />
+ </font>
+ </Label>
+ <Label layoutX="155.0" layoutY="245.0" text="3." textFill="WHITE">
+ <font>
+ <Font size="54.0" />
+ </font>
+ </Label>
+ <Label fx:id="firstUsername" layoutX="218.0" layoutY="143.0" prefHeight="26.0" prefWidth="145.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label layoutX="218.0" layoutY="93.0" prefHeight="22.0" prefWidth="145.0" style="-fx-background-color: FFA500;" text="USERNAME" textFill="WHITE">
+ <font>
+ <Font size="17.0" />
+ </font>
+ </Label>
+ <Label layoutX="384.0" layoutY="93.0" style="-fx-background-color: FFA500;" text="SCORE" textFill="WHITE">
+ <font>
+ <Font size="17.0" />
+ </font>
+ </Label>
+ <Label layoutX="155.0" layoutY="316.0" text="4." textFill="WHITE">
+ <font>
+ <Font size="54.0" />
+ </font>
+ </Label>
+ <Label fx:id="firstScore" layoutX="380.0" layoutY="143.0" prefHeight="26.0" prefWidth="65.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label fx:id="secondUsername" layoutX="218.0" layoutY="202.0" prefHeight="26.0" prefWidth="145.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label fx:id="secondScore" layoutX="380.0" layoutY="202.0" prefHeight="26.0" prefWidth="65.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label fx:id="thirdUsername" layoutX="218.0" layoutY="265.0" prefHeight="26.0" prefWidth="145.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label fx:id="thirdScore" layoutX="380.0" layoutY="265.0" prefHeight="26.0" prefWidth="65.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label fx:id="fourthUsername" layoutX="218.0" layoutY="336.0" prefHeight="26.0" prefWidth="145.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <Label fx:id="fourthScore" layoutX="380.0" layoutY="336.0" prefHeight="26.0" prefWidth="65.0" style="-fx-background-color: FFA500;" text="Label" textFill="WHITE">
+ <font>
+ <Font size="20.0" />
+ </font>
+ </Label>
+ <ImageView fx:id="backView" fitHeight="66.0" fitWidth="65.0" layoutX="503.0" layoutY="14.0" onMouseClicked="#backButtonHandle" pickOnBounds="true" preserveRatio="true" rotate="45.0">
+ <image>
+ <Image url="file:images/menu/Back.png" />
+ </image>
+ </ImageView>
+ </children>
+</AnchorPane>
diff --git a/src/LeaderBoardController.java b/src/LeaderBoardController.java
new file mode 100644
index 0000000..c5f570a
--- /dev/null
+++ b/src/LeaderBoardController.java
@@ -0,0 +1,102 @@
+package sample;
+import javafx.application.Application;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.control.cell.PropertyValueFactory;
+import javafx.scene.image.ImageView;
+import javafx.stage.Stage;
+import javafx.scene.control.Button;
+import javafx.scene.control.*;
+import javafx.scene.control.TextArea;
+
+import java.io.IOException;
+
+public class LeaderBoardController {
+
+ public Button backButton;
+ ImageView backView;
+
+
+ private DatabaseManager database;
+ private User[] userArray;
+
+ @FXML
+ Label firstUsername, secondUsername, thirdUsername, fourthUsername, firstScore, secondScore, thirdScore, fourthScore;
+
+ @FXML
+ public void initialize(){
+
+ database = new DatabaseManager();
+ userArray = new User [100];
+
+ fillLeaderBoard();
+ sortUsers();
+
+ firstUsername.setText(userArray[0].getUsername());
+ secondUsername.setText(userArray[1].getUsername());
+ thirdUsername.setText(userArray[2].getUsername());
+ fourthUsername.setText(userArray[3].getUsername());
+
+ firstScore.setText(userArray[0].getScore() + "");
+ secondScore.setText(userArray[1].getScore() + "");
+ thirdScore.setText(userArray[2].getScore() + "");
+ fourthScore.setText(userArray[3].getScore() + "");
+
+
+ }
+
+ public void fillLeaderBoard(){
+ database.fillLeaderBoard(userArray);
+ }
+
+ public void printLeaderBoard(){
+ System.out.println("USERNAME" + " " + "SCORE");
+ for(int i = 0; i < 100; i++){
+ if(userArray[i] != null) {
+ System.out.println(userArray[i].getUsername() + " " + userArray[i].getScore());
+ }
+ }
+ }
+
+ public void sortUsers(){
+ //selection sort
+ int size = 0;
+ for(int i = 0; i < 100; i++){
+ if(userArray[i] != null){
+ size++;
+ }
+ }
+
+ System.out.println(size);
+
+ //now we know the actual size of array
+ for(int i = 0; i < size-1; i++){
+ int max_id = i;
+ for(int j = i+1; j < size; j++){
+ if(userArray[j].getScore() > userArray[max_id].getScore()){
+ max_id = j;
+ }
+ }
+
+ User temp = userArray[max_id];
+ userArray[max_id] = userArray[i];
+ userArray[i] = temp;
+ }
+ }
+
+ public void backButtonHandle() throws IOException {
+
+ printLeaderBoard();
+
+ Parent root = FXMLLoader.load(getClass().getResource("mainMenu.fxml"));
+ Stage m = Main.getMainStage();
+ Scene t = Main.getMainStage().getScene();
+ t.setRoot(root);
+ m.setScene(t);
+ Main.setMainStage(m);
+ }
+}
\ No newline at end of file
diff --git a/src/Level.java b/src/Level.java
new file mode 100755
index 0000000..d256fb8
--- /dev/null
+++ b/src/Level.java
@@ -0,0 +1,94 @@
+package sample;
+
+import javafx.scene.image.ImageView;
+
+import java.awt.*;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+
+public class Level {
+ private int highScore;
+ private int time;
+ private int levelNo;
+ private boolean isUnlocked;
+ private int[][] levelMatrix;
+ private ImageView boardView;
+ private int elapsedTime;
+ private int extraScore;
+
+
+ ArrayList<Piece> unusedPieces;
+
+
+ public Level(int levelNo, int time, ArrayList<Piece>unusedPieces, int[][]levelMatrix, ImageView board){
+ boardView = board;
+ this.levelMatrix = levelMatrix;
+ this.levelNo = levelNo;
+ this.time = time;
+ highScore = 0;
+ this.unusedPieces = unusedPieces;
+ isUnlocked = false;
+ elapsedTime = 0;
+ }
+
+ public void setHighScore(int highScore){
+ if(this.highScore < highScore)
+ this.highScore = highScore;
+ }
+
+ public ImageView getBoardView(){
+ return boardView;
+ }
+ public int getTime(){
+ return time;
+ }
+
+ public int[][] getLevelMatrix(){
+ return levelMatrix;
+ }
+
+ public int getLevelNo(){
+ return levelNo;
+ }
+
+ public void setUnlocked(boolean lock){
+ isUnlocked = lock;
+ }
+
+ public boolean getUnlocked(){
+ return isUnlocked;
+ }
+
+ //bu metod levellarda kullanılacak piecelerin initial positionlarını ayarlar
+ public ArrayList<Piece> constructPiecePositions(){
+ ArrayList<Piece> list = new ArrayList<>();
+ return list;
+ }
+
+ public ArrayList<Piece> getUnusedPieces(){
+ return unusedPieces;
+ }
+
+ public void setElapsedTime(int time){
+ elapsedTime = time;
+ }
+ public int getElapsedTime(){
+ return elapsedTime;
+ }
+
+ public void incrementElapsedTime(){
+ elapsedTime++;
+ }
+ public int getHighScore(){return highScore; }
+
+ public boolean isTimeOver(){return (elapsedTime / 5) > time;}
+
+ public void setExtraScore(){
+ extraScore +=5;
+ }
+
+ public int getExtraScore(){
+ return extraScore;
+ }
+
+}
diff --git a/src/LoadGame.fxml b/src/LoadGame.fxml
new file mode 100755
index 0000000..49d92c1
--- /dev/null
+++ b/src/LoadGame.fxml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+
+<AnchorPane maxHeight="600.0" maxWidth="600.0" minHeight="600.0" minWidth="600.0" prefHeight="600.0" prefWidth="600.0" style="-fx-background-color: #E5F4F4;" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.LoadGameController">
+ <children>
+ <ImageView fx:id="backView" fitHeight="752.0" fitWidth="814.0" layoutX="-214.0" layoutY="-5.0" onMouseMoved="#refreshLevels" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/snowy.png" />
+ </image>
+ </ImageView>
+ <Button fx:id="backButton" layoutX="500.0" layoutY="28.0" mnemonicParsing="false" onAction="#backButtonHandle" prefHeight="31.0" prefWidth="73.0" text="Back" />
+ <ImageView fx:id="levelOneButton" fitHeight="79.0" fitWidth="73.0" layoutX="120.0" layoutY="103.0" onMouseClicked="#levelOneClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelOne.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelTwoButton" fitHeight="87.0" fitWidth="84.0" layoutX="249.0" layoutY="95.0" onMouseClicked="#levelTwoClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelTwoU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelThreeButton" fitHeight="98.0" fitWidth="73.0" layoutX="386.0" layoutY="95.0" onMouseClicked="#levelThreeClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelThreeU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelFiveButton" fitHeight="87.0" fitWidth="84.0" layoutX="249.0" layoutY="213.0" onMouseClicked="#levelFiveClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelFiveU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelEightButton" fitHeight="87.0" fitWidth="84.0" layoutX="249.0" layoutY="346.0" onMouseClicked="#levelEightClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelEightU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelSixButton" fitHeight="87.0" fitWidth="84.0" layoutX="386.0" layoutY="213.0" onMouseClicked="#levelSixClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelSixU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelNineButton" fitHeight="87.0" fitWidth="84.0" layoutX="386.0" layoutY="346.0" onMouseClicked="#levelNineClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelNineU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelSevenButton" fitHeight="87.0" fitWidth="84.0" layoutX="120.0" layoutY="346.0" onMouseClicked="#levelSevenClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levenSevenU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelFourButton" fitHeight="87.0" fitWidth="84.0" layoutX="120.0" layoutY="213.0" onMouseClicked="#levelFourClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelFourU.png" />
+ </image>
+ </ImageView>
+ <ImageView fx:id="levelTenButton" fitHeight="87.0" fitWidth="84.0" layoutX="249.0" layoutY="463.0" onMouseClicked="#levelTenClick" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/loadgame/levelTenU.png" />
+ </image>
+ </ImageView>
+ </children>
+</AnchorPane>
diff --git a/src/LoadGameController.java b/src/LoadGameController.java
new file mode 100755
index 0000000..c255e95
--- /dev/null
+++ b/src/LoadGameController.java
@@ -0,0 +1,251 @@
+package sample;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.stage.Stage;
+import javafx.scene.control.Button;
+import sample.*;
+
+
+import java.io.IOException;
+
+public class LoadGameController{
+
+ Game game = Game.getInstance();
+
+ @FXML
+ public Button backButton;
+ @FXML
+ ImageView levelOneButton, backView, levelTwoButton, levelThreeButton, levelFourButton, levelFiveButton, levelSixButton, levelSevenButton, levelEightButton, levelNineButton, levelTenButton;
+
+ private ImageView[] buttons;
+ private int levelCount;
+
+
+ @FXML
+ public void initialize(){
+ Image[] unlockImages = new Image[10];
+ unlockImages[0] = new Image("file:images/loadgame/levelOne.png");
+ unlockImages[1] = new Image("file:images/loadgame/levelTwo.png");
+ unlockImages[2] = new Image("file:images/loadgame/levelThree.png");
+ unlockImages[3] = new Image("file:images/loadgame/levelFour.png");
+ unlockImages[4] = new Image("file:images/loadgame/levelFive.png");
+ unlockImages[5] = new Image("file:images/loadgame/levelSix.png");
+ unlockImages[6] = new Image("file:images/loadgame/levelSeven.png");
+ unlockImages[7] = new Image("file:images/loadgame/levelEight.png");
+ unlockImages[8] = new Image("file:images/loadgame/levelNine.png");
+ unlockImages[9] = new Image("file:images/loadgame/levelTen.png");
+
+
+ buttons = new ImageView[10];
+ buttons[0] = levelOneButton;
+ buttons[1] = levelTwoButton;
+ buttons[2] = levelThreeButton;
+ buttons[3] = levelFourButton;
+ buttons[4] = levelFiveButton;
+ buttons[5] = levelSixButton;
+ buttons[6] = levelSevenButton;
+ buttons[7] = levelEightButton;
+ buttons[8] = levelNineButton;
+ buttons[9] = levelTenButton;
+
+
+ levelCount = game.user.getLastPassedLevel();
+
+ for(int m = 0; m < levelCount; m++){
+ buttons[m].setImage(unlockImages[m]);
+ }
+ }
+
+
+ public void levelOneClick() throws IOException{
+ game.setCurrent2DLevel(0);
+ Stage primaryStage = Main.getMainStage();
+
+ AdditionModel model = new AdditionModel();
+ AdditionController controller = new AdditionController(model);
+ AdditionView view = new AdditionView(controller, model);
+
+ Scene scene = new Scene(view.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+ }
+
+ public void levelTwoClick() throws IOException{
+
+ if (levelCount > 0) {
+ game.setCurrent2DLevel(1);
+ Stage primaryStage = Main.getMainStage();
+
+ AdditionModel model = new AdditionModel();
+ AdditionController controller = new AdditionController(model);
+ AdditionView view = new AdditionView(controller, model);
+
+ Scene scene = new Scene(view.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+ }
+ }
+ public void levelThreeClick() throws IOException{
+
+ if (levelCount > 1) {
+ game.setCurrent2DLevel(2);
+ Stage primaryStage = Main.getMainStage();
+
+ AdditionModel model = new AdditionModel();
+ AdditionController controller = new AdditionController(model);
+ AdditionView view = new AdditionView(controller, model);
+
+ Scene scene = new Scene(view.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+ }
+
+ }
+ public void levelFourClick() throws IOException{
+
+ if (levelCount > 2) {
+ game.setCurrent2DLevel(3);
+ Stage primaryStage = Main.getMainStage();
+
+ AdditionModel model = new AdditionModel();
+ AdditionController controller = new AdditionController(model);
+ AdditionView view = new AdditionView(controller, model);
+
+ Scene scene = new Scene(view.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+ }
+
+ }
+ public void levelFiveClick() throws IOException{
+ if (levelCount > 3) {
+ game.setCurrent2DLevel(4);
+ Stage primaryStage = Main.getMainStage();
+
+ AdditionModel model = new AdditionModel();
+ AdditionController controller = new AdditionController(model);
+ AdditionView view = new AdditionView(controller, model);
+
+ Scene scene = new Scene(view.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+ }
+
+ }
+ public void levelSixClick() throws IOException{
+ if (levelCount > 4) {
+ game.setCurrent2DLevel(5);
+ Stage primaryStage = Main.getMainStage();
+
+ AdditionModel model = new AdditionModel();
+ AdditionController controller = new AdditionController(model);
+ AdditionView view = new AdditionView(controller, model);
+
+ Scene scene = new Scene(view.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+ }
+
+ }
+ public void levelSevenClick() throws IOException{
+ if (levelCount > 5) {
+ game.setCurrent2DLevel(6);
+ Stage primaryStage = Main.getMainStage();
+
+ AdditionModel model = new AdditionModel();
+ AdditionController controller = new AdditionController(model);
+ AdditionView view = new AdditionView(controller, model);
+
+ Scene scene = new Scene(view.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+ }
+
+ }
+ public void levelEightClick() throws IOException{
+ if (levelCount > 6) {
+ game.setCurrent2DLevel(7);
+ Stage primaryStage = Main.getMainStage();
+
+ AdditionModel model = new AdditionModel();
+ AdditionController controller = new AdditionController(model);
+ AdditionView view = new AdditionView(controller, model);
+
+ Scene scene = new Scene(view.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+ }
+
+ }
+ public void levelNineClick() throws IOException{
+ if (levelCount > 7) {
+ game.setCurrent2DLevel(8);
+ Stage primaryStage = Main.getMainStage();
+
+ AdditionModel model = new AdditionModel();
+ AdditionController controller = new AdditionController(model);
+ AdditionView view = new AdditionView(controller, model);
+
+ Scene scene = new Scene(view.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+ }
+
+ }
+ public void levelTenClick() throws IOException{
+ if (levelCount > 8) {
+ game.setCurrent2DLevel(9);
+ Stage primaryStage = Main.getMainStage();
+
+ AdditionModel model = new AdditionModel();
+ AdditionController controller = new AdditionController(model);
+ AdditionView view = new AdditionView(controller, model);
+
+ Scene scene = new Scene(view.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+ }
+
+ }
+
+ public void backButtonHandle() throws IOException {
+ Parent root = FXMLLoader.load(getClass().getResource("mainMenu.fxml"));
+ Stage m = Main.getMainStage();
+ Scene t = Main.getMainStage().getScene();
+ t.setRoot(root);
+ m.setScene(t);
+ Main.setMainStage(m);
+ }
+
+ public void refreshLevels() throws IOException{
+ int i = game.getLastPassed2d();
+
+ for (int m = 0; m < i; m++){
+ //buttons[i].setImage()
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Main.java b/src/Main.java
new file mode 100755
index 0000000..c12712e
--- /dev/null
+++ b/src/Main.java
@@ -0,0 +1,247 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package sample;
+
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+import java.io.IOException;
+
+
+public class Main extends Application{
+
+ private static Stage mainStage;
+
+//----------------------------------------------------------------------------------------------------------------------
+/*//Puzlle piecelerinin dogru yerde oluip olmadigini kontrol eden fonksiyon degilse boardun boundarylerinin disindaysa
+//initial positiona geri donecek
+public boolean checkPieceBoundary(ImageView piece, double xPosition, double yPosition){
+
+ //Board Borders
+
+ //Boundary Locations
+ final int threshold = 10;
+ int xTopLeft = 40;
+ int yTopLeft = -468;
+ int xTopRight = 770;
+ int yTopRight = -468;
+ int xBottomLeft = 40;
+ int yBottomLeft = -194;
+ int xBottomRight = 770;
+ int yBottomRight = -194;
+
+ if((piece.getLayoutX() < xTopLeft - threshold) || (piece.getLayoutX() > xTopRight + threshold) || (piece.getLayoutY() > yBottomLeft + threshold) || (piece.getLayoutY() < yTopRight - threshold)) {
+ piece.setLayoutX(xPosition);
+ piece.setLayoutY(yPosition);
+ return false;
+ }
+ else {
+ return true;
+ }
+}
+
+*/
+
+//----------------------------------------------------------------------------------------------------------------------
+/*
+ //PIECEI BIRAZ DISARI KOYDUGUMUZDA PICECEI BOARDA FIX EDEN FONKSIYON
+ public void putPiece(ImageView piece, double [][]XboardMatrix, double [][]YboardMatrix, int [][]isFull) {
+
+ //Boundary Locations
+ final int threshold = 10;
+ int xTopLeft = 40;
+ int yTopLeft = -468;
+ int xTopRight = 770;
+ int yTopRight = -468;
+ int xBottomLeft = 40;
+ int yBottomLeft = -194;
+ int xBottomRight = 770;
+ int yBottomRight = -194;
+
+ //Boardun constructorinda initialize edilecek
+// double [][]XboardMatrix = new double[5][11];
+// double [][]YboardMatrix = new double[5][11];
+//
+// int [][] isFull = new int[5][11];
+//
+//
+// for(int i = 0; i < 5; i++) {
+// for(int j =0; j < 11; j++) {
+// XboardMatrix[i][j] = xTopLeft + (66.36)*j;
+// YboardMatrix[i][j] = yTopLeft + (66.36)*i;
+// }
+// }
+
+ double piecePositionX = piece.getLayoutX();
+ double piecePositionY = piece.getLayoutY();
+
+ int indexX = (int) (piecePositionX / (66.36));
+ int indexY = (int) ((piecePositionY+468) / (66.36));
+
+ if(((piecePositionX > (XboardMatrix[indexY][indexX] - 10)) && (piecePositionX < (XboardMatrix[indexY][indexX] + 66.36)) && (((piecePositionY > (YboardMatrix[indexY][indexX] - 10)) && (piecePositionY < (YboardMatrix[indexY][indexX] + 66.36)))))){
+
+ System.out.println(indexX);
+ System.out.println(indexY);
+
+ piece.setLayoutX(XboardMatrix[indexY][indexX] + 3);
+ piece.setLayoutY(YboardMatrix[indexY][indexX] + 13);
+ isFull[indexY][indexX] = 1;
+
+ }
+
+ }
+*/
+//----------------------------------------------------------------------------------------------------------------------
+
+ @Override
+ public void start(Stage primaryStage) throws IOException {
+ mainStage = primaryStage;
+ /*
+ BorderPane backgroundPane = new BorderPane();
+ GridPane boardPane = new GridPane();
+ HBox menuPane = new HBox();
+ menuPane.setMinSize(150,150);
+ menuPane.setMaxSize(150, 150);
+ Button pauseButton = new Button("Pause");
+ menuPane.getChildren().addAll(pauseButton);
+ // use it's predefined content pane as pieceBox pane
+ Pane pieceBox = new Pane();
+ pieceBox.setMaxSize(600, 600);
+
+ //Adding board images, and pieces
+ Image piece = new Image("file:/Users/safaaskin/IdeaProjects/Deneme/images/piece10.png");
+ Image piece2 = new Image("file:/Users/safaaskin/IdeaProjects/Deneme/images/piece11.png");
+ // Image boardImage = new Image("file:/Users/safaaskin/IdeaProjects/Deneme/images/boardpic.png");
+
+ //ImageView boardView = new ImageView(boardImage);
+ ImageView pieceView= new ImageView(piece);
+ ImageView piece2View = new ImageView(piece2);
+
+
+ pieceView.setFitHeight(66.36);
+ pieceView.setFitWidth(66.36);
+ piece2View.setFitHeight(66.36);
+ piece2View.setFitWidth(66.36);
+
+ MouseControlUtil.makeDraggable(pieceView);
+ pieceBox.getChildren().add(pieceView);
+
+ MouseControlUtil.makeDraggable(piece2View);
+ pieceBox.getChildren().add(piece2View);
+
+ pieceView.setLayoutX(40);
+ pieceView.setLayoutY(40);
+ piece2View.setLayoutX(100);
+ piece2View.setLayoutY(40);
+
+
+//----------------------------------------------------------------------------------------------------------------------
+
+ //BOARD MATRIXI INITIALIZE EDILIYOR VE BIR MATRIX XPOSITIONLARI TUTUYOR BIR MATRIX YPOSITIONLARI TUTUYOR
+ //BIR MATRIX TUM BOARD ENTRYLERININ BOS OLUP OLMADIGINI TUTUYOR
+
+ //Boardun constructorinda initialize edilecek
+ int xTopLeft = 40;
+ int yTopLeft = -468;
+
+ double [][]XboardMatrix = new double[5][11];
+ double [][]YboardMatrix = new double[5][11];
+
+ int [][] isFull = new int[5][11];
+
+
+ for(int i = 0; i < 5; i++) {
+ for(int j =0; j < 11; j++) {
+ XboardMatrix[i][j] = xTopLeft + (66.36)*j;
+ YboardMatrix[i][j] = yTopLeft + (66.36)*i;
+ }
+ }
+
+ //Piece classinda release count olacak
+ int pieceCount = 2;
+ int [] pieceDragCounter = new int [pieceCount]; // We have 2 pieces for now
+
+//--------------------------------------------------------------------------------------------------
+
+ //MOUSE RELEASED EVENT HANDLER
+ //This code calculates the position of piece
+ EventHandler handler = new EventHandler() {
+ @Override
+ public void handle(Event event) {
+
+ //if(event.getSource())
+
+
+
+ System.out.println("X: " +pieceView.getLayoutX());
+ System.out.println("Y: " +pieceView.getLayoutY());
+
+ if(board.checkPieceBoundary(pieceView, 40, 40)) {
+ putPiece(pieceView, XboardMatrix, YboardMatrix, isFull);
+ }
+
+ if(board.checkPieceBoundary(piece2View, 100, 40))
+ putPiece(piece2View, XboardMatrix, YboardMatrix, isFull);
+
+ for(int i = 0; i < 5; i++) {
+ for(int j =0; j < 11; j++) {
+ System.out.print(isFull[i][j]);
+ }
+ System.out.println();
+ }
+ }
+ };
+
+//--------------------------------------------------------------------------------------------------
+
+ //ADDING EVENTHANDLER TO PIECES
+ pieceView.addEventHandler(MouseEvent.MOUSE_RELEASED, handler);
+ piece2View.addEventHandler(MouseEvent.MOUSE_RELEASED, handler);
+
+//--------------------------------------------------------------------------------------------------
+
+ //SETTING THE PANE
+ board.getBoardView().setFitHeight(400);
+ board.getBoardView().setFitWidth(800);
+ board.getBoardView().setLayoutX(200);
+ board.getBoardView().setLayoutY(400);
+
+ pieceBox.setMaxSize(300, 300);
+ pieceBox.setMinSize(300,300);
+
+ String style = "-fx-background-color: rgba(193, 66, 66, 0.8);";
+ backgroundPane.setStyle(style);
+ boardPane.getChildren().addAll(board.getBoardView());
+ backgroundPane.setCenter(boardPane);
+ backgroundPane.setBottom(pieceBox);
+ backgroundPane.setTop(menuPane);
+
+//--------------------------------------------------------------------------------------------------
+ */
+
+ //Parent root = FXMLLoader.load(getClass().getResource("GamePlayController.fxml"));
+ Parent root = FXMLLoader.load(getClass().getResource("logInScreen.fxml"));
+ mainStage.setScene(new Scene(root));
+ mainStage.show();
+
+ }
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+
+ public static void setMainStage(Stage stage) {
+ Main.mainStage = stage;
+ }
+
+ public static Stage getMainStage() {
+ return mainStage;
+ }
+
+}
\ No newline at end of file
diff --git a/out/production/Version2IQ/sample/NewGame.fxml b/src/NewGame.fxml
old mode 100644
new mode 100755
similarity index 70%
copy from out/production/Version2IQ/sample/NewGame.fxml
copy to src/NewGame.fxml
index c1b7fc1..eb09aca
--- a/out/production/Version2IQ/sample/NewGame.fxml
+++ b/src/NewGame.fxml
@@ -8,32 +8,32 @@
<children>
<ImageView fitHeight="600.0" fitWidth="859.0" layoutX="-147.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/snowy.png" />
+ <Image url="file:images/menu/snowy.png" />
</image>
</ImageView>
<ImageView fitHeight="622.0" fitWidth="460.0" layoutX="57.0" layoutY="59.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/Menu_Base.png" />
+ <Image url="file:images/menu/Menu_Base.png" />
</image>
</ImageView>
<ImageView fx:id="twoD" fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="274.0" onMousePressed="#twoDHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/2DGame.png" />
+ <Image url="file:images/menu/2DGame.png" />
</image>
</ImageView>
<ImageView fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="369.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/3DGame.png" />
+ <Image url="file:images/menu/3DGame.png" />
</image>
</ImageView>
<ImageView fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="213.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/ChooseMode.png" />
+ <Image url="file:images/menu/ChooseMode.png" />
</image>
</ImageView>
<ImageView fx:id="backImage" fitHeight="150.0" fitWidth="50.0" layoutX="492.0" layoutY="33.0" onMousePressed="#backButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/Back.png" />
+ <Image url="file:images/menu/Back.png" />
</image>
</ImageView>
</children>
diff --git a/src/NewGameController.java b/src/NewGameController.java
new file mode 100755
index 0000000..2f52c49
--- /dev/null
+++ b/src/NewGameController.java
@@ -0,0 +1,48 @@
+package sample;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+import sample.AdditionController;
+import sample.AdditionModel;
+import sample.AdditionView;
+import sample.Main;
+
+import javax.swing.text.html.ImageView;
+import java.io.IOException;
+
+public class NewGameController {
+
+
+ ImageView twoD, backImage;
+
+
+ public void backButtonHandle() throws IOException {
+
+ Parent root = FXMLLoader.load(getClass().getResource("mainMenu.fxml"));
+ Stage m = Main.getMainStage();
+ Scene t = Main.getMainStage().getScene();
+ t.setRoot(root);
+ m.setScene(t);
+ Main.setMainStage(m);
+ }
+
+ public void twoDHandle() throws IOException {
+ Stage primaryStage = Main.getMainStage();
+
+ AdditionModel model = new AdditionModel();
+ AdditionController controller = new AdditionController(model);
+ AdditionView view = new AdditionView(controller, model);
+
+ Scene scene = new Scene(view.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+ }
+
+ public void threeDCheckBoxHandle() throws IOException {
+
+ }
+
+}
diff --git a/out/production/Version2IQ/sample/PauseAlertBox.fxml b/src/PauseAlertBox.fxml
old mode 100644
new mode 100755
similarity index 65%
copy from out/production/Version2IQ/sample/PauseAlertBox.fxml
copy to src/PauseAlertBox.fxml
index 8a3c2c0..48ef4f9
--- a/out/production/Version2IQ/sample/PauseAlertBox.fxml
+++ b/src/PauseAlertBox.fxml
@@ -9,32 +9,32 @@
<children>
<ImageView fitHeight="451.0" fitWidth="621.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/FinishScreen.png" />
+ <Image url="file:images/menu/FinishScreen.png" />
</image>
</ImageView>
<ImageView fitHeight="84.0" fitWidth="384.0" layoutX="129.0" layoutY="38.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/Ribbon.png" />
+ <Image url="file:images/menu/Ribbon.png" />
</image>
</ImageView>
<ImageView fitHeight="150.0" fitWidth="200.0" layoutX="221.0" layoutY="52.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/Congraculations.png" />
+ <Image url="file:images/menu/Congraculations.png" />
</image>
</ImageView>
- <ImageView fitHeight="160.0" fitWidth="284.0" layoutX="179.0" layoutY="124.0" pickOnBounds="true" preserveRatio="true">
+ <ImageView fx:id="starView" fitHeight="160.0" fitWidth="284.0" layoutX="179.0" layoutY="124.0" onMouseMoved="#calculateScore" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/threeStar.png" />
+ <Image url="file:images/menu/OneStar.png" />
</image>
</ImageView>
<ImageView fx:id="nextView" fitHeight="90.0" fitWidth="125.0" layoutX="348.0" layoutY="277.0" onMousePressed="#nextLevelButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/DoneButton.png" />
+ <Image url="file:images/menu/DoneButton.png" />
</image>
</ImageView>
<ImageView fx:id="replayView" fitHeight="90.0" fitWidth="125.0" layoutX="208.0" layoutY="277.0" onMousePressed="#replayButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/ReplayButton.png" />
+ <Image url="file:images/menu/ReplayButton.png" />
</image>
</ImageView>
<Label layoutX="377.0" layoutY="367.0" text="Next" />
diff --git a/src/PauseAlertBox.java b/src/PauseAlertBox.java
new file mode 100755
index 0000000..3ef00f0
--- /dev/null
+++ b/src/PauseAlertBox.java
@@ -0,0 +1,83 @@
+package sample;
+import javafx.application.Platform;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.stage.*;
+import javafx.scene.*;
+import javafx.scene.layout.*;
+import javafx.scene.control.*;
+
+import javax.annotation.processing.Generated;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+
+
+public class PauseAlertBox {
+
+
+
+ @FXML
+ ImageView replayView, nextView, starView;
+ Game game = Game.getInstance();
+
+
+ @FXML
+ public void initialize(){
+ int score = game.twoDLevels[game.getCurrent2DLevel() - 1].getHighScore();
+
+ if(score >= 30)
+ starView.setImage(new Image("file:images/menu/threeStar.png"));
+ else if(score >= 20)
+ starView.setImage(new Image("file:images/menu/twoStar.png"));
+ }
+
+ public void display() throws IOException {
+
+ }
+
+ public void replayButtonHandle() throws IOException {
+ Game.setInstance(game);
+ game.replayLevel();
+
+ Stage primaryStage = Main.getMainStage();
+ AdditionModel modelFirst = new AdditionModel();
+ AdditionController controllerFirst = new AdditionController(modelFirst);
+ AdditionView viewFirst = new AdditionView(controllerFirst, modelFirst);
+
+ Scene scene = new Scene(viewFirst.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+ }
+
+ public void calculateScore() throws IOException {
+
+ }
+
+ public void nextLevelButtonHandle() throws IOException {
+
+ Stage primaryStage = Main.getMainStage();
+
+ AdditionModel model = new AdditionModel();
+ AdditionController controller = new AdditionController(model);
+ AdditionView view = new AdditionView(controller, model);
+
+ Scene scene = new Scene(view.asParent(), 1500, 1000);
+ primaryStage.setScene(scene);
+ primaryStage.centerOnScreen();
+ primaryStage.show();
+ Main.setMainStage(primaryStage);
+
+ }
+
+
+ public void exitButtonHandle() throws IOException {
+ Platform.exit();
+ }
+
+
+
+}
diff --git a/src/Piece.java b/src/Piece.java
new file mode 100755
index 0000000..af35691
--- /dev/null
+++ b/src/Piece.java
@@ -0,0 +1,220 @@
+package sample;
+
+
+import javafx.scene.canvas.GraphicsContext;
+import javafx.scene.image.ImageView;
+import javafx.scene.transform.Rotate;
+import javafx.scene.transform.Translate;
+
+public class Piece {
+ final int WIDHT = 20;
+ final int HEIGHT = 10;
+
+ private int positionX;
+ private int positionY;
+ private int pieceId;
+ private ImageView[] images;
+ private int rotation;
+ private boolean isUsed;
+ private ImageView currentImage;
+ private int[][] matrix;
+ int rotationCount;
+
+
+ public Piece(int pieceId, ImageView image, int[][] matrix){
+ this.matrix = matrix;
+ //this.images = images;
+ rotation = 0;
+ currentImage = image;
+ isUsed = true;
+ this.positionX = 0;
+ this.positionY = 0;
+ this.pieceId = pieceId;
+ rotationCount = 0;
+ }
+
+ public ImageView getCurrentImage() {
+ return currentImage;
+ }
+
+ public void rotateLeft(){
+ rotation--;
+ currentImage = images[rotation];
+ rotateMatrixLeft();
+ }
+
+ public void rotateRight(){
+ rotation++;
+ currentImage = images[rotation];
+ rotateMatrixRight();
+ }
+
+ public void rotateMatrixLeft(){
+// System.out.println("BEFORE: ");
+//
+// for(int i = 0; i < 4; i++) {
+// for(int j = 0; j < 4; j++) {
+//
+// System.out.print(this.matrix[i][j]);
+// System.out.print(" ");
+// }
+// System.out.println();
+// }
+
+ swapRows();
+ transpose();
+ System.out.println("AFTER: ");
+
+ for(int i = 0; i < 4; i++) {
+ for(int j = 0; j < 4; j++) {
+
+ System.out.print(this.matrix[i][j]);
+ System.out.print(" ");
+ }
+ System.out.println();
+ }
+//
+// for(int i = 0; i < 3; i++) {
+// shiftLeftMost(this.matrix);
+// }
+//
+// System.out.println("AFTER SHIFT LEFT");
+// for(int i = 0; i < 4; i++) {
+// for(int j = 0; j < 4; j++) {
+//
+// System.out.print(matrix[i][j]);
+// System.out.print(" ");
+// }
+// System.out.println();
+// }
+//
+// for(int i = 0; i < 3; i++) {
+// shiftUpMost(this.matrix);
+// }
+// System.out.println("AFTER SHIFT UP");
+
+ }
+
+
+ public void rotateMatrixRight(){
+
+ }
+
+ private void transpose() {
+
+ for (int i = 0; i < matrix.length; i++) {
+ for (int j = i; j < matrix[0].length; j++) {
+ int x = matrix[i][j];
+ matrix[i][j] = matrix[j][i];
+ matrix[j][i] = x;
+ }
+ }
+ }
+
+ public void swapRows() {
+ for (int i = 0, k = matrix.length - 1; i < k; ++i, --k) {
+ int[] x = matrix[i];
+ matrix[i] = matrix[k];
+ matrix[k] = x;
+ }
+ }
+
+ public void shiftLeftMost(int [][]matrix) {
+
+ System.out.println("BEFORE SHIFTLEFT");
+
+ boolean oneObserved = false;
+
+ for(int i = 0; i < 4; i++) {
+
+ if(matrix[i][0] == 1) {
+ oneObserved = true;
+ }
+ }
+
+ if(!oneObserved) {
+ for(int i = 0; i < 4; i++) {
+ for(int j = 0; j < 3; j++) {
+ matrix[i][j] = matrix[i][j + 1];
+ }
+ }
+ matrix[3][3] = 0;
+ matrix[0][3] = 0;
+ matrix[1][3] = 0;
+ matrix[2][3] = 0;
+ }
+ }
+
+ public void shiftUpMost(int [][]matrix) {
+
+ System.out.println("BEFORE UPMOST");
+
+ boolean oneObserved = false;
+
+ for(int i = 0; i < 4; i++) {
+
+ if(matrix[0][i] == 1) {
+ oneObserved = true;
+ }
+ }
+
+ if(!oneObserved) {
+ for(int i = 0; i < 3; i++) {
+ for(int j = 0; j < 4; j++) {
+ matrix[i][j] = matrix[i+ 1][j];
+ }
+ }
+ matrix[3][3] = 0;
+ matrix[3][2] = 0;
+ matrix[3][1] = 0;
+ matrix[3][0] = 0;
+ }
+
+ }
+
+ public void verticalMirror() {
+
+ int [][] tempArray = new int [4][4];
+
+ for(int i = 0; i <= 3; i++) {
+
+ for(int j = 0; j <= 3; j++) {
+
+ tempArray[i][3-j] = this.matrix[i][j];
+ }
+ }
+
+ this.matrix = tempArray;
+
+ System.out.println("IN VERTICAL");
+ for(int i = 0; i < 4; i++) {
+ for (int j = 0; j < 4; j++) {
+
+ System.out.print(this.matrix[i][j]);
+ System.out.print(" ");
+ }
+ System.out.println();
+ }
+
+ // Matrix matrix = new Matrix;
+
+ }
+
+ public void incrementRotationCount() {
+ this.rotationCount++;
+ }
+
+ public int getRotationCount() {
+ return this.rotationCount;
+ }
+
+ //Sonradan eklendi
+ public int [][] getMatrix() {
+ return matrix;
+ }
+
+ public int getPieceId() {
+ return this.pieceId;
+ }
+
+}
diff --git a/out/production/Version2IQ/sample/TutorialScreen.fxml b/src/TutorialScreen.fxml
old mode 100644
new mode 100755
similarity index 100%
copy from out/production/Version2IQ/sample/TutorialScreen.fxml
copy to src/TutorialScreen.fxml
diff --git a/src/TutorialScreenController.java b/src/TutorialScreenController.java
new file mode 100755
index 0000000..af94fd6
--- /dev/null
+++ b/src/TutorialScreenController.java
@@ -0,0 +1,4 @@
+package sample;
+
+public class TutorialScreenController {
+}
diff --git a/src/User.java b/src/User.java
new file mode 100644
index 0000000..11a5a40
--- /dev/null
+++ b/src/User.java
@@ -0,0 +1,65 @@
+package sample;
+
+public class User {
+
+ //User variables
+
+ String username;
+ //String password;
+
+ int score;
+ int lastPassedLevel;
+ int currentLevel;
+
+ int []passedTwoDimLevels;
+ int []passedThreeDimLevels;
+
+ //Constructor
+ public User() {
+ username = "";
+ score = 0;
+ lastPassedLevel = 0;
+ currentLevel = 0;
+ }
+
+ public String getUsername() {
+ return this.username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public int getScore() {
+ return this.score;
+ }
+
+ public void setScore(int score) {
+ this.score = score;
+ }
+
+ public int[] getPassedTwoDimLevels() {
+ return this.passedTwoDimLevels;
+ }
+
+ public void setPassedTwoDimLevels(int[] passedTwoDimLevels) {
+ this.passedTwoDimLevels = passedTwoDimLevels;
+ }
+
+ public int getLastPassedLevel() {
+ return this.lastPassedLevel;
+ }
+
+ public void setLastPassedLevel(int lastPassedLevel) {
+ this.lastPassedLevel = lastPassedLevel;
+ }
+
+ public int getCurrentLevel() {
+ return this.currentLevel;
+ }
+
+ public void setCurrentLevel(int currentLevel){
+ this.currentLevel = currentLevel;
+ }
+
+}
diff --git a/out/production/Version2IQ/sample/logInScreen.fxml b/src/logInScreen.fxml
old mode 100644
new mode 100755
similarity index 82%
copy from out/production/Version2IQ/sample/logInScreen.fxml
copy to src/logInScreen.fxml
index cbf1288..6c26b21
--- a/out/production/Version2IQ/sample/logInScreen.fxml
+++ b/src/logInScreen.fxml
@@ -14,24 +14,24 @@
<children>
<ImageView fitHeight="580.0" fitWidth="659.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/snowy.png" />
+ <Image url="file:images/menu/snowy.png" />
</image>
</ImageView>
<TextField fx:id="userNameTextField" layoutX="193.0" layoutY="228.0" prefHeight="39.0" prefWidth="223.0" promptText="Username" />
<PasswordField fx:id="passwordTextField" layoutX="193.0" layoutY="303.0" prefHeight="39.0" prefWidth="223.0" promptText="Password" />
<ImageView fitHeight="145.0" fitWidth="292.0" layoutX="208.0" layoutY="78.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/IQPuzzler.png" />
+ <Image url="file:images/menu/IQPuzzler.png" />
</image>
</ImageView>
<ImageView fx:id="loginView" fitHeight="39.0" fitWidth="109.0" layoutX="431.0" layoutY="228.0" onMousePressed="#signInButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/login.png" />
+ <Image url="file:images/menu/login.png" />
</image>
</ImageView>
<ImageView fx:id="logupView" fitHeight="47.0" fitWidth="104.0" layoutX="431.0" layoutY="303.0" onMousePressed="#signUpButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/logup.png" />
+ <Image url="file:images/menu/logup.png" />
</image>
</ImageView>
</children>
diff --git a/src/logInScreenController.java b/src/logInScreenController.java
new file mode 100755
index 0000000..6e3cf69
--- /dev/null
+++ b/src/logInScreenController.java
@@ -0,0 +1,53 @@
+package sample;
+
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.image.ImageView;
+import javafx.stage.Stage;
+import javafx.scene.control.Button;
+import javafx.scene.control.*;
+import sample.DatabaseManager;
+import sample.Main;
+
+
+import java.io.IOException;
+
+public class logInScreenController {
+ public Button signInButton, signUpButton;
+ public TextField userNameTextField, passwordTextField;
+ ImageView loginView, logupView;
+
+ public ImageView image;
+
+ DatabaseManager database = new DatabaseManager();
+
+ public void signInButtonHandle()throws IOException{
+ //set scene to main menu
+
+ //check if successful login
+ String username = userNameTextField.getText();
+ String password = passwordTextField.getText();
+
+ if(database.logIn(username, password)) {
+ //if login is successful
+ Parent root = FXMLLoader.load(getClass().getResource("mainMenu.fxml"));
+ Stage m = Main.getMainStage();
+ Scene t = new Scene(root);
+ t.setRoot(root);
+ m.setScene(t);
+ Main.setMainStage(m);
+ }
+ }
+
+ public void signUpButtonHandle() throws IOException {
+ //set scene to sign up screen
+ Parent root = FXMLLoader.load(getClass().getResource("signUp.fxml"));
+ Stage m = Main.getMainStage();
+ Scene t = new Scene(root, 600, 600);
+ t.setRoot(root);
+ m.setScene(t);
+ Main.setMainStage(m);
+ }
+
+}
diff --git a/out/production/Version2IQ/sample/mainMenu.fxml b/src/mainMenu.fxml
old mode 100644
new mode 100755
similarity index 72%
copy from out/production/Version2IQ/sample/mainMenu.fxml
copy to src/mainMenu.fxml
index cd796e7..679fddc
--- a/out/production/Version2IQ/sample/mainMenu.fxml
+++ b/src/mainMenu.fxml
@@ -9,38 +9,38 @@
<children>
<ImageView fitHeight="670.0" fitWidth="805.0" layoutX="-205.0" layoutY="-2.0" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/snowy.png" />
+ <Image url="file:images/menu/snowy.png" />
</image>
</ImageView>
<ImageView fitHeight="622.0" fitWidth="460.0" layoutX="57.0" layoutY="59.0" onMouseClicked="#newGameButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/Menu_Base.png" />
+ <Image url="file:images/menu/Menu_Base.png" />
</image>
</ImageView>
<Group layoutX="8.0" layoutY="-18.0" />
<ImageView fx:id="PlayView" fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="176.0" onMousePressed="#newGameButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/YellowFirst.png" />
+ <Image url="file:images/menu/YellowFirst.png" />
</image>
</ImageView>
<ImageView fx:id="tutorialView" fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="344.0" onMousePressed="#tutorialButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/BlueFirst.png" />
+ <Image url="file:images/menu/BlueFirst.png" />
</image>
</ImageView>
<ImageView fx:id="LoadView" fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="257.0" onMousePressed="#loadGameButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/GreenFirst.png" />
+ <Image url="file:images/menu/GreenFirst.png" />
</image>
</ImageView>
<ImageView fx:id="LeaderView" fitHeight="150.0" fitWidth="200.0" layoutX="187.0" layoutY="429.0" onMousePressed="#leaderBoardButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/GreyFirst.png" />
+ <Image url="file:images/menu/GreyFirst.png" />
</image>
</ImageView>
<ImageView fx:id="backView" fitHeight="60.0" fitWidth="50.0" layoutX="506.0" layoutY="26.0" onKeyPressed="#backButtonHandle" pickOnBounds="true" preserveRatio="true">
<image>
- <Image url="file:/Users/alper/Desktop/Version2IQNude 3/Version2IQNude 3/images/menu/Back.png" />
+ <Image url="file:images/menu/Back.png" />
</image>
</ImageView>
</children>
diff --git a/src/mainMenuController.java b/src/mainMenuController.java
new file mode 100755
index 0000000..a6a4e1f
--- /dev/null
+++ b/src/mainMenuController.java
@@ -0,0 +1,70 @@
+package sample;
+
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+import javafx.scene.control.Button;
+import sample.Main;
+
+
+import javax.swing.text.html.ImageView;
+import java.io.IOException;
+
+public class mainMenuController {
+ public Button newGameButton, loadGameButton, leaderBoardButton, tutorialButton, backButton;
+ ImageView PlayView, LoadView, tutorialView, LeaderView, backView;
+
+ public void newGameButtonHandle() throws IOException{
+
+ Parent root = FXMLLoader.load(getClass().getResource("NewGame.fxml"));
+ Stage m = Main.getMainStage();
+ Scene t = Main.getMainStage().getScene();
+ t.setRoot(root);
+ m.setScene(t);
+ Main.setMainStage(m);
+ }
+
+ public void loadGameButtonHandle() throws IOException{
+
+ Parent root = FXMLLoader.load(getClass().getResource("LoadGame.fxml"));
+ Stage m = Main.getMainStage();
+ Scene t = Main.getMainStage().getScene();
+ t.setRoot(root);
+ m.setScene(t);
+ Main.setMainStage(m);
+
+ }
+
+ public void leaderBoardButtonHandle() throws IOException{
+
+ Parent root = FXMLLoader.load(getClass().getResource("LeaderBoard.fxml"));
+ Stage m = Main.getMainStage();
+ Scene t = Main.getMainStage().getScene();
+ t.setRoot(root);
+ m.setScene(t);
+ Main.setMainStage(m);
+ }
+
+ public void backButtonHandle() throws IOException {
+ Parent root = FXMLLoader.load(getClass().getResource("logInScreen.fxml"));
+ Stage m = Main.getMainStage();
+ Scene t = Main.getMainStage().getScene();
+ t.setRoot(root);
+ m.setScene(t);
+ Main.setMainStage(m);
+ }
+
+
+ public void tutorialButtonHandle() throws IOException{
+ //DISPLAY TUTORIAL IMAGES OR VIDEO
+ Parent root = FXMLLoader.load(getClass().getResource("TutorialScreen.fxml"));
+ Stage m = Main.getMainStage();
+ Scene t = Main.getMainStage().getScene();
+ t.setRoot(root);
+ m.setScene(t);
+ Main.setMainStage(m);
+
+ }
+
+}
diff --git a/out/production/Version2IQ/sample/sample.fxml b/src/sample.fxml
old mode 100644
new mode 100755
similarity index 100%
copy from out/production/Version2IQ/sample/sample.fxml
copy to src/sample.fxml
diff --git a/src/signUp.fxml b/src/signUp.fxml
new file mode 100755
index 0000000..206530a
--- /dev/null
+++ b/src/signUp.fxml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane maxHeight="600.0" maxWidth="600.0" minHeight="600.0" prefHeight="600.0" prefWidth="600.0" style="-fx-background-color: #E5F4F4;" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.signUpController">
+ <children>
+ <ImageView fitHeight="600.0" fitWidth="600.0" layoutX="3.0" layoutY="6.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="file:images/menu/snowy.png" />
+ </image>
+ </ImageView>
+ <TextField fx:id="usernameField" layoutX="286.0" layoutY="209.0" prefHeight="41.0" prefWidth="198.0" />
+ <TextField fx:id="passwordField" layoutX="286.0" layoutY="280.0" prefHeight="41.0" prefWidth="198.0" />
+ <Button fx:id="signUpButton" layoutX="235.0" layoutY="379.0" mnemonicParsing="false" onAction="#signUpButtonHandle" prefHeight="50.0" prefWidth="122.0" text="Sign Up" textFill="#222121" />
+ <Button fx:id="backButton" layoutX="500.0" layoutY="28.0" mnemonicParsing="false" onAction="#backButtonHandle" prefHeight="31.0" prefWidth="73.0" text="Back" />
+ <Label alignment="CENTER" layoutX="212.0" layoutY="107.0" prefHeight="50.0" prefWidth="168.0" style="-fx-background-color: #FFA500;" text="Sign Up" textFill="#f8f7f7">
+ <font>
+ <Font size="36.0" />
+ </font>
+ </Label>
+ <Label alignment="CENTER" layoutX="129.0" layoutY="214.0" prefHeight="31.0" prefWidth="122.0" style="-fx-background-color: #FFA500;" text="Username" textFill="#f8f7f7">
+ <font>
+ <Font size="18.0" />
+ </font>
+ </Label>
+ <Label alignment="CENTER" layoutX="129.0" layoutY="285.0" prefHeight="31.0" prefWidth="122.0" style="-fx-background-color: #FFA500;" text="Password" textFill="#f8f7f7">
+ <font>
+ <Font size="18.0" />
+ </font>
+ </Label>
+ </children>
+</AnchorPane>
diff --git a/src/signUpController.java b/src/signUpController.java
new file mode 100755
index 0000000..0cdcae0
--- /dev/null
+++ b/src/signUpController.java
@@ -0,0 +1,58 @@
+package sample;
+
+import javafx.event.ActionEvent;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.control.TextField;
+import javafx.stage.Stage;
+import javafx.scene.control.Button;
+import sample.DatabaseManager;
+import sample.Main;
+
+
+import java.io.IOException;
+
+public class signUpController {
+
+ public Button backButton;
+ public Button signUpButton;
+ public TextField usernameField;
+ public TextField passwordField;
+ DatabaseManager database = new DatabaseManager();
+
+ public void signUpButtonHandle(ActionEvent event) throws IOException{
+ //if the sign up button is pressed
+ String username = usernameField.getText();
+ String password = passwordField.getText();
+
+ if(username != "" && password != ""){
+ //check if user present in database
+ if(database.registerUser(username, password)){
+ //register user is successful
+ System.out.println("User sign up is successful");
+ //identify user !!
+ //go to main menu after successful sign up
+ Parent root = FXMLLoader.load(getClass().getResource("mainMenu.fxml"));
+ Stage m = Main.getMainStage();
+ Scene t = new Scene(root);
+ t.setRoot(root);
+ m.setScene(t);
+ Main.setMainStage(m);
+
+ }
+
+ }
+ }
+
+
+ public void backButtonHandle() throws IOException {
+
+ Parent root = FXMLLoader.load(getClass().getResource("logInScreen.fxml"));
+ Stage m = Main.getMainStage();
+ Scene t = Main.getMainStage().getScene();
+ t.setRoot(root);
+ m.setScene(t);
+ Main.setMainStage(m);
+ }
+}
\ No newline at end of file