From 5b826a77ceaeb8dcdeaca446b5d8240a84a6a449 Mon Sep 17 00:00:00 2001 From: c7h-alb-u1 <ibrahim.zakari@stud.hs-hannover.de> Date: Wed, 13 Oct 2021 22:35:20 +0200 Subject: [PATCH] Update src/GameFrame.java, src/GamePanel.java, src/Main.java, src/Walls.java, src/ReadFile.java, res/ggwp.png, res/walls1.txt, res/walls2.txt, res/walls3.txt, res/walls4.txt, res/walls5.txt, res/walls6.txt, .classpath, .project, bin/GameFrame.class, bin/GamePanel.class, bin/ggwp.png, bin/Main.class, bin/ReadFile.class, bin/Walls.class, bin/walls1.txt, bin/walls2.txt, bin/walls3.txt, bin/walls4.txt, bin/walls5.txt, bin/walls6.txt files Deleted src/GameObject.java --- .classpath | 7 +++ .project | 17 ++++++ bin/GameFrame.class | Bin 0 -> 2803 bytes bin/GamePanel.class | Bin 0 -> 3781 bytes bin/Main.class | Bin 0 -> 439 bytes bin/ReadFile.class | Bin 0 -> 2137 bytes bin/Walls.class | Bin 0 -> 2158 bytes bin/ggwp.png | Bin 0 -> 6248 bytes bin/walls1.txt | 16 ++++++ bin/walls2.txt | 16 ++++++ bin/walls3.txt | 16 ++++++ bin/walls4.txt | 16 ++++++ bin/walls5.txt | 16 ++++++ bin/walls6.txt | 16 ++++++ res/ggwp.png | Bin 0 -> 6248 bytes res/walls1.txt | 16 ++++++ res/walls2.txt | 16 ++++++ res/walls3.txt | 16 ++++++ res/walls4.txt | 16 ++++++ res/walls5.txt | 16 ++++++ res/walls6.txt | 16 ++++++ src/GameFrame.java | 60 +++++++++++++++----- src/GameObject.java | 19 ------- src/GamePanel.java | 74 ++++++++++++------------ src/ReadFile.java | 65 +++++++++++++++++++++ src/Walls.java | 134 +++++++++++++++----------------------------- 26 files changed, 410 insertions(+), 158 deletions(-) create mode 100644 .classpath create mode 100644 .project create mode 100644 bin/GameFrame.class create mode 100644 bin/GamePanel.class create mode 100644 bin/Main.class create mode 100644 bin/ReadFile.class create mode 100644 bin/Walls.class create mode 100644 bin/ggwp.png create mode 100644 bin/walls1.txt create mode 100644 bin/walls2.txt create mode 100644 bin/walls3.txt create mode 100644 bin/walls4.txt create mode 100644 bin/walls5.txt create mode 100644 bin/walls6.txt create mode 100644 res/ggwp.png create mode 100644 res/walls1.txt create mode 100644 res/walls2.txt create mode 100644 res/walls3.txt create mode 100644 res/walls4.txt create mode 100644 res/walls5.txt create mode 100644 res/walls6.txt delete mode 100644 src/GameObject.java create mode 100644 src/ReadFile.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..74f62e7 --- /dev/null +++ b/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="src" path="res"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/.project b/.project new file mode 100644 index 0000000..86872b1 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>MazeGame</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/bin/GameFrame.class b/bin/GameFrame.class new file mode 100644 index 0000000000000000000000000000000000000000..7ddad53284790d0e768677b4b4d4c385702466ec GIT binary patch literal 2803 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 literal 0 HcmV?d00001 diff --git a/bin/GamePanel.class b/bin/GamePanel.class new file mode 100644 index 0000000000000000000000000000000000000000..f97b802e1acc2a824a8fe6aa934476c6883e1644 GIT binary patch literal 3781 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 literal 0 HcmV?d00001 diff --git a/bin/Main.class b/bin/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..fe4dcc691dedccd7463f01b4e0ba6bd0eb82d839 GIT binary patch literal 439 zcmX^0Z`VEs1_l!bX?6xCMg|t&#LPT)1{OvJfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00SMg|t={FGEK24)6M9tKthHbw@1pUk{eztY^K)S{5Yq?}Yn1|gsP<iwn? z#G*_PA1cUFl95@=$iU_Uvdfy0fh9LFGmnu$Oe5L{VP|kjQD$DcwPqMQgCHXVr+Z>< zs#{TFZYl?ZFe3w}Z(>!d0!WODL4ZLNWW5+8gSdvLCpHrp8CVjF(u)}xgt1t_$iNkx zUs{x$>Xr#|Fek`OdLU;oC^9fIFf)Jv69Xg2gA9xe><kPH`V5Q=j0_A6tXkU{I5sjc zFfcK2F)%Q&fdv^ExEUB2c))B{1|9}p1_lOB20jLUsAgLR7O))uZUzBCW)nf?Y$2iT i3?c|)xEPo~W;5_Hup=48&mhhq!N9=4$RG)}PznIrk5A_S literal 0 HcmV?d00001 diff --git a/bin/ReadFile.class b/bin/ReadFile.class new file mode 100644 index 0000000000000000000000000000000000000000..e7ab8f9608e4e81c3c5c16f156bc9309c428c037 GIT binary patch literal 2137 zcmX^0Z`VEs1_l#`9CijKMh1?c)Wj6G%$!tq1{OvJfvm)`ME#t^ymWp4q^#8B5=I90 z;^f4<ywoB_24NqtY-vemj(#vi(3+8fIXORvk%7^Zk%2ikv4D|5I2xi1Y)EiPQD$Dc zH6sI?O=ezZi5(*Yvxa6EBLj<beo87A12Y3Z4+A#?4<`d7gCGwBI|BzhgD{FKAO?Ws zMR^!F8Mqi3_<b_-QvFJElTwR95|eUL85x9p@{<#D!V-%zL42qnOG!p%F(U()56pko zj0_z41*v%;zcMngXn1Odu`|drG6-UL3gj+%9tH&lMMegW^wbjPoW$Z{Mh0OGO(dUz z1+BRllo?dn8B`b<_`$}2Jq?!PVNhdGXJp`m>G#P`OaTR=B&I14DQgY}O-2T;^2D5+ zVne->iV`jcZ3bO-1|3EQQ8cq58h9A=81xw#gws<?f>Mj~ON)|I9gBlYic%AE85uM+ zklYFhL~E$?GxPO5^9o8!AWE&d7-Sd>L9t-O$RGjLg{DL^3={z-JPfQ1Y@7^c3>NGR z=BTk$SzMBu%fn#FV8zJ5oL^eP$RG-_KQmuHpeQpBW*G;A4I_haa(-z}ib7s~i9%Xt zUWx)JMz|R47#!Fc>=_w^!Jb9c$HU;r;KazlUH~#GCy$Xq6zWiLc*DFG#=+nM3qd1L z2y!sE!T81yz6XqN0^xhX_@)rP4~%aH;<GdO!Q2D3$h9IlwV)(3KaY`tB{#9akCA~f z74B1171oRlyul@j$=SY%1<(}9o}O9~k_k$%Vj7;F(8vJmf_i|9L5LxYhasFHgpq-> zxHPF4oOu`-7%LbV7%LeWSTpldQY%2|9UMf+S{WHQilF%z6rXWC4Dk#Jj0`M!sTC!R z3?e9L4sM$aLlO@|GD8X@1A9hdu^(6|vxa6ABLib5BLio0PJVGJByMCFGI$s=8F&~O zSiz!<3|ztB1P794WZ;G6F+GsO7!(;88JHOu7?>HDKq-cSfq@Z}wHZKwlYxtYfq|8Q z5tQv27#VmO7#KVmm>3ut7#M`LwlnZ)v20}!&=L^X%OJFsL1ZHX0|OI-7y|=?5CaPX z0|N^K3j-SiCj&c}FV4Wgzys0BAi*FBwn&OW8e%MyIs+@n8H|k5EDIPkwRSVeL~3ng zklV(fB&4y8L2EmM!Bz(2<qS`JH!+wBS#M*oUCwYrniXBCGm_GsNJ`gAv!N?>MN-;_ zq_jzz9bKtAlG0=(rQy;X=t@12lv*Gu)sYrpTfm@(;xBI`wLEaO8yVObSQ%s(<QaS! z3>e%Qycm2Lq8W-9N*R0^+8E|CEMV|u*vN2#;WUFU!(E0i4Br`i8JNL=o(2w7E(TTx z9tIf(UIqmQJ_Zd20R{sGAqIB_VFqso5r$v}F@|Uc35FsDNro~8DTX=*8HP3nIfl6m z@(c?Z6c|=AC^2kgP+>U1pvrKDL5<-Gg9gK01}%m!4B8AoK&2alJ_9HsgBUm%7#JC$ z5eZ`XGjK34GAJ-`Fa$6JGB7cC!&zl;)<QVz44m}?&I)2+U{GM-iDzf<<&MKbfFwY6 z1T%y{5)DHPIEgVZ2xx6#5RoyGmS#!V#t`bKy8)gMxfqxj7#NHg_!x}A?$!b)OaYj? z83Y(2!0u*X5MYR8;9y{4;A3E7h+>FlU}j)shyf>9P^xbN=MM%3&E*Vo%r?szgh4h+ zYi(gL-o_9c+``BxEg-P)|67Pa;;jGoKzRWYEm90@3=9nB49pA`3>*xW45ADc3~~(S z3>pkJU?+)zou~<Q5-WowLn_!wpy1$UU}65lz{1G?3!Dqn;O;SFU<79+4v3BEAnPDm a58`8c26hGqu<?*A#{o5-ks%8lHrW8C4ZimP literal 0 HcmV?d00001 diff --git a/bin/Walls.class b/bin/Walls.class new file mode 100644 index 0000000000000000000000000000000000000000..2fc35d2197f20890fe5155e7b6f4c008e56a08c5 GIT binary patch literal 2158 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 literal 0 HcmV?d00001 diff --git a/bin/ggwp.png b/bin/ggwp.png new file mode 100644 index 0000000000000000000000000000000000000000..ee41f582dc6ee5ad4bfacc21daec4b79b1c42bfb GIT binary patch literal 6248 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 literal 0 HcmV?d00001 diff --git a/bin/walls1.txt b/bin/walls1.txt new file mode 100644 index 0000000..5070330 --- /dev/null +++ b/bin/walls1.txt @@ -0,0 +1,16 @@ +gwwwwwwwwwwwwwww +gggggggggggggggw +gggggggggggggggw +gggggggggggggggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwwggw +wwwwwwwwwwwwwwgw +wwwwwwwwwwwwwwgw \ No newline at end of file diff --git a/bin/walls2.txt b/bin/walls2.txt new file mode 100644 index 0000000..24c9985 --- /dev/null +++ b/bin/walls2.txt @@ -0,0 +1,16 @@ +gwwwwwwwwwwwwwww +ggwwwwwwwwwwwwww +wgggggwwwwwwwwww +wwwwwgwwwwwwwwww +wwwwwgggwwwwwwww +wwwwwwwgwwwwwwww +wwwwwwwgwwwwwwww +wwwwwwwgwwwwwwww +wwwwwwwgwwgggwww +wwwwwwwgwwgwgwww +wwwwwwwggggwgwww +wwwwwwwwwwwwgggw +wwwwwwwwwwwwwwgw +wwwwwwwwwwwwwwgw +wwwwwwwwwwwwwwgw +wwwwwwwwwwwwwwgw \ No newline at end of file diff --git a/bin/walls3.txt b/bin/walls3.txt new file mode 100644 index 0000000..d1ab37d --- /dev/null +++ b/bin/walls3.txt @@ -0,0 +1,16 @@ +gwwwwwwwwwwwwwww +ggwggggwwwgggwww +wgggwwgggwgwgggw +wwwwwwwwgggwwwgw +wwwwwwwwwwwwgggw +wwwwwwwggggwgwww +wwwwwwwgwwgggwww +wwggggggwwwwwwww +wwgwgwwwwwwwwwww +wwgggwwwwwwwwwww +wwwgwwwggggwwwww +wgggwwwgwwgwgggw +wgwwwwwgwwgwgwgw +wgggwwggwwgwgwgw +wwwggggwwwgggwgw +wwwwwwwwwwwwwwgg \ No newline at end of file diff --git a/bin/walls4.txt b/bin/walls4.txt new file mode 100644 index 0000000..e590ddd --- /dev/null +++ b/bin/walls4.txt @@ -0,0 +1,16 @@ +gwwwwwwwwwwwwwww +ggggwwwwwwwwwwww +wwwgwwgggwwwwwww +wwwgwwgwggwwwwww +wwwgwwgwwgwwwwww +wwwggggwwgwwwwww +wwwwwwwwwgwwwwww +wwwwwwwwwgwwwwww +wwwwwwggggwwwwww +wwwwwwgwwwwwwwww +wwwwwwgggwwwwwww +wwwwwwwwgwwwwwww +wwwwwwwwgwwwwwww +wwwwwwwwgggggggw +wwwwwwwwwwwwwwgw +wwwwwwwwwwwwwwgw \ No newline at end of file diff --git a/bin/walls5.txt b/bin/walls5.txt new file mode 100644 index 0000000..65ab082 --- /dev/null +++ b/bin/walls5.txt @@ -0,0 +1,16 @@ +gwwwwwwwwwwwwwww +ggggwgggwgggwwww +wwwgwgwgwgwgwwww +wwwgwgwgwgwgwwww +wgggwgwgwgwgwwww +wgwwwgwgwgwgwwww +wgggggwgwgwgwwww +wwwwwwwgwgwgwwww +wgggggggwgwgwwww +wgwwwwwwwgwgwwww +wgggggggggwgwwww +wwwwwwwwwwwgwwww +wgggggggggggwwww +wgwwwwwwwwwwwwww +wggggggggggggggw +wwwwwwwwwwwwwwgw \ No newline at end of file diff --git a/bin/walls6.txt b/bin/walls6.txt new file mode 100644 index 0000000..cb32e5e --- /dev/null +++ b/bin/walls6.txt @@ -0,0 +1,16 @@ +gwwwwwwwwwwwwwww +ggwwwgggggggggww +wgwwggwwwwwwwgww +wgwggwwgggwgggww +wgwgwwggwgggwwww +ggwggwgwwwwwwwww +gwwwgwggggggggww +gwwggwwwwwwwwggw +ggwgwwwwwwwwwwgw +wgwggwgggggggggw +ggwwgwgwwwwwwwww +gwwggwgggggggggw +ggwgwwwwwwwwwwgw +wgwgwwgggggggggw +wgggwwgwwwwwwwww +wwwwwwgggggggggw diff --git a/res/ggwp.png b/res/ggwp.png new file mode 100644 index 0000000000000000000000000000000000000000..ee41f582dc6ee5ad4bfacc21daec4b79b1c42bfb GIT binary patch literal 6248 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 literal 0 HcmV?d00001 diff --git a/res/walls1.txt b/res/walls1.txt new file mode 100644 index 0000000..5070330 --- /dev/null +++ b/res/walls1.txt @@ -0,0 +1,16 @@ +gwwwwwwwwwwwwwww +gggggggggggggggw +gggggggggggggggw +gggggggggggggggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwgggw +wwwwwwwwwwwwwggw +wwwwwwwwwwwwwwgw +wwwwwwwwwwwwwwgw \ No newline at end of file diff --git a/res/walls2.txt b/res/walls2.txt new file mode 100644 index 0000000..24c9985 --- /dev/null +++ b/res/walls2.txt @@ -0,0 +1,16 @@ +gwwwwwwwwwwwwwww +ggwwwwwwwwwwwwww +wgggggwwwwwwwwww +wwwwwgwwwwwwwwww +wwwwwgggwwwwwwww +wwwwwwwgwwwwwwww +wwwwwwwgwwwwwwww +wwwwwwwgwwwwwwww +wwwwwwwgwwgggwww +wwwwwwwgwwgwgwww +wwwwwwwggggwgwww +wwwwwwwwwwwwgggw +wwwwwwwwwwwwwwgw +wwwwwwwwwwwwwwgw +wwwwwwwwwwwwwwgw +wwwwwwwwwwwwwwgw \ No newline at end of file diff --git a/res/walls3.txt b/res/walls3.txt new file mode 100644 index 0000000..d1ab37d --- /dev/null +++ b/res/walls3.txt @@ -0,0 +1,16 @@ +gwwwwwwwwwwwwwww +ggwggggwwwgggwww +wgggwwgggwgwgggw +wwwwwwwwgggwwwgw +wwwwwwwwwwwwgggw +wwwwwwwggggwgwww +wwwwwwwgwwgggwww +wwggggggwwwwwwww +wwgwgwwwwwwwwwww +wwgggwwwwwwwwwww +wwwgwwwggggwwwww +wgggwwwgwwgwgggw +wgwwwwwgwwgwgwgw +wgggwwggwwgwgwgw +wwwggggwwwgggwgw +wwwwwwwwwwwwwwgg \ No newline at end of file diff --git a/res/walls4.txt b/res/walls4.txt new file mode 100644 index 0000000..e590ddd --- /dev/null +++ b/res/walls4.txt @@ -0,0 +1,16 @@ +gwwwwwwwwwwwwwww +ggggwwwwwwwwwwww +wwwgwwgggwwwwwww +wwwgwwgwggwwwwww +wwwgwwgwwgwwwwww +wwwggggwwgwwwwww +wwwwwwwwwgwwwwww +wwwwwwwwwgwwwwww +wwwwwwggggwwwwww +wwwwwwgwwwwwwwww +wwwwwwgggwwwwwww +wwwwwwwwgwwwwwww +wwwwwwwwgwwwwwww +wwwwwwwwgggggggw +wwwwwwwwwwwwwwgw +wwwwwwwwwwwwwwgw \ No newline at end of file diff --git a/res/walls5.txt b/res/walls5.txt new file mode 100644 index 0000000..65ab082 --- /dev/null +++ b/res/walls5.txt @@ -0,0 +1,16 @@ +gwwwwwwwwwwwwwww +ggggwgggwgggwwww +wwwgwgwgwgwgwwww +wwwgwgwgwgwgwwww +wgggwgwgwgwgwwww +wgwwwgwgwgwgwwww +wgggggwgwgwgwwww +wwwwwwwgwgwgwwww +wgggggggwgwgwwww +wgwwwwwwwgwgwwww +wgggggggggwgwwww +wwwwwwwwwwwgwwww +wgggggggggggwwww +wgwwwwwwwwwwwwww +wggggggggggggggw +wwwwwwwwwwwwwwgw \ No newline at end of file diff --git a/res/walls6.txt b/res/walls6.txt new file mode 100644 index 0000000..773c783 --- /dev/null +++ b/res/walls6.txt @@ -0,0 +1,16 @@ +gwwwwwwwwwwwwwww +ggwwwgggggggggww +wgwwggwwwwwwwgww +wgwggwwgggwgggww +wgwgwwggwgggwwww +ggwggwgwwwwwwwww +gwwwgwggggggggww +gwwggwwwwwwwwggw +ggwgwwwwwwwwwwgw +wgwggwgggggggggw +ggwwgwgwwwwwwwww +gwwggwgggggggggw +ggwgwwwwwwwwwwgw +wgwgwwgggggggggw +wgggwwgwwwwwwwww +wwwwwwgggggggggw \ No newline at end of file diff --git a/src/GameFrame.java b/src/GameFrame.java index 68b715d..cf333e9 100644 --- a/src/GameFrame.java +++ b/src/GameFrame.java @@ -11,6 +11,9 @@ public class GameFrame extends JFrame implements ActionListener { JPanel start; JButton resetButton; JButton startGame; + JButton nextMap; + JButton previousMap; + int mapN = 1; public GameFrame(int width, int height, String title) { @@ -20,52 +23,83 @@ public class GameFrame extends JFrame implements ActionListener { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); - resetButton = new JButton(); resetButton.setText("Reset"); - resetButton.setSize(100,30); + resetButton.setSize(100, 30); resetButton.addActionListener(this); resetButton.setFocusable(false); startGame = new JButton(); startGame.setText("Start"); - startGame.setSize(200,200); - startGame.setLocation(250,250); startGame.addActionListener(this); startGame.setFocusable(false); + nextMap = new JButton(); + nextMap.setText("Next Map"); + nextMap.addActionListener(this); + nextMap.setFocusable(false); + + previousMap = new JButton(); + previousMap.setText("Previous Map"); + previousMap.addActionListener(this); + previousMap.setFocusable(false); + score = new JPanel(); score.setBackground(Color.black); + score.add(previousMap); score.add(resetButton); + score.add(nextMap); score.setFocusable(true); start = new JPanel(); start.setBackground(Color.black); - start.setSize(getWidth(),getHeight()); - start.setLocation(0,0); - start.add(startGame); - + start.setSize(getWidth(), getHeight()); + start.setLocation(0, 0); + start.add(startGame, BorderLayout.CENTER); this.add(start); this.setVisible(true); + } @Override public void actionPerformed(ActionEvent e) { - if(e.getSource() == resetButton){ + if (e.getSource() == resetButton) { this.remove(game); - game = new GamePanel(); + game = new GamePanel(mapN); this.add(game); SwingUtilities.updateComponentTreeUI(this); game.requestFocus(); } - if(e.getSource() == startGame){ + if (e.getSource() == startGame) { this.remove(start); - game = new GamePanel(); - this.add(score,BorderLayout.NORTH); + mapN = 1; + game = new GamePanel(mapN); + this.add(score, BorderLayout.NORTH); this.add(game); SwingUtilities.updateComponentTreeUI(this); game.requestFocus(); } + if (e.getSource() == nextMap) { + if (mapN < 6) { + this.remove(game); + mapN++; + game = new GamePanel(mapN); + this.add(game); + SwingUtilities.updateComponentTreeUI(this); + game.requestFocus(); + } + + } + if (e.getSource() == previousMap) { + if (mapN >= 1) { + this.remove(game); + mapN--; + game = new GamePanel(mapN); + this.add(game); + SwingUtilities.updateComponentTreeUI(this); + game.requestFocus(); + } + } } } diff --git a/src/GameObject.java b/src/GameObject.java deleted file mode 100644 index fe33303..0000000 --- a/src/GameObject.java +++ /dev/null @@ -1,19 +0,0 @@ -import java.awt.*; -import java.awt.event.*; - -public class GameObject extends Rectangle{ - - Color color; - - GameObject(int x, int y, int width, int height, Color color){ - this.x=x; - this.y=y; - this.width=width; - this.height=height; - this.color=color; - } - public void draw(Graphics g) { - g.setColor(this.color); - g.fillRect(this.x, this.y, this.width, this.height); - } -} diff --git a/src/GamePanel.java b/src/GamePanel.java index 364208a..7ce8836 100644 --- a/src/GamePanel.java +++ b/src/GamePanel.java @@ -4,79 +4,81 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; -import java.util.concurrent.TimeUnit; public class GamePanel extends JPanel implements ActionListener, KeyListener { private static final long serialVersionUID = 1L; + ImageIcon ggwp; + ImageIcon ground; + ImageIcon steve; Timer timer = new Timer(5, this); - int x = 0, y = 0, velX = 0, velY = 0, veldX = 0, veldY = 0; - int playerSize = 22; + int x = 10, y = 10, velX = 0, velY = 0, veldX = 0, veldY = 0; + int playerSize = 27; int movmentSpeed = 4; int faildRounds; - ImageIcon ggwp; - - private Walls finishWall; private Walls walls; - private boolean play = true; + private boolean running; + private boolean nextMap = false; - public GamePanel() { + public GamePanel(int mapN) { timer.start(); addKeyListener(this); setFocusable(true); setFocusTraversalKeysEnabled(false); - walls = new Walls(); - ggwp = new ImageIcon("res\\ggwp.png"); - this.setSize(817,840); - this.setLocation(100,0); + running = true; + walls = new Walls(mapN); + ggwp = new ImageIcon(getClass().getClassLoader().getResource("ggwp.png")); + this.setSize(817, 840); + this.setLocation(100, 0); this.requestFocus(true); + } public void paintComponent(Graphics g) { super.paintComponent(g); - g.setColor(Color.black); - g.fillRect(0,0,getWidth(),getWidth()); + // Background; + g.setColor(Color.cyan); + g.fillRect(0, 0, getWidth(), getWidth()); - //Walls - walls.draw(this,g); + // Walls + walls.draw(this, g); - //Player - if(play) { - g.setColor(Color.red); - g.fillOval(x, y, playerSize, playerSize); + // Player + if (running) { + g.setColor(Color.blue); + g.fillRect(x, y, playerSize, playerSize); } - if(walls.wallsCollision(x,y,playerSize,playerSize)){ - x = 0; - y=0; + if (walls.wallsCollision(x, y, playerSize, playerSize)) { + x = 10; + y = 10; } - if(walls.finishWallsCollision(x,y,playerSize,playerSize)){ - play=false; + if (walls.finishWallsCollision(x, y, playerSize, playerSize)) { + running = false; } - if(!play) { - gameOver(g); + if (!running) { + RoundFinishe(g); } } - public void gameOver(Graphics g) { - if(!play){ + public void RoundFinishe(Graphics g) { + if (!running) { g.setColor(Color.black); - g.fillRect(0,0,getWidth(),getHeight()); - ggwp.paintIcon(this,g,280,250); + g.fillRect(0, 0, getWidth(), getHeight()); + ggwp.paintIcon(this, g, 280, 250); faildRounds++; + nextMap = true; + } } - public int getFailedRounds(){ - return faildRounds; - } @Override public void keyPressed(KeyEvent e) { int c = e.getKeyCode(); - if(play) { + if (running) { if (c == KeyEvent.VK_LEFT || c == KeyEvent.VK_A) veldX = -movmentSpeed; if (c == KeyEvent.VK_RIGHT || c == KeyEvent.VK_D) @@ -92,7 +94,7 @@ public class GamePanel extends JPanel implements ActionListener, KeyListener { @Override public void keyReleased(KeyEvent e) { int c = e.getKeyCode(); - if(play) { + if (running) { if (c == KeyEvent.VK_LEFT || c == KeyEvent.VK_A) veldX = 0; if (c == KeyEvent.VK_RIGHT || c == KeyEvent.VK_D) diff --git a/src/ReadFile.java b/src/ReadFile.java new file mode 100644 index 0000000..4b57897 --- /dev/null +++ b/src/ReadFile.java @@ -0,0 +1,65 @@ +import java.io.File; +import java.util.Scanner; + +public class ReadFile { + private Scanner scanner; + public int col = 1; + String[] map = new String[16]; + + public void openFile(int mapN) { + if (mapN == 1) { + try { + scanner = new Scanner(getClass().getClassLoader().getResourceAsStream("walls1.txt")); + } catch (Exception e) { + System.out.println("could not find File"); + } + } else if (mapN == 2) { + try { + scanner = new Scanner(getClass().getClassLoader().getResourceAsStream("walls2.txt")); + } catch (Exception e) { + System.out.println("could not find File"); + } + } else if (mapN == 3) { + try { + scanner = new Scanner(getClass().getClassLoader().getResourceAsStream("walls3.txt")); + } catch (Exception e) { + System.out.println("could not find File"); + } + } else if (mapN == 4) { + try { + scanner = new Scanner(getClass().getClassLoader().getResourceAsStream("walls4.txt")); + } catch (Exception e) { + System.out.println("could not find File"); + } + } else if (mapN == 5) { + try { + scanner = new Scanner(getClass().getClassLoader().getResourceAsStream("walls5.txt")); + } catch (Exception e) { + System.out.println("could not find File"); + } + } else if (mapN == 6) { + try { + scanner = new Scanner(getClass().getClassLoader().getResourceAsStream("walls6.txt")); + } catch (Exception e) { + System.out.println("could not find File"); + } + } + } + + public String getTile(int x, int y) { + String index = map[y].substring(x, x + 1); + return index; + } + + public void readFile() { + while (scanner.hasNext()) { + for (int i = 0; i < 16; i++) { + map[i] = scanner.next(); + } + } + } + + public void closeFile() { + scanner.close(); + } +} \ No newline at end of file diff --git a/src/Walls.java b/src/Walls.java index 6596f44..5ede959 100644 --- a/src/Walls.java +++ b/src/Walls.java @@ -1,119 +1,73 @@ import java.awt.*; +import java.util.Scanner; public class Walls { public int unit_size = 50; - int[] wallXPos = { - //upper wall - 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 - //left wall - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - //down wall - 1,2,3,4,5,6,7,8,9,10,11,12,13, - //right wall - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - //rest - 1,1,1,1, - 2,2,2,2, - 3,3,3,3,3, - 4,4,4,4,4,4, - 5,5,5,5,5,5,5,5,5, - 6,6,6,6, - 7,7,7,7,7,7,7, - 8,8,8,8,8,8, - 9,9,9,9,9,9,9,9, - 10,10,10,10,10, - 11,11,11,11,11,11,11, - 12,12,12,12, - 13,13,13, - 14,14,14 + private Scanner scanner; + private String Map[] = new String[16]; + ReadFile r = new ReadFile(); - }; - int[] wallYPos = { - //upper wall - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - //left wall - 2,3,4,5,6,7,8,9,10,11,12,13,14,15, - //down wall - 15,15,15,15,15,15,15,15,15,15,15,15,15, - //right wall - 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, - //rest - //1 - 3,8,9,12, - //2 - 1,3,6,12, - //3 - 3,6,7,10,14, - //4 - 2,3,7,8,10,12, - //5 - 2,3,4,8,9,10,11,12,13, - //6 - 4,8,9,13, - //7 - 1,2,4,6,7,8,11, - //8 - 4,8,11,12,13,14, - //9 - 1,2,4,5,6,8,10,11, - //10 - 1,4,8,11,13, - //11 - 4,6,7,8,9,11,13, - //12 - 8,11,13,4, - //13 - 8,11,13, - //14 - 3,8,13 - }; + int[][] walls = new int[16][17]; + public Walls(int mapN) { + r.openFile(mapN); + r.readFile(); + r.closeFile(); - public Walls() { + for (int y = 0; y < 16; y++) { + for (int x = 0; x < 16; x++) { + if (r.getTile(x, y).equals("w")) { + walls[y][x] = 1; + } + if (r.getTile(x, y).equals("g")) { + walls[y][x] = 0; + } + } + } } - public void draw(Component c, Graphics g) { - for(int i=0; i< wallXPos.length;i++) - { - g.setColor(Color.GRAY); - g.fillRect(wallXPos[i]*unit_size,wallYPos[i]*unit_size,unit_size,unit_size); + for (int i = 0; i < walls.length; i++) { + for (int j = 0; j < walls.length; j++) { + if (walls[i][j] == 1) { + g.setColor(Color.black); + g.fillRect(j * unit_size, i * unit_size, unit_size, unit_size); + } } - g.setColor(Color.yellow); - g.fillRect(14*unit_size,15*unit_size,2*unit_size,unit_size); + } + g.setColor(Color.red); + g.fillRect(14 * unit_size, 15 * unit_size, 2 * unit_size, unit_size); + } - public boolean wallsCollision(int x, int y,int width,int height) - { + public boolean wallsCollision(int x, int y, int width, int height) { boolean collided = false; - for(int i=0; i< wallXPos.length;i++) - { - if(new Rectangle(x, y, width, height).intersects(new Rectangle(wallXPos[i]*unit_size, wallYPos[i]*unit_size, 50, 50))) - { - collided = true; - break; + for (int i = 0; i < walls.length; i++) { + for (int j = 0; j < walls.length; j++) { + if (walls[i][j] == 1) { + if (new Rectangle(x, y, width, height) + .intersects(new Rectangle(j * unit_size, i * unit_size, 50, 50))) { + collided = true; + break; + } + } } } return collided; } - public boolean finishWallsCollision(int x, int y,int width,int height) - { + public boolean finishWallsCollision(int x, int y, int width, int height) { boolean finishCollided = false; - if(new Rectangle(x, y, width, height).intersects(new Rectangle(14*unit_size, 15*unit_size, 50, 50))) - { - finishCollided = true; - } + if (new Rectangle(x, y, width, height) + .intersects(new Rectangle(14 * unit_size, 15 * unit_size, 2 * unit_size, unit_size))) { + finishCollided = true; + } return finishCollided; } - - - - } -- GitLab