From 6e3a5a248cee29bdfb02d3767692743fdd13d4eb Mon Sep 17 00:00:00 2001 From: c7h-alb-u1 <ibrahim.zakari@stud.hs-hannover.de> Date: Wed, 13 Oct 2021 13:23:05 +0200 Subject: [PATCH] Update src/GameFrame.java, src/GameObject.java, src/GamePanel.java, src/Main.java, src/Walls.java, out/MazeGame.jar files --- out/MazeGame.jar | Bin 0 -> 6356 bytes src/GameFrame.java | 71 +++++++++++++++++++++++ src/GameObject.java | 19 ++++++ src/GamePanel.java | 138 ++++++++++++++++++++++++++++++++++++++++++++ src/Main.java | 9 +++ src/Walls.java | 119 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 356 insertions(+) create mode 100644 out/MazeGame.jar create mode 100644 src/GameFrame.java create mode 100644 src/GameObject.java create mode 100644 src/GamePanel.java create mode 100644 src/Main.java create mode 100644 src/Walls.java diff --git a/out/MazeGame.jar b/out/MazeGame.jar new file mode 100644 index 0000000000000000000000000000000000000000..8ff2c27a0bc21f529c6b44057b553f0ecae57cbd GIT binary patch literal 6356 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 literal 0 HcmV?d00001 diff --git a/src/GameFrame.java b/src/GameFrame.java new file mode 100644 index 0000000..68b715d --- /dev/null +++ b/src/GameFrame.java @@ -0,0 +1,71 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class GameFrame extends JFrame implements ActionListener { + + private static final long serialVersionUID = 1L; + GamePanel game; + JPanel score; + JPanel start; + JButton resetButton; + JButton startGame; + + public GameFrame(int width, int height, String title) { + + this.setTitle(title); + this.setSize(width, height); + this.setResizable(false); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setLocationRelativeTo(null); + + + resetButton = new JButton(); + resetButton.setText("Reset"); + 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); + + score = new JPanel(); + score.setBackground(Color.black); + score.add(resetButton); + score.setFocusable(true); + + start = new JPanel(); + start.setBackground(Color.black); + start.setSize(getWidth(),getHeight()); + start.setLocation(0,0); + start.add(startGame); + + this.add(start); + this.setVisible(true); + } + + @Override + public void actionPerformed(ActionEvent e) { + if(e.getSource() == resetButton){ + this.remove(game); + game = new GamePanel(); + this.add(game); + SwingUtilities.updateComponentTreeUI(this); + game.requestFocus(); + } + if(e.getSource() == startGame){ + this.remove(start); + game = new GamePanel(); + this.add(score,BorderLayout.NORTH); + this.add(game); + SwingUtilities.updateComponentTreeUI(this); + game.requestFocus(); + } + } + +} diff --git a/src/GameObject.java b/src/GameObject.java new file mode 100644 index 0000000..fe33303 --- /dev/null +++ b/src/GameObject.java @@ -0,0 +1,19 @@ +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 new file mode 100644 index 0000000..364208a --- /dev/null +++ b/src/GamePanel.java @@ -0,0 +1,138 @@ +import javax.swing.*; +import java.awt.*; +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; + + Timer timer = new Timer(5, this); + int x = 0, y = 0, velX = 0, velY = 0, veldX = 0, veldY = 0; + int playerSize = 22; + int movmentSpeed = 4; + int faildRounds; + + ImageIcon ggwp; + + private Walls finishWall; + private Walls walls; + private boolean play = true; + + public GamePanel() { + 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); + this.requestFocus(true); + } + + public void paintComponent(Graphics g) { + super.paintComponent(g); + + g.setColor(Color.black); + g.fillRect(0,0,getWidth(),getWidth()); + + //Walls + walls.draw(this,g); + + //Player + if(play) { + g.setColor(Color.red); + g.fillOval(x, y, playerSize, playerSize); + } + if(walls.wallsCollision(x,y,playerSize,playerSize)){ + x = 0; + y=0; + } + if(walls.finishWallsCollision(x,y,playerSize,playerSize)){ + play=false; + } + if(!play) { + gameOver(g); + } + + } + + public void gameOver(Graphics g) { + if(!play){ + g.setColor(Color.black); + g.fillRect(0,0,getWidth(),getHeight()); + ggwp.paintIcon(this,g,280,250); + faildRounds++; + } + } + public int getFailedRounds(){ + return faildRounds; + } + + @Override + public void keyPressed(KeyEvent e) { + int c = e.getKeyCode(); + if(play) { + if (c == KeyEvent.VK_LEFT || c == KeyEvent.VK_A) + veldX = -movmentSpeed; + if (c == KeyEvent.VK_RIGHT || c == KeyEvent.VK_D) + velX = movmentSpeed; + if (c == KeyEvent.VK_UP || c == KeyEvent.VK_W) + veldY = -movmentSpeed; + if (c == KeyEvent.VK_DOWN || c == KeyEvent.VK_S) + velY = movmentSpeed; + } + + } + + @Override + public void keyReleased(KeyEvent e) { + int c = e.getKeyCode(); + if(play) { + if (c == KeyEvent.VK_LEFT || c == KeyEvent.VK_A) + veldX = 0; + if (c == KeyEvent.VK_RIGHT || c == KeyEvent.VK_D) + velX = 0; + if (c == KeyEvent.VK_UP || c == KeyEvent.VK_W) + veldY = 0; + if (c == KeyEvent.VK_DOWN || c == KeyEvent.VK_S) + velY = 0; + } + + } + + @Override + public void actionPerformed(ActionEvent e) { + + if (x < 0) { + velX = 0; + x = 0; + } + if (x > getWidth() - playerSize) { + velX = 0; + x = getWidth() - playerSize; + } + if (y < 0) { + velY = 0; + y = 0; + } + if (y > getHeight() - playerSize) { + velY = 0; + y = getHeight() - playerSize; + } + + x += velX + veldX; + y += velY + veldY; + repaint(); + + } + + @Override + public void keyTyped(KeyEvent e) { + } + +} diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..0ff7a49 --- /dev/null +++ b/src/Main.java @@ -0,0 +1,9 @@ +public class Main { + + public static void main(String[] args) { + + new GameFrame(820, 875, "Maze Game"); + + } + +} diff --git a/src/Walls.java b/src/Walls.java new file mode 100644 index 0000000..6596f44 --- /dev/null +++ b/src/Walls.java @@ -0,0 +1,119 @@ +import java.awt.*; + +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 + + }; + 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 + }; + + + public Walls() { + + } + + + 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); + } + g.setColor(Color.yellow); + g.fillRect(14*unit_size,15*unit_size,2*unit_size,unit_size); + } + + 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; + } + } + + return collided; + } + + 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; + } + + return finishCollided; + } + + + + + +} -- GitLab