From 530bd727ef297bc901b495e975acfd839e83a6a5 Mon Sep 17 00:00:00 2001 From: iryupnik Date: Tue, 25 Feb 2020 21:19:15 +0200 Subject: [PATCH] Initial commit --- .gitignore | 1 + gameOfProd.iml | 2 + pom.xml | 12 +++++ src/main/java/Block.java | 29 +++++++++++ src/main/java/Cell.java | 32 ++++++++++++ src/main/java/Game.java | 84 +++++++++++++++++++++++++++++++ src/main/java/Map.java | 19 +++++++ src/main/java/Person.java | 57 +++++++++++++++++++++ src/main/java/TypeOfCell.java | 3 ++ target/classes/Block.class | Bin 0 -> 954 bytes target/classes/Cell.class | Bin 0 -> 1063 bytes target/classes/Game$1.class | Bin 0 -> 675 bytes target/classes/Game$Canvas.class | Bin 0 -> 1023 bytes target/classes/Game.class | Bin 0 -> 2285 bytes target/classes/Map.class | Bin 0 -> 777 bytes target/classes/Person.class | Bin 0 -> 1371 bytes target/classes/TypeOfCell.class | Bin 0 -> 923 bytes 17 files changed, 239 insertions(+) create mode 100644 .gitignore create mode 100644 gameOfProd.iml create mode 100644 pom.xml create mode 100644 src/main/java/Block.java create mode 100644 src/main/java/Cell.java create mode 100644 src/main/java/Game.java create mode 100644 src/main/java/Map.java create mode 100644 src/main/java/Person.java create mode 100644 src/main/java/TypeOfCell.java create mode 100644 target/classes/Block.class create mode 100644 target/classes/Cell.class create mode 100644 target/classes/Game$1.class create mode 100644 target/classes/Game$Canvas.class create mode 100644 target/classes/Game.class create mode 100644 target/classes/Map.class create mode 100644 target/classes/Person.class create mode 100644 target/classes/TypeOfCell.class diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..485dee6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/gameOfProd.iml b/gameOfProd.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/gameOfProd.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..7fbc5fd --- /dev/null +++ b/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + rpgEng + gameOfProd + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/src/main/java/Block.java b/src/main/java/Block.java new file mode 100644 index 0000000..20d96b1 --- /dev/null +++ b/src/main/java/Block.java @@ -0,0 +1,29 @@ +import java.awt.*; +import java.util.Random; + +public class Block extends Cell { + Random random; + Game game; + + public Block(Game game){ + super(-1, - 1, game.CELL_SIZE, Color.BLUE); + this.game = game; + this.random = new Random(); + } + + public boolean isInBlock(int x, int y) { + if ((this. + getX() == x) && (this.getY() == y)) + return true; + return false; + } + + public void appear() { // show food at new x,y coordinates + int x, y; + do { + x = random.nextInt(20); + y = random.nextInt(20); + } while (game.isBusyCell(x, y)); + set(x, y); + } +} diff --git a/src/main/java/Cell.java b/src/main/java/Cell.java new file mode 100644 index 0000000..0599404 --- /dev/null +++ b/src/main/java/Cell.java @@ -0,0 +1,32 @@ +import java.awt.*; + +public class Cell { + protected int x, y; // object coordinates + protected int size; // object size in px + protected Color color; // object color + + public Cell(int x, int y, int size, Color color) { + set(x, y); + this.size = size; + this.color = color; + } + + public void set(int x, int y) { + this.x = x; + this.y = y; + } + + public int getX() { // get the X coordinate + return x; + } + + public int getY() { // get the Y coordinate + return y; + } + + public void paint(Graphics2D g) {// object rendering + g.setColor(color); + g.fillOval(x * size, y * size, size, size); + g.drawString("ahoj123", 0, 0); + } +} diff --git a/src/main/java/Game.java b/src/main/java/Game.java new file mode 100644 index 0000000..32d60c3 --- /dev/null +++ b/src/main/java/Game.java @@ -0,0 +1,84 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; + +public class Game extends JFrame { + + final int CELL_SIZE = 20; // size of cell in pix + final int CANVAS_WIDTH = 20; // width in cells + final int CANVAS_HEIGHT = 20; // height in cells + + + static final int KEY_LEFT = 37; // codes + static final int KEY_UP = 38; // of + static final int KEY_RIGHT = 39; // cursor + static final int KEY_DOWN = 40; // keys + + Canvas canvas; + Block block; + Person person; + + public static void main(String[] args) { + new Game().start(); + } + + public Game() { + setTitle("Ahoj"); + setDefaultCloseOperation(EXIT_ON_CLOSE); + + canvas = new Canvas(); + canvas.setBackground(Color.white); + canvas.setPreferredSize(new Dimension( + CELL_SIZE * CANVAS_WIDTH, + CELL_SIZE * CANVAS_HEIGHT)); + + addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + person.setDirection(e.getKeyCode()); + } + }); + + add(canvas); + pack(); + setLocationRelativeTo(null); + setResizable(false); + setVisible(true); + } + + public boolean isBusyCell(int x, int y){ + return block.isInBlock(x,y) || person.isInPerson(x,y); + } + + private void start() { + person = new Person(this); + block = new Block(this); + block.appear(); + + while (true) { + person.move(); + canvas.repaint(); + sleep(); + } + } + + private void sleep() { // method for suspending + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + class Canvas extends JPanel { // class for rendering (drawing) + @Override + public void paint(Graphics g) { + super.paint(g); + Graphics2D g2D = (Graphics2D) g; + g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + block.paint(g2D); + person.paint(g2D); + } + } +} \ No newline at end of file diff --git a/src/main/java/Map.java b/src/main/java/Map.java new file mode 100644 index 0000000..48cabf6 --- /dev/null +++ b/src/main/java/Map.java @@ -0,0 +1,19 @@ +public class Map { + private TypeOfCell[][] map; + private Person person; + private Block block; + private static Game game = new Game(); + + Map(int height, int width, Game game){ + map = new TypeOfCell[height][width]; + person = new Person(game); + block = new Block(game); + } + + Map(int height, int width, Game game, int xPerson, int yPerson){ + map = new TypeOfCell[height][width]; + person = new Person(game); + block = new Block(game); + // if (height < ) + } +} diff --git a/src/main/java/Person.java b/src/main/java/Person.java new file mode 100644 index 0000000..5811bdb --- /dev/null +++ b/src/main/java/Person.java @@ -0,0 +1,57 @@ +import java.awt.*; + +public class Person { + private Cell person; + private int direction; + private Game game; + + public Person(Game game){ + this.direction = 0; + this.game = game; + this.person = new Cell(10,10,game.CELL_SIZE,Color.RED); + } + + public void setDirection(int direction) { + if ((direction >= Game.KEY_LEFT) && (direction <= Game.KEY_DOWN)) + this.direction = direction; + } + + public void move(){ + int x = person.getX(); + int y = person.getY(); + switch (direction) { + case Game.KEY_LEFT: x--; + if (x < 0) + x = game.CANVAS_WIDTH - 1; + break; + case Game.KEY_RIGHT: x++; + if (x == game.CANVAS_WIDTH) + x = 0; + break; + case Game.KEY_UP: y--; + if (y < 0) + y = game.CANVAS_HEIGHT - 1; + break; + case Game.KEY_DOWN: y++; + if (y == game.CANVAS_HEIGHT) + y = 0; + break; + } + this.direction = 0; + if (!game.isBusyCell(x, y)){ + person = new Cell(x , y,20,Color.RED); + } + + } + + public void paint(Graphics2D g) { + person.paint(g); + } + + + public boolean isInPerson(int x, int y) { + if (this.person.getX() == x && this.person.getY() == y) + return true; + return false; + } +} diff --git a/src/main/java/TypeOfCell.java b/src/main/java/TypeOfCell.java new file mode 100644 index 0000000..a76fb2d --- /dev/null +++ b/src/main/java/TypeOfCell.java @@ -0,0 +1,3 @@ +public enum TypeOfCell { + EMPTY, BLOCK, PERSON +} diff --git a/target/classes/Block.class b/target/classes/Block.class new file mode 100644 index 0000000000000000000000000000000000000000..ee9eaf53363302425f6b05e98fc903b369f5ab41 GIT binary patch literal 954 zcmZ8f+iuf95IuIBx^dkmq$XTaAm!2|E;N)o^a3PYWGMoPOQ1X;ZBwhbxOSB|(EbWf z{eZrJXexok2k;yG2XNL-3#zOg&&-~kb7ppb{{Hp@z$_jZIEV8YT)>opF_beHMMX!| zKpM6TrVW~l(p-|c83Q$3mf@_9D>|+!80v^%C0tjKZ?1_CqSlK%zxFK7%_-1U#kxyS z^D+O7hvvP&ixw4RDoLu^BB&9r5R`3tf%~MlzU+2hh-IIdd^2ndza=`Jj0Z_AdgpZ& z=*_wxw%@a6#_Kvk94JUv9H;t5fwIZvaBY!OY;3rqqaan0Y{v7j*J-2YfqQg+;*g3c-4&>zUZ>0@k%wBVGM|qY;P>)79XQpBlJVIq1Br&AF@`0 zJ=h?$!0w&H>3G5vJk=H^ zdGBLUU3q|0o_|-QrxrbK8B0i809}Rv5mC0 zliFeae}*j2moQ13inD(Kuy~$P literal 0 HcmV?d00001 diff --git a/target/classes/Cell.class b/target/classes/Cell.class new file mode 100644 index 0000000000000000000000000000000000000000..f433d6b53859bc25f8d60c9b3f5ac25ab046cfa1 GIT binary patch literal 1063 zcmZuv*>2NN5IwhcHpevSmZr3&Wh;pTH7#W=;-v@_DWXC}6+F7BNgSEDa?%C9i5DbN zBp&zxJ_>Q>IwYv7EZ>z@Z`x$H~s58EGzMmD$Uhu_NNHwD{iWQ2Dj(6g@-f7?6k;t|}`gza|`Y#kpm3qB? zF<;#$#!hrdj6x&m`frXu9r*D(?;vDkx)C+KaNmmqxetS8za8`l+t~5LkoZQ=?^6K5 zHCD^-zh|&gr9hLH56m5TL6>ag(W^eQ5wzR31!rY}<1#2%lj+_3gKqTda zbzO$EF@sGTSFvcLh)Ek$n6`06yaFaOcwl1-4{bccV}*>@jyfBgj6K0qnV2ZtmR?rq zbzAQ4LC0@WBZX7W%xH^aoeEh_s<+C5|3*m`Ep6G4K^X3yc!bW#vh_x+!`M6B>&HQt zGtLkDG-ndrmNH!DC%5@qn0z>c_Be*NoK9N~NSgxbG0Ss~w=)=w043)Kl(V>WjtOUZ z0K-`@2Qa@eGl7!ibyb$=IaquO%RZj@SW&3j zBU990(dg~!6WOHk+N8#ADFn$l)aWaC+u2YQ;+{!m@9gA2@=y9;#K>$f8|YDA=f?Sy zpy!|pQ8!H`-yZ3r5W3SPuHIpf@K`SPb76d_u$1&Z>vP@KUu;{>CAIDMa$FYn&KPcHdsJwi+&ktw!T6&zhUaK%(=sF zl{vsF?(+L!QWs-}o+CIKw~JZKO<21VR@}UTx@ ZK4BHMb3*6wkf+B#ZxOY!DaYl>=QmrafG+?5 literal 0 HcmV?d00001 diff --git a/target/classes/Game$Canvas.class b/target/classes/Game$Canvas.class new file mode 100644 index 0000000000000000000000000000000000000000..859e1a06113c8500bbdfea19ef41d370c261b7cc GIT binary patch literal 1023 zcmZ`&?^6;{6g>}+b=M^c6HPOqCE3j_FJv znm+eOHQl$6$WXJhZ_j)8-gEAK_wKLX-+us@LqUa(X$>LVlFMxcF%@@kS1$K71Q1s- zgMu6?+A&_tE2!=t^vPJoD zzapGXUa8Yb#B5Y~eTzGm+_w({l9ZV8+&Yn{=y-}}I-cW&f{c!Nyi|~taSJ+LA*W!GVL(#1>!B-= zY@br@v1Qj%Z`Zgj>Xc|)7BX@nv@Yx&;gH80DxK~myu9>bJ6GN;<;+rUqf{;`$Wzp^ z_{=cTDX%*$MrJBAvXwL6FLk1~SIe?7o>rYx604OxQEifE*cHt#3WoHhOYbtd9(yl~ zHx9C3YFwq>sD5Nn%tZ-gD?Pw4dWrRKE2$+iHh3T$w_!8%n`<7TuwV-@jQ{6?WG?1XhwK=sQ913`*h@>=gaUGpH@75gh1;565m8a`9peMF)<@B{5I`a+P>4{_7Kh{tqhThUneedh_q(<4 zYF{7y(l2(E&{fvz59m+mkLXWmyU!#-TuUJ5o^$Ux=kBx5x#6#W|M(NY3H%(vb2>Ck zh?vx&Vk7U77sodJx|e$CVEq;snO(QuLdotp)TRro^RUzn3*f6YG!I? zOrmRWtZQ^?JlT`(7oU>Z-g`L5`+nXf_T^!*4)6xCM#NJ#4wl_} zhQ7s#_H9g!9Vv9Gf{(!-2-V(41*;rzLhJ zb;F!DJ94Hy(=qD1mOayXXpH9xC#y6xq%2zv7Urgvn>MF&+-XWV88bI#x|Z1G&5-HN zkd{r4NXF~WTejstsi8U+WcFt*`i2A8M50?>cfngqs9cWVW69*9Ns_wA&k}92>iV+g zl*)6D2-+(UCv9K3ZXxfhZ0}-5<$cSsCFiJ9a5JjU62wvA=a^KypA_mse~+ccnjpD<5Hg+M81i)G;F9~T#~(Q-~yhE;2i_+;ynZJ zT)^jLGs_J~Y;KQ!LOVQI&9#M1l|?#y@*i^MDT;GKWf;y-rh%%W#A_aa56mQr!8OT z+8nFkw_+k%>C&UFn}wX8$T^-G;#8T!H(84%rL)mksi&gX2iHpV2`A^c#JVtR`Apwf z%D#5OZq+e!x0$&)<2nU9%P}e=Soe{P!Dw)8r1!9^uCwndJ8Iox&Mg%IYh(vwTyJKx z18ON{dA{NU*08I>Rn05g@2EHqLaG^}AztB^aOU!kP2bK#mEa$2vi>~LlQ|-j*CC{g zs2taMm3AJ6SCNag7>pQEo^`AAwnDK@t$4h`K8;qKsj$z|K38EsLA$fUKF?eDWGEpc9;_U2t~H1vfgaw} zOY0o5Xk0g}LYr7Y)e5Tb)2u=trOp*-;kpGEsTn0#^dm`2lUH6&^EcB<8b7{*P`t5u z88v|n2Qm_Gsx2ZK4;Qf^z6xW4UUkc;kN<}HU(rxRqiCzxII&T?&A$~i6|sq)&EmPa zh?clG6tQJIUPNnLD`IQBx`=J@P!ZeL@ph9`U@Jn15OXc9DA8|28@96%J8%>`N#ZV| z-ivX>agG0kvN!^ZCpM13V~f`7^pV0dL7jsbD%W`x)%*o^5>MOqwjy@iMFaJnqVKwc zNa!9y)xXfA#9%mJ{o4?xewv*-!vQ(V+Bah#+BP4tq{I!e8nAO8Fg04K}) literal 0 HcmV?d00001 diff --git a/target/classes/Map.class b/target/classes/Map.class new file mode 100644 index 0000000000000000000000000000000000000000..a7ce07ea2fd1b102fbdfbeb75f53050f696a80e5 GIT binary patch literal 777 zcmYLG-%rzE6g^+p?%TTVhp3=}KM;{og^Btm;Xx8jlL{sh62eng>Q?O5Wek-k|0ZLW zC6f5&i+_~y+;+@|e)oK*_nvc4`{(b^UjVl7(nbwUjYb(&tZTS7OgxdxQ;iK9I=^gc zv~1XD%A02zTN=+53cX;UP&+>M4=x7L{>R-YNnR-w2hs2>?JJc0_ZcE*wUadbq@exR z0?3%1pck>(f6FRU+i^c0?I={5o|lvBhiuzTPuN!X<9@Vv-fKt0gP@&|ne)>yNDhNx zEcYpCj=J#~-TZgKKs38i-06-Klt=PQd@|}PRA>60Cl2~+z9rGc6)J6q$#k7UQ=04# z>G?2>-o#>EqWb1(@Hud>fK>-|H0YJj3iZOlHO$d5%j)1dZZL@CbZ`^%{BRUdXoy5B z3HqJZe)}{Exo5d~l^o0b(l!1g6NVTN8KRn13bNWF##-RBfLll67-QEa5J16vsW> zr=g$+L`H^WoqU<)=`s;(k?$;7=D(Gl4OA&w&*XRVrkT7olecE_R+d)eEj*;9WVEnC kWO3m~Se;s~WZFRG686yql^<}#SY;WDtTLvUOmeUN1DC9GeE&YAi3`}ho?*Ae6tQk`q*~IrYg_-hh=;sEd`S#PD14A)a%s2(&HPZn-Y7-^wr8PwjsD zS-pR{YA?;Zh1$^Mm95=RG6Qb;OX= z5ka?(9z-Qks-$BK<3VI}OyH6Xxvay$UV5cQIe-TAqbA)}$}3z2C?n6VTv}BG4 zN=wyKr~XiBado-2A}Qerhoy^y<%dsl;ms#$tCP%mwt?{2$9+FvB?K7(Sm|#NY5x{{ z>E12)(?1Y+XlRDkyN$N{M$Z?te?xE!q0b8G0QVS?fDorJ%)iFG9XJIYaphB(Fp=Pk z=u&lN6gY@Ojm$I5E2AQ&apE01O~ZPRP}*b#tsI@?0rF9OA)6LJQd&YHw%i>CM-QXJKDz1t@<{IuW)bEiG6vsD^T@}J? z+14@Sr?qd@_b0K2lPyP}nAt#V)h7}y+dA6(8Bbh-nu%@bZxB@)n~7b;ol!08p}bMH zF@|$&*eDw|h6A`x>N6DfF~zh=y2$e9+4$$2&=)w4m!$QIv|b~HHKg$oeM-2bCrLxN z5H|QtHw82B7DsvW@y;3dB;@dW?Fo}ch*Pkq)fG+kZGgoM?&wIk*^w{{I7t}6d9WIA zPxy`ONL<3PBj!2`@7j@|Jb_LBCcQq=11CvF4wLo>DUa?bKHkg`Zxm0&X7MS7kp2r} C3foHn literal 0 HcmV?d00001 diff --git a/target/classes/TypeOfCell.class b/target/classes/TypeOfCell.class new file mode 100644 index 0000000000000000000000000000000000000000..6bcd3b8df0916c2cac6c92afc41cc5e9cecef73b GIT binary patch literal 923 zcmZuv?{Csz5Pn`Lv~*>#iqp+G=bR4M9HR3RWZ5K`80%Opk`UvEf*p1##qeW^|CO@D z8I5M2{iBR`?}!w&P2S7h^W5EY_r5=WefwuVWrtd~9n-=>%>w zat#4x_|7B63ES%g z&T!PHO3^F>TDk2{l2=2etHG#S4y)Ru9qD#&)Ni{_J)S5vUEdB5WZ(+lMaG~DdPv+U zY+wnG46NdoffUjP7Wgoc7MP!|f;-YRwEbQ{)ic>#NKLJE;Hc0@uh}C(EBchWL!g1)?9x6Sz)i zTw=6Rnr?Z*-$g`5byLZILF@tw^CL6-8x%1vSy;hMiPLI`#T|=?(hsQlt(9}cKS?;; zZkn!QjiuwZ