From a018bf6565d8ea42c9c43e4c9ae4307bc0ae17ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20=CE=B2?= <54827653+dmbeta@users.noreply.github.com> Date: Mon, 9 Sep 2019 20:57:05 -0500 Subject: [PATCH] Old code dump This is old code, around spring 2018 time. --- README.md | 19 + TuyoTuyo/build.xml | 53 + TuyoTuyo/build/built-jar.properties | 4 + TuyoTuyo/build/classes/tuyotuyo/Block.class | Bin 0 -> 1242 bytes .../build/classes/tuyotuyo/BlockTester.class | Bin 0 -> 732 bytes TuyoTuyo/build/classes/tuyotuyo/Grid.class | Bin 0 -> 6419 bytes .../build/classes/tuyotuyo/GridTester$1.class | Bin 0 -> 1548 bytes .../build/classes/tuyotuyo/GridTester.class | Bin 0 -> 775 bytes .../classes/tuyotuyo/Piece$PieceType.class | Bin 0 -> 1273 bytes TuyoTuyo/build/classes/tuyotuyo/Piece.class | Bin 0 -> 8126 bytes .../build/classes/tuyotuyo/PieceTester.class | Bin 0 -> 893 bytes TuyoTuyo/build/classes/tuyotuyo/TuyoFXML.fxml | 91 + .../classes/tuyotuyo/TuyoFXMLController.class | Bin 0 -> 5436 bytes .../build/classes/tuyotuyo/TuyoTuyo.class | Bin 0 -> 1242 bytes TuyoTuyo/dist/TuyoTuyo.html | 45 + TuyoTuyo/dist/TuyoTuyo.jar | Bin 0 -> 16150 bytes TuyoTuyo/dist/TuyoTuyo.jnlp | 18 + TuyoTuyo/dist/web-files/dtjava.js | 3958 ++++++++++++++++ TuyoTuyo/dist/web-files/error.png | Bin 0 -> 725 bytes TuyoTuyo/dist/web-files/get_java.png | Bin 0 -> 9886 bytes TuyoTuyo/dist/web-files/get_javafx.png | Bin 0 -> 11077 bytes TuyoTuyo/dist/web-files/javafx-chrome.png | Bin 0 -> 11369 bytes .../dist/web-files/javafx-loading-100x100.gif | Bin 0 -> 17878 bytes .../dist/web-files/javafx-loading-25x25.gif | Bin 0 -> 2433 bytes TuyoTuyo/dist/web-files/upgrade_java.png | Bin 0 -> 11000 bytes TuyoTuyo/dist/web-files/upgrade_javafx.png | Bin 0 -> 13655 bytes TuyoTuyo/manifest.mf | 3 + TuyoTuyo/nbproject/build-impl.xml | 1421 ++++++ .../configs/Run_as_WebStart.properties | 2 + .../configs/Run_in_Browser.properties | 2 + TuyoTuyo/nbproject/genfiles.properties | 8 + TuyoTuyo/nbproject/jfx-impl.xml | 4049 +++++++++++++++++ .../configs/Run_as_WebStart.properties | 2 + .../private/configs/Run_in_Browser.properties | 2 + TuyoTuyo/nbproject/private/private.properties | 6 + TuyoTuyo/nbproject/private/private.xml | 13 + .../nbproject/private/retriever/catalog.xml | 4 + .../java/javase/overview/index.html | 1337 ++++++ TuyoTuyo/nbproject/project.properties | 113 + TuyoTuyo/nbproject/project.xml | 25 + TuyoTuyo/src/tuyotuyo/Block.java | 47 + TuyoTuyo/src/tuyotuyo/BlockTester.java | 20 + TuyoTuyo/src/tuyotuyo/Grid.java | 415 ++ TuyoTuyo/src/tuyotuyo/GridTester.java | 50 + TuyoTuyo/src/tuyotuyo/Piece.java | 387 ++ TuyoTuyo/src/tuyotuyo/PieceTester.java | 29 + TuyoTuyo/src/tuyotuyo/TuyoFXML.fxml | 91 + TuyoTuyo/src/tuyotuyo/TuyoFXMLController.java | 160 + TuyoTuyo/src/tuyotuyo/TuyoTuyo.java | 45 + 49 files changed, 12419 insertions(+) create mode 100644 README.md create mode 100644 TuyoTuyo/build.xml create mode 100644 TuyoTuyo/build/built-jar.properties create mode 100644 TuyoTuyo/build/classes/tuyotuyo/Block.class create mode 100644 TuyoTuyo/build/classes/tuyotuyo/BlockTester.class create mode 100644 TuyoTuyo/build/classes/tuyotuyo/Grid.class create mode 100644 TuyoTuyo/build/classes/tuyotuyo/GridTester$1.class create mode 100644 TuyoTuyo/build/classes/tuyotuyo/GridTester.class create mode 100644 TuyoTuyo/build/classes/tuyotuyo/Piece$PieceType.class create mode 100644 TuyoTuyo/build/classes/tuyotuyo/Piece.class create mode 100644 TuyoTuyo/build/classes/tuyotuyo/PieceTester.class create mode 100644 TuyoTuyo/build/classes/tuyotuyo/TuyoFXML.fxml create mode 100644 TuyoTuyo/build/classes/tuyotuyo/TuyoFXMLController.class create mode 100644 TuyoTuyo/build/classes/tuyotuyo/TuyoTuyo.class create mode 100644 TuyoTuyo/dist/TuyoTuyo.html create mode 100644 TuyoTuyo/dist/TuyoTuyo.jar create mode 100644 TuyoTuyo/dist/TuyoTuyo.jnlp create mode 100644 TuyoTuyo/dist/web-files/dtjava.js create mode 100644 TuyoTuyo/dist/web-files/error.png create mode 100644 TuyoTuyo/dist/web-files/get_java.png create mode 100644 TuyoTuyo/dist/web-files/get_javafx.png create mode 100644 TuyoTuyo/dist/web-files/javafx-chrome.png create mode 100644 TuyoTuyo/dist/web-files/javafx-loading-100x100.gif create mode 100644 TuyoTuyo/dist/web-files/javafx-loading-25x25.gif create mode 100644 TuyoTuyo/dist/web-files/upgrade_java.png create mode 100644 TuyoTuyo/dist/web-files/upgrade_javafx.png create mode 100644 TuyoTuyo/manifest.mf create mode 100644 TuyoTuyo/nbproject/build-impl.xml create mode 100644 TuyoTuyo/nbproject/configs/Run_as_WebStart.properties create mode 100644 TuyoTuyo/nbproject/configs/Run_in_Browser.properties create mode 100644 TuyoTuyo/nbproject/genfiles.properties create mode 100644 TuyoTuyo/nbproject/jfx-impl.xml create mode 100644 TuyoTuyo/nbproject/private/configs/Run_as_WebStart.properties create mode 100644 TuyoTuyo/nbproject/private/configs/Run_in_Browser.properties create mode 100644 TuyoTuyo/nbproject/private/private.properties create mode 100644 TuyoTuyo/nbproject/private/private.xml create mode 100644 TuyoTuyo/nbproject/private/retriever/catalog.xml create mode 100644 TuyoTuyo/nbproject/private/retriever/www.oracle.com/technetwork/java/javase/overview/index.html create mode 100644 TuyoTuyo/nbproject/project.properties create mode 100644 TuyoTuyo/nbproject/project.xml create mode 100644 TuyoTuyo/src/tuyotuyo/Block.java create mode 100644 TuyoTuyo/src/tuyotuyo/BlockTester.java create mode 100644 TuyoTuyo/src/tuyotuyo/Grid.java create mode 100644 TuyoTuyo/src/tuyotuyo/GridTester.java create mode 100644 TuyoTuyo/src/tuyotuyo/Piece.java create mode 100644 TuyoTuyo/src/tuyotuyo/PieceTester.java create mode 100644 TuyoTuyo/src/tuyotuyo/TuyoFXML.fxml create mode 100644 TuyoTuyo/src/tuyotuyo/TuyoFXMLController.java create mode 100644 TuyoTuyo/src/tuyotuyo/TuyoTuyo.java diff --git a/README.md b/README.md new file mode 100644 index 0000000..581a20d --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +# tuyotuyo +Fun blend of puyo puyo and tetris made in Java. +--- +#### Created by David Brooks, Rithwik Pattikonda, and Tristan Prior. + +In this version of Tetris, the rules are similar: +1. Try to remove rows by completing them. +2. Don't let your blocks hit the ceiling. + +The difference is is that this version also includes an element from puyo puyo: If four adjacent blocks are the same color, +they are deleted from the grid, leaving a large hole that you have to fill in. + +**You have been warned, play at your own frustration.** + + + +###### Known Bugs: +- Cannot rotate on right hand side of screen. + - Either stops rotation or forcing it appears to deform the block into either the S or Square block. diff --git a/TuyoTuyo/build.xml b/TuyoTuyo/build.xml new file mode 100644 index 0000000..a39b9ac --- /dev/null +++ b/TuyoTuyo/build.xml @@ -0,0 +1,53 @@ + + Builds, tests, and runs the project TuyoTuyo. + + + diff --git a/TuyoTuyo/build/built-jar.properties b/TuyoTuyo/build/built-jar.properties new file mode 100644 index 0000000..c233a29 --- /dev/null +++ b/TuyoTuyo/build/built-jar.properties @@ -0,0 +1,4 @@ +#Fri, 18 May 2018 16:28:17 -0500 + + +C\:\\Users\\Ursom\\Documents\\NetBeansProjects\\TuyoTuyo= diff --git a/TuyoTuyo/build/classes/tuyotuyo/Block.class b/TuyoTuyo/build/classes/tuyotuyo/Block.class new file mode 100644 index 0000000000000000000000000000000000000000..bca2b2a55fbb4c8812304b5f8ce6d3ed38418a88 GIT binary patch literal 1242 zcmaJ=*-{fx5Ir~Bz%Yau76GGx3MK&=7hHo#5<*-iiDp=8;As*@7zi0mCYJn!RX+L; zJZMT5wX}Tpqb&PQB3q%U%DLS=y`0QKLAW%UPKSZ1Y8#|-U>Hl4mUX5!8-->QL5b+Q(-*kvl(XS1Yc*N~fBEe&k0;UDT1tb`JMXO|0stf^T zU4Ns?HQOx7idnT|46UlUTGs7a#b6ja^?B0KU%i#9MWbxUTe?}c9aSw0kw{Fi|7x~7*XOJ`U)l_s*pzzPiQs;w6{GWu4ttf*SG zO3|1#IWf^GInKK$;UX?kqN7g6D;0g4x09ilThD5kgd{=|W;moc%yLL`c*5Z+LIR#i zcn*aZ$VfPkUIAGNIlK_?QbHc8gbUpFDuyMDV2;6m@-8%BhgC^0ugbZ?x=|!bo}?Df z(veW+Q#6TOKAuf;K}#u0Zjr&8&Zko3AY|g{RCX>-L&~RS{-$zP#kn9g&!<-#*BlNn zH&*3XrC4JCCzh)(+;DTU(4wN UBc~lEVvM|;?gdDUlIX(dANU>uIsgCw literal 0 HcmV?d00001 diff --git a/TuyoTuyo/build/classes/tuyotuyo/BlockTester.class b/TuyoTuyo/build/classes/tuyotuyo/BlockTester.class new file mode 100644 index 0000000000000000000000000000000000000000..386de76e76304f6be9a9c607f5365a8f19021db9 GIT binary patch literal 732 zcmZuv%Wl&^6g^`nabw)nG)aM`l!T{KD!gIWiUpOBkWxTORjFb%F+-Tvu_MPpbi;}- zVZ$00tppMuz<=-)2mxoDN;C*t^SF<5?mgH3_UrRk0Qa%!VgW4&Yc4Fbsoj~uwK+8_Iij?Mp~`pCIL!ps zf^L!Y@=Z92RHDK$hn0s#l$rIS+B|`PGd6TFhuRFz&2-ieXNnFSes%L$5Joij3$#L> zf@gW-6yjqM_PAFHr;A12y;%ZkSfW*hkBjse@LQ7EJUjMw%Wu3#>kF)dQ`ozoP})2} z`2>}BLVWoB-4NR(0#;DwUSltQLA1(y8}*`4n>ju^Tc&OCT}K1WqIie6OT=B~s>1pS POZ?z}D{zGl3#)$sKK`FM literal 0 HcmV?d00001 diff --git a/TuyoTuyo/build/classes/tuyotuyo/Grid.class b/TuyoTuyo/build/classes/tuyotuyo/Grid.class new file mode 100644 index 0000000000000000000000000000000000000000..786a37432c064480493f1047625bc5415976d70b GIT binary patch literal 6419 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 literal 0 HcmV?d00001 diff --git a/TuyoTuyo/build/classes/tuyotuyo/GridTester$1.class b/TuyoTuyo/build/classes/tuyotuyo/GridTester$1.class new file mode 100644 index 0000000000000000000000000000000000000000..3adebc87b9321b5b693507fb2337cd6b9d2d244f GIT binary patch literal 1548 zcmaJ>U2_vv7=BLkaW?7pgFvXUR6uJ1H>x**L>J zS9z3wJ5c`g{4#U+9aliq1jY}1RvoXlL!shZ;1bwg*^7%7IneDOs(soUo%AiD`-V1(Id2RB+d;OMGCWh?0pHkTG!`HzaPF_z)jSlucCdF$;7hwoKf@CzR(*+}56-Vp~gu zCiKpE$8sC_a^Q34)sF4dm2cuRd~V_k++modg)dE5I;@JCj;)(en4$5EKziWl1dfNB zcLLkVSL~){rM)9C`rJDlBHf+?2OX2tre$;PC$rnd|JJyyNf!;xcwZ>_80iBz(N3#w z1xjx$a3Y%<#K`!e{qK|ZCOP*y0sHD@w!QpKjwaxMl+|RCUSIvNK&+*m7?mAdung@E zdy3apwbQ7C1s(MjFd8Z-*F2wxfCpTkcdOM>E;~4t-OL?{*r$wzT^N-5fBcQW>#?qL zT1|D;bD1-pJ)C3J^BiTl+`X@{8`XQN7KBX1TehmH4P3%WUVr@?;>#lmffp&|xeBha z*{2ZShvrFs;~|*FDavNg0aG|lP2kMG!Qxv)ktFuZV+?f>DV{IQ?XEK1e}rKzN{SB*@o4XNYF!u) zqLiOdW`??W{<%>oD7A@ld<@ej{8D&c|Rg#xicB?sK=Ew{y)&xXOdX! z^If|l(HWyX<}zkz1YdJG5sydViB>Wm9b{x&ji|hKPneWwo?MvTcP8l)OuD_3Nva0o zNE&e!GfYm~GU+~6P^a3tVe|OLKEvW1ZjyI>ETcw^?vVMYV#!AfA<3Mp%DXXCvx;o8 z&;4^T&~ykvyKTm+C4)0DOe66@AIU2*{K7S9T@CJ?==iwV!x|lQnGV^4Ylvy(8eJK} z%uJx&Brhb($QHJzU^iL#A^nRP_yCV+?dJ)2j8*bnJi${!OtGRoi)?EK>vW2R&J6Zx zwOsY4DBPkrgF|TP7VbB=J1g+${SN;>O9SRA)={EuX^@nc*uyUNGuB4l8PD*Xa!T05 U3yL#B*T}c<3KgYflqF6g|^!yW3@HOL>>4h|&U5RPfabg$jx`)?|^SYGRhU;*w=+N=w4O@Q3(8 zOCm<2;j=%=c<;295`}Gg&zzaF_ntd5?XTb8egas)qYxA<>bQm5DkfCi)zOE09MT&4 zby`fbBBNo5@xF#(#w86SjLRBE8M7M37*{lmGp?%038)*dSM!D36M@h($1d5Mhwp6x zW5e_8O3thTsqZh5w!v6GQR@%dC6mba5K zs};xFNhdEV9?O?Ymb+zD98T5Dr+C&LrH%cYOCXqWJg2%O(D$EG8_6vJrTWgHZbGKB z<5|^Og);dQyr5-DZu8~Yw$y80Z7*}a$0a%j-7MECC41fBZgqJ;bKIwaOMGc23_QS^ zigkg3^A6L%6doFw#We%{h#MHUxt<)WSamXIh9CeC6Zr>WLYA)mPp2d zXq@+iGAIb)GA1E#h1dikKYAVF3w$T=eYPiwE4cw$TAN|1% N66&N>a0dg~_#fl%0_Fe! literal 0 HcmV?d00001 diff --git a/TuyoTuyo/build/classes/tuyotuyo/Piece.class b/TuyoTuyo/build/classes/tuyotuyo/Piece.class new file mode 100644 index 0000000000000000000000000000000000000000..cb79d05620be4fa64bce19a204922a7f15909be2 GIT binary patch literal 8126 zcmc(k+kaHm6~}*j?iq$#5(wcQK$;r_LZq666bPt+NkArz1XP?P156lZ!ekOiO6#Ro zDzso#s)#N1(jtm22;nN!T5DVTz(XJU(Az)IKKRgw`e~uRb)xK_^OOMY^&1TTpG2O_;F%}dg} zEX`4Aekjc=UUqp^`WGUIMek{!iX?`Nj8`8Wf&0B7~ z?Zs>ya^t7t@H3p0<{fEHxzXamyKcPa#X|A75T`wOU+zEm;1?d8@!+f*AGmSOjq?gQ z8^fXYP;*~bNWs?-jfUd&kzjXss9V9kd0U`))uv_z)u1rGJ{Ijx1fz+TV5BExzr_!` zv?jYa5}J$Y{zOk-Os)#e@dDF*je@sJVl_lNLi-pv9!mrhVLDZqOKeHj?!5%ShtEXoofpCLxdrw(n{Tc4<~j zBmK9>L%~F7Q))K3#U&X7rWX~IX`0UUQB&Q#AX-dmXsY+pLda8+tk?!qdKH%FYYMqfNcV}`oh9m>m zbuw^W;=qmk`jci6(@dAdOqaw=mr`aMl4dc}Oqaw=m&8n$Qf7gqS+{AXOJb%=Vx~(e zv*x5(!Zgz*G1Db6)1{QzmZVv~X{JkJrb}X`OEhz73zqB0vm=x+7BN>Ew+2tQsc;lG z$l9}qqa9o=?5G7<6^{q|6!MEphC;}bhy@byaCC>(Lti?PV01@?u9d~p$tx@?SKBAj zU)pwu+!)~Q5{UK0+d~h8WsQ5aIW3m%K70);eOQJnAHIqzH!k>a5tn?pjQf4KPns*z zT$ScSX|73gU7BA?(|~n8)S%XfYA_EI(igE0AK_O%Y(l_?N2Li$vt629(sW7FgMdO_ zYLn9vB0HVJXaLUA8{i{CLnTYY#2-=@H& zs+K6&9`jlUt0jbcP|C}Ow$4yHM=;Htkk%))WvBH{mS{rCL1QqnQ@G&%7~8FFyK4wc z!?xA_4fX3OturORDQz&NfGIVb(w3y;3hn6$M!FTI6kBSpkGQ5}3n!LJrk+Q8u!G1s zy2Je}zn$cXZG*9`X~Y=T9C5I#D_~!M}i%_Mu0obImUxFha&RvIV zXS~ao{KWJdT)da_TFz@FuXVhdc|Fc+XXyuU55RL0wUlx+sgjaclZq*g)1=vye43O` zX}l(RDNUeM%5h8_z@$=b1e13i9zfn%`nF>=+ZIe=I|B~RItO{2%S;qt7S>=6)?+T3 zFb`kHd~C)&*v5Z$w4oSblpumKbaULj%;Gnh$EUCq2bi5B%;Is*rJi1=>Up5AwR|eT zckqCg*9ZBO56>;Wu(|ON*F%o>aj`#_CtJzmGt8rtJwLgM{ML(@;y3P%#=Xh7S3642 z!^1pXz|>hcV=*s%Aa47E#F7dq1Q)uJ~;Xm4rhq*GT}Dh5NQg*IYjs*M;K>T36(5bTjT zjm+^HAu?xYgviK6wZ|GlUeeAzNt3tg8{WWytr+@|C)rJSUc zVzN}~i4Ly+5Z84WH?Uh(VvjnC9(4k}>J;{>bJ(Y@p-AdBri{!SJtVUEb>22Z8cLSf3;TE_V?=bh67I+x746T%Mu!W=Ykz?Jmj+Xk4yOkvJ z%XvgRN;;Y9%tDG5A1{%NSIFb54)*bO^<<80@t7$Scx=N0SM}cLCWhH9sA{+^i zN$xUvlmtqMFP+DC$m1#U_&#|&OCATv<7M)Ag*;v*j~|l9Yh%V^o5^Fl$zzAfV`x|& z`IBYDJX$Mez%mHD(ZMokf3#NL%A+;(=t7K$N4ie~Z*(Ej_D6A*wiJzN2#?Ix9j>ao z_`d#(JpO?^-r%1lmcfdWLn*`Y+h+R$}9wJhO&N_il1yTtRu=2B8^AQ zm(|F!awRlhWhTnH2(yH^3m*SL9{))mKPQj>B9H$jkN+i)H_78Ib&kgv*OVGF9wR1? zyGv5hlrf|e@t7{oo}8mOC14K@}LDO z0lVr!zUpPs_F{?Jhg#K#wW=SFs{QEVbFX?52l@U5^|Ur?IeJ`1=~<@F!2{oZ9`aUk zzMQR*2|JI3oADfTk7Bb literal 0 HcmV?d00001 diff --git a/TuyoTuyo/build/classes/tuyotuyo/PieceTester.class b/TuyoTuyo/build/classes/tuyotuyo/PieceTester.class new file mode 100644 index 0000000000000000000000000000000000000000..4b348eaf490364bf4ff0158008455fcb11e71dac GIT binary patch literal 893 zcmbVKU279T6g{&^v&p(mW16(~)7H;TO}h%>gDt)&qLQkZQqZC}i9?*4?3V3B=)1o} z5TEs-1qFYAKf|9PqMq3lG}ad#xN~Rjz31LDXZQ2>51#;B#w8CP=3LBsa4=WENi5jY zqK8vBZBJ+NIP2n^i}M1xH63YlO&}B0HU+ZR<7Y}>tf3=yx8G~2WJ9*PjFcO3TXr{P zqV4@Km^IJ!uE0dY^!H+G;eD;zYD4WBm8`N`PwI&IV5_k$U&^p6qfXc~iH-!klM~=?@pBpjdJn^rDc>CjxC6<9Db~W9L$disGG)+45Bov^6I;yyW3D!*F22S7> yrtp9jkBE7S+4M0B>{G%WR#!>h!4uX`rVo@vOmV_AtpMj69Pt&8nVMn1!R${)O}kkD literal 0 HcmV?d00001 diff --git a/TuyoTuyo/build/classes/tuyotuyo/TuyoFXML.fxml b/TuyoTuyo/build/classes/tuyotuyo/TuyoFXML.fxml new file mode 100644 index 0000000..9474d9c --- /dev/null +++ b/TuyoTuyo/build/classes/tuyotuyo/TuyoFXML.fxml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TuyoTuyo/build/classes/tuyotuyo/TuyoFXMLController.class b/TuyoTuyo/build/classes/tuyotuyo/TuyoFXMLController.class new file mode 100644 index 0000000000000000000000000000000000000000..356436a0d70d93bae9c205f09ce88a2412f4855c GIT binary patch literal 5436 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 aNn({kLH|=(N|kQ!Dz1^8;X26<-1rZIq#e8f literal 0 HcmV?d00001 diff --git a/TuyoTuyo/dist/TuyoTuyo.html b/TuyoTuyo/dist/TuyoTuyo.html new file mode 100644 index 0000000..7c9a613 --- /dev/null +++ b/TuyoTuyo/dist/TuyoTuyo.html @@ -0,0 +1,45 @@ + + + + + + + +

Test page for TuyoTuyo

+ Webstart: click to launch this app as webstart


+ + +
+ diff --git a/TuyoTuyo/dist/TuyoTuyo.jar b/TuyoTuyo/dist/TuyoTuyo.jar new file mode 100644 index 0000000000000000000000000000000000000000..a8770959fa2c825533109548eb4eb7519b056fc5 GIT binary patch literal 16150 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 + + + TuyoTuyo + rithw + null + + + + + + + + + + + + diff --git a/TuyoTuyo/dist/web-files/dtjava.js b/TuyoTuyo/dist/web-files/dtjava.js new file mode 100644 index 0000000..b77ecd7 --- /dev/null +++ b/TuyoTuyo/dist/web-files/dtjava.js @@ -0,0 +1,3958 @@ +/* + * Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + */ + +/** + The Java Deployment Toolkit is a utility to deploy Java content in + the browser as applets or applications using the right version of Java. + If needed it can initiate an upgrade of user's system to install required + components of Java platform. +

+ Note that some of the Deployment Toolkit methods may not be fully operational if + used before web page body is loaded (because DT native plugins could not be instantiated). + If you intend to use it before web page DOM tree is ready then dtjava.js + needs to be loaded inside the body element of the page and before use of other DT APIs. + + @module java/deployment_toolkit +*/ +var dtjava = function() { + function notNull(o) { + return (o != undefined && o != null); + } + + function isDef(fn) { + return (fn != null && typeof fn != "undefined"); + } + + //return true if any of patterns from query list is found in the given string + function containsAny(lst, str) { + for (var q = 0; q < lst.length; q++) { + if (str.indexOf(lst[q]) != -1) { + return true; + } + } + return false; + } + + /* Location of static web content - images, javascript files. */ + var jscodebase = (function () { + // + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TuyoTuyo/nbproject/private/configs/Run_as_WebStart.properties b/TuyoTuyo/nbproject/private/configs/Run_as_WebStart.properties new file mode 100644 index 0000000..7a1d99d --- /dev/null +++ b/TuyoTuyo/nbproject/private/configs/Run_as_WebStart.properties @@ -0,0 +1,2 @@ +# Do not modify this property in this configuration. It can be re-generated. +javafx.run.as=webstart diff --git a/TuyoTuyo/nbproject/private/configs/Run_in_Browser.properties b/TuyoTuyo/nbproject/private/configs/Run_in_Browser.properties new file mode 100644 index 0000000..7a7b6e4 --- /dev/null +++ b/TuyoTuyo/nbproject/private/configs/Run_in_Browser.properties @@ -0,0 +1,2 @@ +# Do not modify this property in this configuration. It can be re-generated. +javafx.run.as=embedded diff --git a/TuyoTuyo/nbproject/private/private.properties b/TuyoTuyo/nbproject/private/private.properties new file mode 100644 index 0000000..e16ee0e --- /dev/null +++ b/TuyoTuyo/nbproject/private/private.properties @@ -0,0 +1,6 @@ +auxiliary.org-netbeans-modules-projectapi.issue214819_5f_fx_5f_enabled=true +# No need to modify this property unless customizing JavaFX Ant task infrastructure +endorsed.javafx.ant.classpath=. +javafx.run.inbrowser= +javafx.run.inbrowser.path=C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE +user.properties.file=C:\\Users\\Ursom\\AppData\\Roaming\\NetBeans\\8.2\\build.properties diff --git a/TuyoTuyo/nbproject/private/private.xml b/TuyoTuyo/nbproject/private/private.xml new file mode 100644 index 0000000..a500500 --- /dev/null +++ b/TuyoTuyo/nbproject/private/private.xml @@ -0,0 +1,13 @@ + + + + + + file:/C:/Users/Ursom/Documents/NetBeansProjects/TuyoTuyo/src/tuyotuyo/GridTester.java + file:/C:/Users/Ursom/Documents/NetBeansProjects/TuyoTuyo/src/tuyotuyo/TuyoTuyo.java + file:/C:/Users/Ursom/Documents/NetBeansProjects/TuyoTuyo/src/tuyotuyo/Block.java + file:/C:/Users/Ursom/Documents/NetBeansProjects/TuyoTuyo/src/tuyotuyo/Piece.java + file:/C:/Users/Ursom/Documents/NetBeansProjects/TuyoTuyo/src/tuyotuyo/Grid.java + + + diff --git a/TuyoTuyo/nbproject/private/retriever/catalog.xml b/TuyoTuyo/nbproject/private/retriever/catalog.xml new file mode 100644 index 0000000..35a2b39 --- /dev/null +++ b/TuyoTuyo/nbproject/private/retriever/catalog.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/TuyoTuyo/nbproject/private/retriever/www.oracle.com/technetwork/java/javase/overview/index.html b/TuyoTuyo/nbproject/private/retriever/www.oracle.com/technetwork/java/javase/overview/index.html new file mode 100644 index 0000000..591d78e --- /dev/null +++ b/TuyoTuyo/nbproject/private/retriever/www.oracle.com/technetwork/java/javase/overview/index.html @@ -0,0 +1,1337 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Java SE | Oracle Technology Network | Oracle + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + +
+
+ + + + + + +
+ +
+
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + +
+
+ + + + + + + + + +
+

Java SE at a Glance
+
+

+
 
+ +
+ +
 
+ +
+ + + + + + + +
+
+

+ General FAQs
+  
+
+
+
+

+ Features
+  
+
+
+
+
+

Java Platform, Standard Edition (Java SE) lets you develop and deploy Java applications on desktops and servers. Java offers the rich user interface, performance, versatility, portability, and security that today's applications require.

+ + + + + + +

+
End of Public Updates for Oracle JDK 8
+

+
Oracle will not post further updates of Java SE 8 to its public download sites for commercial use after January 2019. Customers who need continued access to critical bug fixes and security fixes as well as general maintenance for Java SE 8 or previous versions can get long term support through Oracle Java SE Advanced, Oracle Java SE Advanced Desktop, or Oracle Java SE Suite. For more information, and details on how to receive longer term support for Oracle JDK 8, please see the Oracle Java SE Support Roadmap. +
 
+
+
+
 
+ +
+
+ + + + + + + +
+

What's New

+

Java Platform, Standard Edition 10.0.1
+ Java SE 10.0.1 is the latest release of Java SE Platform. This release contains improvements like Local-Variable Type Inference, Parallel Full GC, Application Class-Data Sharing. Oracle strongly recommends that all Java SE users upgrade to this release.
+
arrow Download  arrow  Release Notes

+ +

Java Platform, Standard Edition 8 Update 171 (Java SE 8u171)/ 8 Update 172 (Java SE 8u172)
+ This latest release of the Java Platform includes important bug fixes. Oracle strongly recommends that all Java SE 8 users upgrade to this release.
+ JDK for ARM releases are available on the same page as the downloads for other platforms

+
arrow Download  arrow  Release Notes

+ +

Advanced Management Console
+ Provides system administrators an effective control over diverse Java versions running on desktops in the enterprise enabling a more secure environment and enhanced application experience and availability. Documentation
+

+

+

Security of the Java Platform
+ A description of security information provided by role. For developers, system administrators, home users, and security professionals.
+
+ Java Mission Control 
+ Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis.
+ Release Notes   Demo   White Paper
+
+ Deployment Rule Set 
+ Deployment rule set allows a desktop administrator to control the level of Java client compatibility and default prompts across an organization. Documentation
+
+ Server JRE 
+ Starting with Java SE 7u21, a Server Java Runtime Environment (Server JRE) package is available for deploying Java applications on servers. Learn More
+
+ Java Applet & Web Start - Code Signing 
+ Starting with Java SE 7u21 all Java Applets and Web Start Applications are encouraged to be signed with a trusted certificate. Learn More
+
+ Archive of Technical Articles
+

+

 

+
+

Updates

+

Java SE 10.0.1
+ Java SE 10.0.1 is the latest release for JDK 10.

+

arrow Release Notes  arrow  Download

+ + + Java SE 8u171/ 8u172
+ Java SE 8u171/ 8u172 is the latest release for JDK 8. +

 

+

arrow Release Notes  arrow  Download

+

+

+
+ +

communityProducts and Training
+  

+ Oracle Java SE Advanced & Suite 
+ Expert monitoring, diagnostics, and centralized management for enterprise and ISV Java-based applications.
+
+ Training & Certification:
+
+ + ?
+ Learn More about Java Software

+ Java can reduce costs, drive innovation, and improve application services.
+


+ +

+
+

+

community Community

+

JavaOne
+ JavaOne 2017 has concluded, but the Learning Lives On

+ Did you miss a JavaOne keynote or session? You can find those here.
+
+ Java 8 Event Kit
+ Access the "Create the Future with Java 8 Event Kit" - run your own Java 8 event using the resources designed for Java User Groups (JUGs). The kit includes a fully scripted technical presentation, intro video, promotional tools and more. Learn More
+
+ Adopt a JSR Program
+ This program is intended to encourage JUG members to get involved in a Java Specification Request (JSR) and to evangelise that JSR to their JUG and the wider Java community in order to increase grass roots participation. Learn More
+

+ Java.net 
- The Source for Java Technology Collaboration
+
+ Java Embedded Community
+

+ JavaFX Community
+
+
NightHacking LogoNighthacking.com
+ The NightHacking Java 8 Tour is the inaugural leg of the Java 8 Tour event where the evangelism team will be crossing the globe to speak at conferences and Java User Groups to spread the word about the new Java 8 release.

+
+

 

+
+ +
+
+

+
+ + + + + + + +
+

Participate
+  

+ +
+

Make the Future Java Outreach Program
+
Together, we can inspire future technologists to learn more about Java and the opportunities it brings. The Make the Future Java program offers resources, tool kits and promotional items you can use for Java outreach within your local community.

+

Join a Java User Group (JUG)
+
Java User Groups (JUGs) are volunteer organizations that strive to distribute Java-related knowledge around the world. They provide a meeting place for Java users to get information, share resources and solutions, increase networking, expand Java Technology expertise, and above all, drink beer, eat pizza and have fun. Find a JUG and become a part of the Java community today!

+

Java ForumsI Code Java
+
Read about and share ideas and suggestions about Java technology on the discussion forums. Start with the New to Java or the more advanced Java Programming category.

+

Gimme Java - Show your true colors!
+
These Java designs are yours to take and use. Post on your Website, put them on t-shirts or coffee mugs—use them just about anywhere except on a Java product—and let the world know about your passion for Java.

+
+
 
+
+
+
+

+
+  
+ +

Java SE Site Map

+
+
+ +
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + +
Left Curve +
Java SDKs and Tools
+
Right Curve
+ +
+ + + + + + + + + + + + + + + +
Left Curve +
Java Resources
+
Right Curve
+ +
+ + +
+
+ + +
+ + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + diff --git a/TuyoTuyo/nbproject/project.properties b/TuyoTuyo/nbproject/project.properties new file mode 100644 index 0000000..eacaad2 --- /dev/null +++ b/TuyoTuyo/nbproject/project.properties @@ -0,0 +1,113 @@ +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=false +annotation.processing.processor.options= +annotation.processing.processors.list= +annotation.processing.run.all.processors=true +annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +application.title=TuyoTuyo +application.vendor=rithw +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +compile.on.save=true +compile.on.save.unsupported.javafx=true +# Uncomment to specify the preferred debugger connection transport: +#debug.transport=dt_socket +debug.classpath=\ + ${run.classpath} +debug.test.classpath=\ + ${run.test.classpath} +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/TuyoTuyo.jar +dist.javadoc.dir=${dist.dir}/javadoc +endorsed.classpath= +excludes= +includes=** +# Non-JavaFX jar file creation is deactivated in JavaFX 2.0+ projects +jar.archive.disabled=true +jar.compress=false +javac.classpath=\ + ${javafx.classpath.extension} +# Space-separated list of extra javac options +javac.compilerargs= +javac.deprecation=false +javac.processorpath=\ + ${javac.classpath} +javac.source=1.8 +javac.target=1.8 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +javac.test.processorpath=\ + ${javac.test.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +javafx.application.implementation.version=1.0 +javafx.binarycss=false +javafx.classpath.extension=\ + ${java.home}/lib/javaws.jar:\ + ${java.home}/lib/deploy.jar:\ + ${java.home}/lib/plugin.jar +javafx.deploy.allowoffline=true +# If true, application update mode is set to 'background', if false, update mode is set to 'eager' +javafx.deploy.backgroundupdate=false +javafx.deploy.embedJNLP=true +javafx.deploy.includeDT=true +# Set true to prevent creation of temporary copy of deployment artifacts before each run (disables concurrent runs) +javafx.disable.concurrent.runs=false +# Set true to enable multiple concurrent runs of the same WebStart or Run-in-Browser project +javafx.enable.concurrent.external.runs=false +# This is a JavaFX project +javafx.enabled=true +javafx.fallback.class=com.javafx.main.NoJavaFXFallback +# Main class for JavaFX +javafx.main.class=tuyotuyo.TuyoTuyo +javafx.preloader.class= +# This project does not use Preloader +javafx.preloader.enabled=false +javafx.preloader.jar.filename= +javafx.preloader.jar.path= +javafx.preloader.project.path= +javafx.preloader.type=none +# Set true for GlassFish only. Rebases manifest classpaths of JARs in lib dir. Not usable with signed JARs. +javafx.rebase.libs=false +javafx.run.height=600 +javafx.run.width=800 +# Pre-JavaFX 2.0 WebStart is deactivated in JavaFX 2.0+ projects +jnlp.enabled=false +# Main class for Java launcher +main.class=com.javafx.main.Main +# For improved security specify narrower Codebase manifest attribute to prevent RIAs from being repurposed +manifest.custom.codebase=* +# Specify Permissions manifest attribute to override default (choices: sandbox, all-permissions) +manifest.custom.permissions= +manifest.file=manifest.mf +meta.inf.dir=${src.dir}/META-INF +platform.active=default_platform +run.classpath=\ + ${dist.jar}:\ + ${javac.classpath}:\ + ${build.classes.dir} +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +source.encoding=UTF-8 +src.dir=src +test.src.dir=test diff --git a/TuyoTuyo/nbproject/project.xml b/TuyoTuyo/nbproject/project.xml new file mode 100644 index 0000000..c1a0f14 --- /dev/null +++ b/TuyoTuyo/nbproject/project.xml @@ -0,0 +1,25 @@ + + + org.netbeans.modules.java.j2seproject + + + + + + + + + + + + + TuyoTuyo + + + + + + + + + diff --git a/TuyoTuyo/src/tuyotuyo/Block.java b/TuyoTuyo/src/tuyotuyo/Block.java new file mode 100644 index 0000000..a47f0e0 --- /dev/null +++ b/TuyoTuyo/src/tuyotuyo/Block.java @@ -0,0 +1,47 @@ +/** + * The Block class stores a color and (x, y) coordinate, + * and is able to move the block and return its color and rectangle + * + * @author Tristan Pior, Rithwik Path, David Brooks Teacher Name: Mrs.Ishman + */ +package tuyotuyo; + +import java.util.*; +import javafx.scene.paint.Color; + +public class Block { + + private final List colors = new ArrayList<>(Arrays.asList(Color.CYAN, Color.BLUE, Color.ORANGE, + Color.YELLOW, Color.GREEN, Color.MAGENTA, Color.RED)); + private Color blockColor; + + /** + * Instantiates a block with a random color + */ + public Block() { + blockColor = colors.get((int) (Math.random() * 7)); + } + + /** + * Returns the block color + * + * @return Color the color of the block + */ + public Color getColor() { + return blockColor; + } + + /** + * Returns if the current block equals the given block in terms of color + * + * @param b block to compare against + * @return if the current block equals the given block + */ + public boolean equals(Block b) { + if (blockColor.equals(b.getColor())) { + return true; + } + return false; + } + +} diff --git a/TuyoTuyo/src/tuyotuyo/BlockTester.java b/TuyoTuyo/src/tuyotuyo/BlockTester.java new file mode 100644 index 0000000..78a4a86 --- /dev/null +++ b/TuyoTuyo/src/tuyotuyo/BlockTester.java @@ -0,0 +1,20 @@ +/** + * @(#)BlockTester.java + * + * + * @author + * @version 1.00 2018/5/11 + */ +package tuyotuyo; + +public class BlockTester +{ + public static void main(String[] args) + { + for(int i = 0; i < 20; i++) + { + Block a = new Block(); + System.out.println(a.getColor()); + } + } +} diff --git a/TuyoTuyo/src/tuyotuyo/Grid.java b/TuyoTuyo/src/tuyotuyo/Grid.java new file mode 100644 index 0000000..4b4cf12 --- /dev/null +++ b/TuyoTuyo/src/tuyotuyo/Grid.java @@ -0,0 +1,415 @@ +/** + * Grid.java + * Creates a grid of blocks and keeps track of a user piece. + * Deletes rows upon completion and deletes 4 adjacent with the + * same color. + * + * @author: David Brooks + * Teacher: Tracy Ishman + * Period 2 + * Date: May 18 2018 + */ +package tuyotuyo; + +import java.util.*; +import javafx.scene.paint.Color; + +public class Grid { + + private Block[][] del; + private final int DONE = 3; + private final int TUYO = 4; + private final int BLOCKS = 4; + public Block[][] grid; + private Piece p; + public Block[][] pieceG; + public int score; + public static String debugt = ""; + + /** + * Creates a new grid with the given number of rows and columns, inserts a + * piece, and resets the score. + * + * @param row number of rows to instantiate the grid with + * @param col number of columns to instantiate the grid with + */ + public Grid(int row, int col) { + grid = new Block[row][col]; + score = 0; + insertPiece(); + } + + /** + * Creates a new piece for the player + */ + private void insertPiece() { + p = new Piece(); + pieceG = new Block[grid.length][grid[0].length]; + int col = grid[0].length / 2 - p.getBlockArray()[0].length / 2; + for (int r = 0; r < p.getBlockArray().length; r++) { + for (int c = 0; c < p.getBlockArray()[0].length; c++) { + pieceG[r][c + col] = p.getBlockArray()[r][c]; + } + } + } + + /** + * Attempts to rotate the piece, checks if it would cause any issues doing + * so and returns the either same grid or updated grid + * + * @return block[][] Returns the updated grid after attempting to rotate the + * piece + */ + public Block[][] rotate() { + int ind = p.getIndex(); + Block[][] previousP = pieceG; + + p.rotate(); + int row = -1; + int col = -1; + System.out.println(); + + for (int r = 0; r < grid.length; r++) { + for (int c = 0; c < grid[r].length; c++) { + if (pieceG[r][c] != null && row < 0) { + row = r; + col = c; + } else if (pieceG[r][c] != null && c < col) { + col = c; + } + } + } + + if (col + p.getBlockArray()[0].length - 1 > grid.length - 1) { + col = grid.length - p.getBlockArray().length; + } + + boolean canChange = true; + int count = 0; + pieceG = new Block[grid.length][grid[0].length]; + + for (int r = 0; r < p.getBlockArray().length; r++) { + if (r + row >= grid.length) { + row = grid.length - r - 1; + } + if (r + row < 0) { + row = 0; + } + for (int c = 0; c < p.getBlockArray()[0].length; c++) { + System.out.println(r + row + " " + (c + col) + " " + r + " " + c); + int add = 0; + if (c + col >= grid[0].length) { + col = grid[0].length - c - 1; + } + if (c + col < 0) { + col = 0; + } + + pieceG[r + row][c + col + add] = p.getBlockArray()[r][c]; + if (grid[r + row][c + col + add] != null) { + canChange = false; + } + } + } + + for (int r = 0; r < grid.length; r++) { + for (int c = 0; c < grid[0].length; c++) { + if (pieceG[r][c] != null) { + count++; + } + } + } + System.out.println("\n" + count); + if (count < BLOCKS) { + canChange = false; + } + + if (canChange) { + return getGrid(); + } else { + System.out.println("reset"); + p.setIndex(ind); + pieceG = previousP; + return getGrid(); + } + } + + /** + * Attempts to move the piece to the right 1 space so long as it isn't at + * the end edge of the grid and nothing is next to it + * + * @return block[][] Returns the updated grid after attempting to move the + * piece to the right + */ + public Block[][] right() { + boolean canChange = true; + for (int r = grid.length - 1; r >= 0; r--) { + for (int c = grid[r].length - 1; c >= 0; c--) { + if (pieceG[r][c] != null) { + if (c == grid[r].length - 1 || grid[r][c + 1] != null) { + canChange = false; + } + } + } + } + + if (canChange) { + for (int r = grid.length - 1; r >= 0; r--) { + for (int c = grid[r].length - 2; c >= 0; c--) { + if (pieceG[r][c] != null) { + pieceG[r][c + 1] = pieceG[r][c]; + pieceG[r][c] = null; + } + } + } + } + return getGrid(); + } + + /** + * Attempts to move the piece to the left 1 space so long as it isn't at the + * end edge of the grid and nothing is next to it + * + * @return block[][] Returns the updated grid after attempting to move the + * piece to the left + */ + public Block[][] left() { + boolean canChange = true; + for (int r = grid.length - 1; r >= 0; r--) { + for (int c = 0; c < grid[r].length; c++) { + if (pieceG[r][c] != null) { + if (c == 0 || grid[r][c - 1] != null) { + canChange = false; + } + } + } + } + + if (canChange) { + for (int r = grid.length - 1; r >= 0; r--) { + for (int c = 1; c < grid[r].length; c++) { + if (pieceG[r][c] != null) { + pieceG[r][c - 1] = pieceG[r][c]; + pieceG[r][c] = null; + } + } + } + } + return getGrid(); + } + + /** + * Returns the integer score + * + * @return int returns the game score + */ + public int getScore() { + return score; + } + + /** + * Takes the piece grid and combines it with the block grid and returns the + * combination for drawing. + * + * @return Block[][] grid and pieceG embedded together for drawing + */ + private Block[][] getGrid() { + Block[][] ret = new Block[grid.length][grid[0].length]; + for (int r = 0; r < grid.length; r++) { + for (int c = 0; c < grid[r].length; c++) { + + if (pieceG[r][c] != null) { + ret[r][c] = pieceG[r][c]; + } else { + ret[r][c] = grid[r][c]; + } + } + } + return ret; + } + + /** + * Checks if the piece has stopped moving. If so, it checks for a Tetris and + * inserts a new piece. Otherwise it moves the piece down 1 space. + * + * @return Block[][] returns the updated grid for drawing + */ + public Block[][] updateGrid() { + debugt = ""; + if (pieceStopped()) { + debugt += " tetris"; + + tetris(); + insertPiece(); + } else { + for (int r = grid.length - 1; r > 0; r--) { + for (int c = 0; c < grid[r].length; c++) { + pieceG[r][c] = pieceG[r - 1][c]; + pieceG[r - 1][c] = null; + } + } + } + return getGrid(); + } + + /** + * Returns if the piece has stopped moving down or not + * + * @return boolean returns if the piece has stopped or not + */ + private boolean pieceStopped() { + boolean stop = false; + + for (int r = grid.length - 1; r >= 0; r--) { + for (int c = 0; c < grid[r].length; c++) { + if (pieceG[r][c] != null) { + if (r == grid.length - 1) { + stop = true; + debugt += " going below "; + } else if (grid[r + 1][c] != null) { + stop = true; + debugt += " below is not null "; + } + } + } + } + + if (stop) { + score += 100; + } + return stop; + } + + /** + * Runs through and checks for completed rows, calling puyo as needed and + * then deleting rows. + */ + private void tetris() { + debugt += "t"; + for (int r = grid.length - 1; r >= 0; r--) { + for (int c = 0; c < grid[r].length; c++) { + if (grid[r][c] == null) { + if (pieceG[r][c] != null) { + grid[r][c] = pieceG[r][c]; + pieceG[r][c] = null; + puyo(r); + } + } + } + } + for (int r = 0; r < grid.length; r++) { + for (int c = 0; c < grid[r].length; c++) { + if (pieceG[r][c] != null) { + puyo(r); + } + } + } + + for (int r = grid.length - 1; r >= 0; r--) { + boolean full = true; + for (int c = 0; c < grid[r].length; c++) { + if (grid[r][c] == null) { + full = false; + } + } + + if (full) { + moveDown(r); + puyo(r); + } + } + } + + /** + * Moves the grid down one row starting at the given row + * + * @param row row to start moving down at + */ + private void moveDown(int row) { + debugt += " remove row "; + for (int r = row; r > 0; r--) { + grid[r] = grid[r - 1]; + } + } + + /** + * Runs puyo for every block in the given row + * + * @param row row of blocks to be checked for puyo + */ + private void puyo(int row) { + debugt += " puyo "; + for (int c = 0; c < grid[row].length; c++) { + if (grid[row][c] != null) { + del = new Block[grid.length][grid[row].length]; + if (puyo(row, c, grid[row][c].getColor()) >= TUYO) { + for (int r = 0; r < grid.length; r++) { + for (int col = 0; col < grid[r].length; col++) { + if (del[r][col] != null) { + grid[r][col] = null; + } + } + } + } + } + } + } + + /** + * Returns the number of blocks directly adjacent to the block of the given + * row and column with the same color as the given one. + * + * @param row row of requested block to be checked + * @param col col of requested block to be checked + * @param c color to be checked against + * @return int number of blocks directly adjacent with the same color + */ + private int puyo(int row, int col, Color c) { + int ret = 0; + if (grid[row][col] != null && grid[row][col].getColor().equals(c) && del[row][col] == null) { + ret += 1; + del[row][col] = grid[row][col]; + if (row + 1 < grid.length) { + ret += puyo(row + 1, col, c); + } + if (col + 1 < grid[0].length) { + ret += puyo(row, col + 1, c); + } + if (row - 1 > 0) { + ret += puyo(row - 1, col, c); + } + if (col - 1 > 0) { + ret += puyo(row, col - 1, c); + } + } + return ret; + } + + /** + * Return if the game is over or not by going out of bounds + * + * @return if the game is over or not + */ + public Boolean gameDone() { + boolean done = false; + for (int c = 0; c < grid[DONE].length; c++) { + + if (grid[DONE][c] != null) { + done = true; + } + } + if (done) { + debugt += " done "; + } + return done; + } + + /** + * Returns debug string of methods called + * + * @return string returns Debug Text + */ + public static String debugT() { + return debugt; + } +} diff --git a/TuyoTuyo/src/tuyotuyo/GridTester.java b/TuyoTuyo/src/tuyotuyo/GridTester.java new file mode 100644 index 0000000..fd0c338 --- /dev/null +++ b/TuyoTuyo/src/tuyotuyo/GridTester.java @@ -0,0 +1,50 @@ +/** + * GridTester.java + * Tests the grid class to make sure the grid is working properly + * + * @author: David Brooks Teacher: Tracy Ishman Period 2 Date: May 18 2018 + */ +package tuyotuyo; + +import java.util.*; + +public class GridTester { + + public static Timer timer; + public static Grid g; + + /** + * + * + */ + public static void main(String[] args) { + TimerTask task = new TimerTask() { + @Override + public void run() { + + Block[][] gr = g.updateGrid(); + + for (Block[] r : gr) { + + for (Block c : r) { + if (c != null) { + System.out.print("n"); + } else { + System.out.print(","); + } + } + System.out.println(); + } + + System.out.println(g.debugT()); + System.out.println(g.getScore() + "a"); + System.out.println(g.gameDone()); + System.out.println(g.pieceG.length + " " + g.pieceG[0].length); + + } + }; + g = new Grid(14, 10); + timer = new Timer(); + timer.scheduleAtFixedRate(task, 500l, 500l); + } +} diff --git a/TuyoTuyo/src/tuyotuyo/Piece.java b/TuyoTuyo/src/tuyotuyo/Piece.java new file mode 100644 index 0000000..998b01b --- /dev/null +++ b/TuyoTuyo/src/tuyotuyo/Piece.java @@ -0,0 +1,387 @@ +/** + * Piece.java + * Creates a 4 by 4 array of blocks in various configurations + * that resemble the common tetris pieces + * + * @author: Tristan Teacher: Tracy Ishman Period 2 Date: May 18 2018 + */ +package tuyotuyo; + +import java.util.*; + +public class Piece { + + private enum PieceType { + I_BLOCK, J_BLOCK, L_BLOCK, O_BLOCK, S_BLOCK, T_BLOCK, Z_BLOCK + } + + private final int X_START = -1; + private final int Y_START = -1; + private PieceType type; + public int pieceIndex; + private List rotations; + + /** + * Instantiates a randomized piece of randomized colors + */ + public Piece() { + int randPiece = (int) (Math.random() * 7); + switch (randPiece) { + case 0: + type = PieceType.I_BLOCK; + break; + case 1: + type = PieceType.J_BLOCK; + break; + case 2: + type = PieceType.L_BLOCK; + break; + case 3: + type = PieceType.O_BLOCK; + break; + case 4: + type = PieceType.S_BLOCK; + break; + case 5: + type = PieceType.T_BLOCK; + break; + case 6: + type = PieceType.Z_BLOCK; + break; + } + rotations = createRotations(); + pieceIndex = (int) (Math.random() * 4); + } + + /** + * Creates Rotations configurations for all the piece types + * + * @return a 2d List of blocks configuration + */ + private List createRotations() { + Block a = new Block(); + Block b = new Block(); + Block c = new Block(); + Block d = new Block(); + if (type.equals(PieceType.I_BLOCK)) { + return createIBlock(a, b, c, d); + } + if (type.equals(PieceType.J_BLOCK)) { + return createJBlock(a, b, c, d); + } + if (type.equals(PieceType.L_BLOCK)) { + return createLBlock(a, b, c, d); + } + if (type.equals(PieceType.O_BLOCK)) { + return createOBlock(a, b, c, d); + } + if (type.equals(PieceType.S_BLOCK)) { + return createSBlock(a, b, c, d); + } + if (type.equals(PieceType.T_BLOCK)) { + return createTBlock(a, b, c, d); + } + if (type.equals(PieceType.Z_BLOCK)) { + return createZBlock(a, b, c, d); + } + return null; + } + + /** + * Creates an I shaped block with the 4 given Blocks + * + * @param a A Block + * @param b B Block + * @param c C Block + * @param d D Block + * @return configuration of an I Block with the 4 given blocks + */ + private List createIBlock(Block a, Block b, Block c, Block d) { + List ret = new ArrayList<>(); + Block[][] iPiece1 = {{a, null, null, null}, + {b, null, null, null}, + {c, null, null, null}, + {d, null, null, null}}; + Block[][] iPiece2 = {{d, c, b, a}, + {null, null, null, null}, + {null, null, null, null}, + {null, null, null, null}}; + Block[][] iPiece3 = {{d, null, null, null}, + {c, null, null, null}, + {b, null, null, null}, + {a, null, null, null}}; + Block[][] iPiece4 = {{a, b, c, d}, + {null, null, null, null}, + {null, null, null, null}, + {null, null, null, null}}; + ret.add(iPiece1); + ret.add(iPiece2); + ret.add(iPiece3); + ret.add(iPiece4); + return ret; + } + + /** + * Creates a J shaped block with the 4 given Blocks + * + * @param a A Block + * @param b B Block + * @param c C Block + * @param d D Block + * @return configuration of an J Block with the 4 given blocks + */ + private List createJBlock(Block a, Block b, Block c, Block d) { + List ret = new ArrayList<>(); + Block[][] jPiece1 = {{null, a, null, null}, + {null, b, null, null}, + {c, d, null, null}, + {null, null, null, null}}; + Block[][] jPiece2 = {{c, null, null, null}, + {d, b, a, null}, + {null, null, null, null}, + {null, null, null, null}}; + Block[][] jPiece3 = {{d, c, null, null}, + {b, null, null, null}, + {a, null, null, null}, + {null, null, null, null}}; + Block[][] jPiece4 = {{a, b, d, null}, + {null, null, c, null}, + {null, null, null, null}, + {null, null, null, null}}; + ret.add(jPiece1); + ret.add(jPiece2); + ret.add(jPiece3); + ret.add(jPiece4); + return ret; + } + + /** + * Creates an L shaped block with the 4 given Blocks + * + * @param a A Block + * @param b B Block + * @param c C Block + * @param d D Block + * @return configuration of an L Block with the 4 given blocks + */ + private List createLBlock(Block a, Block b, Block c, Block d) { + List ret = new ArrayList<>(); + Block[][] lPiece1 = {{a, null, null, null}, + {b, null, null, null}, + {c, d, null, null}, + {null, null, null, null}}; + Block[][] lPiece2 = {{c, b, a, null}, + {d, null, null, null}, + {null, null, null, null}, + {null, null, null, null}}; + Block[][] lPiece3 = {{d, c, null, null}, + {null, b, null, null}, + {null, a, null, null}, + {null, null, null, null}}; + Block[][] lPiece4 = {{null, null, d, null}, + {a, b, c, null}, + {null, null, null, null}, + {null, null, null, null}}; + ret.add(lPiece1); + ret.add(lPiece2); + ret.add(lPiece3); + ret.add(lPiece4); + return ret; + } + + /** + * Creates an O shaped block with the 4 given Blocks + * + * @param a A Block + * @param b B Block + * @param c C Block + * @param d D Block + * @return configuration of an O Block with the 4 given blocks + */ + private List createOBlock(Block a, Block b, Block c, Block d) { + List ret = new ArrayList<>(); + Block[][] oPiece1 = {{a, b, null, null}, + {c, d, null, null}, + {null, null, null, null}, + {null, null, null, null}}; + Block[][] oPiece2 = {{c, a, null, null}, + {d, b, null, null}, + {null, null, null, null}, + {null, null, null, null}}; + Block[][] oPiece3 = {{d, c, null, null}, + {b, a, null, null}, + {null, null, null, null}, + {null, null, null, null}}; + Block[][] oPiece4 = {{b, d, null, null}, + {a, c, null, null}, + {null, null, null, null}, + {null, null, null, null}}; + ret.add(oPiece1); + ret.add(oPiece2); + ret.add(oPiece3); + ret.add(oPiece4); + return ret; + } + + /** + * Creates an S shaped block with the 4 given Blocks + * + * @param a A Block + * @param b B Block + * @param c C Block + * @param d D Block + * @return configuration of an S Block with the 4 given blocks + */ + private List createSBlock(Block a, Block b, Block c, Block d) { + List ret = new ArrayList<>(); + Block[][] sPiece1 = {{null, c, d, null}, + {a, b, null, null}, + {null, null, null, null}, + {null, null, null, null}}; + Block[][] sPiece2 = {{a, null, null, null}, + {b, c, null, null}, + {null, d, null, null}, + {null, null, null, null}}; + Block[][] sPiece3 = {{null, b, a, null}, + {d, c, null, null}, + {null, null, null, null}, + {null, null, null, null}}; + Block[][] sPiece4 = {{d, null, null, null}, + {c, b, null, null}, + {null, a, null, null}, + {null, null, null, null}}; + ret.add(sPiece1); + ret.add(sPiece2); + ret.add(sPiece3); + ret.add(sPiece4); + return ret; + } + + /** + * Creates a T shaped block with the 4 given Blocks + * + * @param a A Block + * @param b B Block + * @param c C Block + * @param d D Block + * @return configuration of a T Block with the 4 given blocks + */ + private List createTBlock(Block a, Block b, Block c, Block d) { + List ret = new ArrayList<>(); + Block[][] tPiece1 = {{null, c, null, null}, + {a, b, d, null}, + {null, null, null, null}, + {null, null, null, null}}; + Block[][] tPiece2 = {{a, null, null, null}, + {b, c, null, null}, + {d, null, null, null}, + {null, null, null, null}}; + Block[][] tPiece3 = {{d, b, a, null}, + {null, c, null, null}, + {null, null, null, null}, + {null, null, null, null}}; + Block[][] tPiece4 = {{null, d, null, null}, + {c, b, null, null}, + {null, a, null, null}, + {null, null, null, null}}; + ret.add(tPiece1); + ret.add(tPiece2); + ret.add(tPiece3); + ret.add(tPiece4); + return ret; + } + + /** + * Creates a Z shaped block with the 4 given Blocks + * + * @param a A Block + * @param b B Block + * @param c C Block + * @param d D Block + * @return configuration of a Z Block with the 4 given blocks + */ + private List createZBlock(Block a, Block b, Block c, Block d) { + List ret = new ArrayList<>(); + Block[][] zPiece1 = {{a, b, null, null}, + {null, c, d, null}, + {null, null, null, null}, + {null, null, null, null}}; + Block[][] zPiece2 = {{null, a, null, null}, + {c, b, null, null}, + {d, null, null, null}, + {null, null, null, null}}; + Block[][] zPiece3 = {{d, c, null, null}, + {null, b, a, null}, + {null, null, null, null}, + {null, null, null, null}}; + Block[][] zPiece4 = {{null, d, null, null}, + {b, c, null, null}, + {a, null, null, null}, + {null, null, null, null}}; + ret.add(zPiece1); + ret.add(zPiece2); + ret.add(zPiece3); + ret.add(zPiece4); + return ret; + } + + /** + * Increases the piece index so as to go up one rotation configuration + */ + public void rotate() { + pieceIndex++; + if (pieceIndex > rotations.size() - 1) { + pieceIndex = 0; + } + } + + /** + * returns the pieceIndex + * + * @return integer of the pieceIndex + */ + public int getIndex() { + return pieceIndex; + } + + /** + * Sets the pieceIndex to the given index + * + * @param ind index to set to + */ + public void setIndex(int ind) { + pieceIndex = ind; + } + + /** + * Returns the block configuration of the piece + * + * @return the block configuration of the piece + */ + public Block[][] getBlockArray() { + return rotations.get(pieceIndex); + } + + /** + * Converts the piece into a string for displaying + * + * @return the piece as a string + */ + @Override + public String toString() { + String ret = ""; + Block[][] me = rotations.get(pieceIndex); + for (int i = 0; i < me.length; i++) { + ret += "["; + for (int j = 0; j < me[i].length; j++) { + if (me[i][j] != null) { + ret += "1"; + } else { + ret += "0"; + } + } + ret += "]\n"; + } + return ret; + } +} diff --git a/TuyoTuyo/src/tuyotuyo/PieceTester.java b/TuyoTuyo/src/tuyotuyo/PieceTester.java new file mode 100644 index 0000000..eee3c94 --- /dev/null +++ b/TuyoTuyo/src/tuyotuyo/PieceTester.java @@ -0,0 +1,29 @@ +/** + * @(#)PieceTester.java + * + * + * @author + * @version 1.00 2018/5/11 + */ +package tuyotuyo; + +public class PieceTester +{ + public static void main(String[] args) + { + for(int i = 0; i < 20; i++) + { + Piece a = new Piece(); + System.out.println(a.toString()); + a.rotate(); + System.out.println(a.toString()); + a.rotate(); + System.out.println(a.toString()); + a.rotate(); + System.out.println(a.toString()); + a.rotate(); + System.out.println(a.toString()); + System.out.println("--------------------------------------------"); + } + } +} diff --git a/TuyoTuyo/src/tuyotuyo/TuyoFXML.fxml b/TuyoTuyo/src/tuyotuyo/TuyoFXML.fxml new file mode 100644 index 0000000..9474d9c --- /dev/null +++ b/TuyoTuyo/src/tuyotuyo/TuyoFXML.fxml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TuyoTuyo/src/tuyotuyo/TuyoFXMLController.java b/TuyoTuyo/src/tuyotuyo/TuyoFXMLController.java new file mode 100644 index 0000000..a316260 --- /dev/null +++ b/TuyoTuyo/src/tuyotuyo/TuyoFXMLController.java @@ -0,0 +1,160 @@ +/** + * Manages and runs the game and connects the game logic to the FXML + * @author Rithwik Pattikonda + * Teacher: Tracy Ishman + * Date: 5/18/2018 + * Period: 2 + */ +package tuyotuyo; + +import java.net.URL; +import java.util.ResourceBundle; +import java.util.Timer; +import java.util.TimerTask; +import javafx.animation.Animation; +import javafx.animation.KeyFrame; +import javafx.animation.Timeline; +import javafx.application.Platform; +import javafx.beans.binding.Bindings; +import javafx.beans.property.BooleanProperty; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.property.SimpleStringProperty; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.GridPane; +import javafx.scene.paint.Color; +import javafx.scene.shape.Rectangle; +import javafx.scene.text.Text; +import javafx.util.Duration; + +/** + * + * @author rithw + */ +public class TuyoFXMLController implements Initializable, EventHandler { + private SimpleStringProperty value; + private Timeline timeline; + private boolean moveable; + private Grid grid; + // private Timeline timeline; + + private Block[][] blocks; + + @FXML + private Text score; + + @FXML + private Button startButton; + + @FXML + private GridPane mainGrid; + + @FXML + private Text gameover; + + /** + * Initializer method called when the program is started + * @param url + * @param rb + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + value = new SimpleStringProperty(this, "0"); + //System.out.println(url.toString()); + //System.out.println(rb.toString()); + startButton.requestFocus(); + startButton.setOnKeyPressed(this); + score.textProperty().bind(value); + timeline = null; + + } + + /** + * Starts the game timer and runs the game + */ + @FXML + private void startGame(ActionEvent event) { + gameover.setVisible(false); + + System.out.println("You clicked me!"); + if (startButton.getText().equals("Stop Game")) { + startButton.setText("Start Game"); + stopGame(); + } else if (startButton.getText().equals("Start Game")) { + startButton.setText("Stop Game"); + moveable = true; + grid = new Grid(20, 10); + + + timeline = new Timeline(new KeyFrame(Duration.millis(200l), ev -> { + if (grid.gameDone()) { + stopGame(); + System.out.println(grid.gameDone()); + } + blocks = grid.updateGrid(); + value.set(Integer.toString(grid.getScore())); + refresh(blocks); + })); + timeline.setCycleCount(Timeline.INDEFINITE); + timeline.play(); + } + } + + /** + * Refreshes the Tetris grid with new block positions + * + * @param blocks block array to replace the grid with + */ + private void refresh(Block[][] blocks) { + startButton.requestFocus(); + mainGrid.getChildren().clear(); + for (int r = 0; r < blocks.length; r++) { + for (int c = 0; c < blocks[r].length; c++) { + if (blocks[r][c] != null) { + Rectangle rect = new Rectangle(0, 0, 40, 40); + rect.setFill(blocks[r][c].getColor()); + rect.setStroke(Color.BLACK); + mainGrid.add(rect, c, r ); + } + } + } + } + + /** + * Stops the game and clears the grid + */ + private void stopGame() { + timeline.stop(); + mainGrid.getChildren().clear(); + gameover.setVisible(true); + } + + /** + * Handles keypresses to move and rotate the piece + * + * @param event the keyevent detected + */ + @Override + public void handle(KeyEvent event) { + if(!moveable){ + + } + else if (event.getCode().toString().equals("LEFT")) { + refresh(grid.left()); + } + else if (event.getCode().toString().equals("RIGHT")) { + refresh(grid.right()); + } + else if (event.getCode().toString().equals("UP")) { + refresh(grid.rotate()); + } + + } +} diff --git a/TuyoTuyo/src/tuyotuyo/TuyoTuyo.java b/TuyoTuyo/src/tuyotuyo/TuyoTuyo.java new file mode 100644 index 0000000..95100ea --- /dev/null +++ b/TuyoTuyo/src/tuyotuyo/TuyoTuyo.java @@ -0,0 +1,45 @@ +/** + * Class to set up the stage and connect to the scene and FXML + * @author Rithwik Pattikonda + * Teacher: Tracy Ishman + * Date: 5/18/2018 + * Period: 2 + */ +package tuyotuyo; + +import javafx.application.Application; +import javafx.event.EventHandler; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.input.KeyEvent; +import javafx.stage.Stage; + +public class TuyoTuyo extends Application{ + + /** + * Sets up the stage with a scene designed with XML + * @param stage on which the program runs + * @throws Exception + */ + @Override + public void start(Stage stage) throws Exception { + Parent root = FXMLLoader.load(getClass().getResource("TuyoFXML.fxml")); + + Scene scene = new Scene(root); + stage.setScene(scene); + stage.show(); + scene.getRoot().requestFocus(); + } + + /** + * Main method + * @param args the command line arguments + */ + public static void main(String[] args) { + launch(args); + } + + + +}