Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package bomberman18;
- 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.*;
- import javax.swing.*;
- public class Level extends JPanel implements KeyListener, ActionListener
- {
- Bomberman bomberman, bombermanGroen, bombermanGeel, bombermanRood, bombermanZwart;
- javax.swing.Timer timer0;
- javax.swing.Timer timer1;
- javax.swing.Timer timer2;
- javax.swing.Timer timer3;
- private int afteller0;
- private int afteller1;
- private int afteller2;
- private int afteller3;
- private final int ONTPLOFFINGSTIJD = 4;
- private int vakgrootte = 30;
- Random generator = new Random();
- private ArrayList<Bomberman> objecten;
- private ArrayList<RandomLevel> levelLijst;
- private ArrayList<Bom> bomLijst;
- private ArrayList<Explosie> explosieLijst;
- private Boolean botsing = false;
- private Boolean botsing2 = false;
- private Boolean botsing3 = false;
- private Boolean bomberman0Bom = false;
- private Boolean bomberman1Bom = false;
- private Boolean bomberman2Bom = false;
- private Boolean bomberman3Bom = false;
- //nodig om later de keys te changen
- private int nulOmhoog, nulOmlaag, nulLinks, nulRechts, nulPlaatsBom;
- private int eenOmhoog, eenOmlaag, eenLinks, eenRechts, eenPlaatsBom;
- private int tweeOmhoog, tweeOmlaag, tweeLinks, tweeRechts, tweePlaatsBom;
- private int drieOmhoog, drieOmlaag, drieLinks, drieRechts, driePlaatsBom;
- public Level()
- {
- setLayout(null);
- addKeyListener(this);
- setFocusable(true);
- requestFocus();
- objecten = new ArrayList<Bomberman>();
- levelLijst = new ArrayList<RandomLevel>();
- bomLijst = new ArrayList<Bom>();
- explosieLijst = new ArrayList<Explosie>();
- // maak de bombermans (getal doorkrijgen van het menu)
- // afhankelijk van het aantal gekozen spelers
- plaatsBomberman(4);
- genereerLevel();
- genereerMuur();
- setKeys();
- afteller0 = ONTPLOFFINGSTIJD;
- afteller1 = ONTPLOFFINGSTIJD;
- afteller2 = ONTPLOFFINGSTIJD;
- afteller3 = ONTPLOFFINGSTIJD;
- }
- public void setKeys() // de default keys
- {
- nulOmhoog = 38; // keycode voor pijl omhoog
- nulOmlaag = 40; // pijl omlaag
- nulLinks = 37; // pijl links
- nulRechts = 39; // pijl rechts
- nulPlaatsBom = 32; // SPACE
- //------------------
- eenOmhoog = 87; // W
- eenOmlaag = 83; // S
- eenLinks = 65; // A
- eenRechts = 68; // D
- eenPlaatsBom = 81; // Q
- //------------------
- tweeOmhoog = 104; //NUM 8
- tweeLinks = 100; //NUM 4
- tweeOmlaag = 98; //NUM 2
- tweeRechts = 102; //NUM 6
- tweePlaatsBom = 103; //NUM 7
- //------------------
- drieOmhoog = 73; // I
- drieOmlaag = 75; // K
- drieLinks = 74; // J
- drieRechts = 76; // L
- driePlaatsBom = 85; // U
- }
- public void paintComponent(Graphics g)
- {
- super.paintComponent(g);
- this.setBackground(Color.CYAN);
- tekenLevel(g);
- }
- public void tekenLevel(Graphics g)
- {
- for (int i = 0; i <= (getWidth() / 10); i++) // horizontale "grid"
- {
- g.drawLine(0, i * vakgrootte, getWidth(), i * vakgrootte);
- }
- for (int i = 0; i <= (getHeight() / 10); i++) // verticale "grid"
- {
- g.drawLine(i * vakgrootte, 0, i * vakgrootte, getHeight());
- }
- }
- public void genereerLevel()
- {
- int id = 0;
- int locatieX = 0;
- int locatieY = 0;
- for (int y = 2; y < 18; y++)
- {
- for (int x = 2; x < 18; x++)
- {
- id++;
- int randomGetal = generator.nextInt(6);
- switch (randomGetal)
- {
- case 0 : // leeg = nix
- break;
- case 1 :
- case 2 :
- case 3 :
- case 4 :
- case 5 :
- locatieX = x * vakgrootte + 1;
- locatieY = y * vakgrootte + 1;
- RandomLevel test = new RandomLevel(id, randomGetal, locatieX, locatieY);
- add(test);
- levelLijst.add(test);
- break;
- }
- }
- }
- }
- public void genereerMuur() // maakt de muur om het level heen
- {
- int id = 1000;
- int y = 0;
- for (int x = 0; x <= 20; x++)
- {
- id++;
- RandomLevel muur = new RandomLevel(id, 99, x * vakgrootte, y * vakgrootte);
- add(muur);
- levelLijst.add(muur);
- }
- y = 19;
- for (int x = 0; x <= 20; x++)
- {
- id++;
- RandomLevel muur = new RandomLevel(id, 99, x * vakgrootte, y * vakgrootte);
- add(muur);
- levelLijst.add(muur);
- }
- int x = 0;
- for (int yPOS = 1; yPOS <= 20; yPOS++)
- {
- id++;
- RandomLevel muur = new RandomLevel(id, 99, 0, yPOS * vakgrootte);
- add(muur);
- levelLijst.add(muur);
- }
- x = 19;
- for (int yPOS = 0; yPOS <= 20; yPOS++)
- {
- id++;
- RandomLevel muur = new RandomLevel(id, 99, x * vakgrootte, yPOS * vakgrootte);
- add(muur);
- levelLijst.add(muur);
- }
- }
- public void plaatsBomberman(int aantal)
- {
- int locatieX = 0;
- int locatieY = 0;
- String kleur = null;
- for (int nummer = 0; nummer <= aantal; nummer++)
- {
- if (nummer == 0)//links boven
- {
- kleur = "groen";
- locatieX = 1 * vakgrootte + 1;
- locatieY = 1 * vakgrootte + 1;
- bombermanGroen = new Bomberman(0, locatieX, locatieY, kleur); // het 1e cijfer is nodig voor het botsing detectie
- add(bombermanGroen);
- objecten.add(bombermanGroen);
- timer0 = new javax.swing.Timer(1000, this);
- }
- if (nummer == 2)//rechts boven
- {
- kleur = "geel";
- locatieX = 18 * vakgrootte + 1;
- locatieY = 1 * vakgrootte + 1;
- bombermanGeel = new Bomberman(1, locatieX, locatieY, kleur);
- add(bombermanGeel);
- objecten.add(bombermanGeel);
- timer1 = new javax.swing.Timer(1000, this);
- }
- if (nummer == 3)// links onder
- {
- kleur = "rood";
- locatieX = 1 * vakgrootte + 1;
- locatieY = 18 * vakgrootte + 1;
- bombermanRood = new Bomberman(2, locatieX, locatieY, kleur);
- add(bombermanRood);
- objecten.add(bombermanRood);
- timer2 = new javax.swing.Timer(1000, this);
- }
- if (nummer == 4)//R onder
- {
- kleur = "zwart";
- locatieX = 18 * vakgrootte + 1;
- locatieY = 18 * vakgrootte + 1;
- bombermanZwart = new Bomberman(3, locatieX, locatieY, kleur);
- add(bombermanZwart);
- objecten.add(bombermanZwart);
- timer3 = new javax.swing.Timer(1000, this);
- }
- }
- }
- public void keyPressed(KeyEvent e)
- {
- int keyCode = e.getKeyCode();
- // afhankelijk van de gebruikte keys wordt naar de juiste verplaatsxxx() verwezen
- //groen links boven
- if (keyCode == nulOmlaag || keyCode == nulOmhoog || keyCode == nulRechts || keyCode == nulLinks)
- {
- verplaatsBomberman(keyCode, 0);
- }
- //geel rechts boven
- if (keyCode == eenOmlaag || keyCode == eenOmhoog || keyCode == eenRechts || keyCode == eenLinks)
- {
- verplaatsBomberman(keyCode, 1);
- }
- //rood links onder
- if (keyCode == tweeOmlaag || keyCode == tweeOmhoog || keyCode == tweeRechts || keyCode == tweeLinks)
- {
- verplaatsBomberman(keyCode, 2);
- }
- //zwart rechts onder
- if (keyCode == drieOmlaag || keyCode == drieOmhoog || keyCode == drieRechts || keyCode == drieLinks)
- {
- verplaatsBomberman(keyCode, 3);
- }
- if (keyCode == nulPlaatsBom)
- {
- if (!bomberman0Bom)
- {
- afteller0 = 5;
- plaatsBom(0, "groen");
- bomberman0Bom = true;
- }
- }
- if (keyCode == eenPlaatsBom)
- {
- if (!bomberman1Bom)
- {
- afteller1 = 5;
- plaatsBom(1, "geel");
- bomberman1Bom = true;
- }
- }
- if (keyCode == tweePlaatsBom)
- {
- if (!bomberman2Bom)
- {
- afteller2 = 5;
- plaatsBom(2, "rood");
- bomberman2Bom = true;
- }
- }
- if (keyCode == driePlaatsBom)
- {
- if (!bomberman3Bom)
- {
- afteller3 = 5;
- plaatsBom(3, "zwart");
- bomberman3Bom = true;
- }
- }
- }
- public void plaatsBom(int id, String kleur)
- {
- Bomberman b1 = objecten.get(id); // chekken welke positsie de bomberman is
- int xpos = b1.getX();
- int ypos = b1.getY();
- Bom bom1 = new Bom(kleur, id, xpos, ypos); // maak een bom op de zelfde pos als bomberman
- add(bom1);
- bomLijst.add(bom1);
- repaint(); // repaint anders komt ie niet :p
- if (id == 0)
- timer0.start();
- if (id == 1)
- timer1.start();
- if (id == 2)
- timer2.start();
- if (id == 3)
- timer3.start();
- }
- public void controleerBotsingBom(int bombermanID)
- {
- botsing3 = false;
- for (int i = 0; i < bomLijst.size(); i++)
- {
- Bomberman b1 = objecten.get(bombermanID);
- Bom bom1 = bomLijst.get(i);
- if (Botsing.overlapt(bom1, b1))
- {
- botsing = true;
- }
- }
- }
- public void controleerBotsingLevel(int bombermanID)
- {
- botsing2 = false;
- for (int i = 0; i < levelLijst.size(); i++)
- {
- Bomberman b1 = objecten.get(bombermanID);
- RandomLevel l1 = levelLijst.get(i);
- if (Botsing.overlapt(b1, l1))
- {
- botsing2 = true;
- }
- }
- }
- public void controleerBotsing()
- //doet een controle of 1 van de bomberman's enige andere bomberman overlapt
- //zo ja dan wordt botsing true en wordt de verplaatsing teruggedraait
- {
- botsing = false;
- //BELANGRIJK! DIT IS VAN 0 TOT GETAL DUS 3 == MAXIMUM!
- int aantal_checks_om_te_doen = 3; //ofwel aantal bomerman's in het spel
- //BELANGRIJK! DIT IS VAN 0 TOT GETAL DUS 3 == MAXIMUM!
- int aantal_checks_gedaan = 0;
- int objectnummer_om_te_checken = 0; // beginnen met bomberman 0
- for (int i = 0; i <= aantal_checks_om_te_doen; i++)
- {
- for (int positie = 0; positie < objecten.size(); positie++)
- // loop elke positie langs
- // met andere woorden doe dit:
- // bomberman 0 overlapt 0 => bomberman 0 overlapt 1 => overlapt 2 ed
- {
- Bomberman b1 = objecten.get(positie);
- Bomberman b2 = objecten.get(objectnummer_om_te_checken);
- if (Botsing.overlapt(b2, b1) && b1 != b2)
- {
- botsing = true;
- }
- if (positie == 3) // is hij bij bomberman3 (de laatste ookwel)?
- {
- if (!botsing) // geen botsing? => bomberman 0 raakt niks
- {
- aantal_checks_gedaan++;
- if (aantal_checks_gedaan <= aantal_checks_om_te_doen)
- {
- objectnummer_om_te_checken++; // verhoog het nummertje zodat een andere aan de beurt is
- }
- }
- }
- }
- }
- }
- public void verplaatsBomberman(int keyCode, int bombermanID)
- {
- int richting = 0;
- if (keyCode == nulOmlaag || keyCode == eenOmlaag || keyCode == tweeOmlaag || keyCode == drieOmlaag)
- richting = 1;
- if (keyCode == nulOmhoog || keyCode == eenOmhoog || keyCode == tweeOmhoog || keyCode == drieOmhoog)
- richting = 2;
- if (keyCode == nulRechts || keyCode == eenRechts || keyCode == tweeRechts || keyCode == drieRechts)
- richting = 3;
- if (keyCode == nulLinks || keyCode == eenLinks || keyCode == tweeLinks || keyCode == drieLinks)
- richting = 4;
- Bomberman b1 = objecten.get(bombermanID);
- switch (richting)
- {
- case 1 :
- b1.verplaatsBomberman("onder");
- controleerBotsing();
- controleerBotsingLevel(bombermanID);
- controleerBotsingBom(bombermanID);
- if (botsing || botsing2 || botsing3)
- b1.verplaatsBomberman("boven");
- break;
- case 2 :
- b1.verplaatsBomberman("boven");
- controleerBotsing();
- controleerBotsingLevel(bombermanID);
- controleerBotsingBom(bombermanID);
- if (botsing || botsing2 || botsing3)
- b1.verplaatsBomberman("onder");
- break;
- case 3 :
- b1.verplaatsBomberman("rechts");
- controleerBotsing();
- controleerBotsingLevel(bombermanID);
- controleerBotsingBom(bombermanID);
- if (botsing || botsing2 || botsing3)
- b1.verplaatsBomberman("links");
- break;
- case 4 :
- b1.verplaatsBomberman("links");
- controleerBotsing();
- controleerBotsingLevel(bombermanID);
- controleerBotsingBom(bombermanID);
- if (botsing || botsing2 || botsing3)
- b1.verplaatsBomberman("rechts");
- break;
- }
- }
- public void actionPerformed(ActionEvent e)
- {
- if (e.getSource() == timer0)
- {
- maakExplosie(0);
- afteller0--;
- }
- if (e.getSource() == timer1)
- {
- maakExplosie(1);
- afteller1--;
- }
- if (e.getSource() == timer2)
- {
- maakExplosie(2);
- afteller2--;
- }
- if (e.getSource() == timer3)
- {
- maakExplosie(3);
- afteller3--;
- }
- System.out.println("action");
- repaint();
- }
- public void maakExplosie(int id)
- {
- System.out.println("expl");
- if (afteller0 == 0)
- {
- int test = 0;
- timer0.stop();
- afteller0 = ONTPLOFFINGSTIJD;
- for (int nummer = 1; nummer < bomLijst.size(); nummer++)
- {
- Bom b1 = bomLijst.get(nummer);
- String bla = "" + b1.getTest();
- if (bla.equalsIgnoreCase("groen"))
- {
- test = nummer;
- }
- }
- Bom b1 = bomLijst.get(test);
- int xpos;
- int ypos;
- xpos = b1.getX();
- ypos = b1.getY();
- b1.setVisible(false);
- b1.remove(b1);
- bomLijst.remove(test);
- Explosie e = new Explosie(0, xpos, ypos);
- add(e);
- explosieLijst.add(e);
- bomberman0Bom = false;
- repaint();
- }
- if (afteller1 == 0)
- {
- int test = 0;
- timer1.stop();
- afteller1 = ONTPLOFFINGSTIJD;
- for (int nummer = 1; nummer < bomLijst.size(); nummer++)
- {
- Bom b1 = bomLijst.get(nummer);
- String bla = "" + b1.getTest();
- if (bla.equalsIgnoreCase("geel"))
- {
- test = nummer;
- }
- }
- Bom b1 = bomLijst.get(test);
- int xpos;
- int ypos;
- xpos = b1.getX();
- ypos = b1.getY();
- b1.setVisible(false);
- b1.remove(b1);
- bomLijst.remove(test);
- Explosie e = new Explosie(1, xpos, ypos);
- add(e);
- explosieLijst.add(e);
- bomberman1Bom = false;
- repaint();
- }
- if (afteller2 == 0)
- {
- int test = 0;
- timer2.stop();
- afteller2 = ONTPLOFFINGSTIJD;
- for (int nummer = 1; nummer < bomLijst.size(); nummer++)
- {
- Bom b1 = bomLijst.get(nummer);
- String bla = "" + b1.getTest();
- if (bla.equalsIgnoreCase("rood"))
- {
- test = nummer;
- }
- }
- Bom b1 = bomLijst.get(test);
- int xpos;
- int ypos;
- xpos = b1.getX();
- ypos = b1.getY();
- b1.setVisible(false);
- b1.remove(b1);
- bomLijst.remove(test);
- Explosie e = new Explosie(1, xpos, ypos);
- add(e);
- explosieLijst.add(e);
- bomberman2Bom = false;
- repaint();
- }
- if (afteller3 == 0)
- {
- int test = 0;
- timer3.stop();
- afteller3 = ONTPLOFFINGSTIJD;
- for (int nummer = 1; nummer < bomLijst.size(); nummer++)
- {
- Bom b1 = bomLijst.get(nummer);
- String bla = "" + b1.getTest();
- if (bla.equalsIgnoreCase("zwart"))
- {
- test = nummer;
- }
- }
- Bom b1 = bomLijst.get(test);
- int xpos;
- int ypos;
- xpos = b1.getX();
- ypos = b1.getY();
- b1.setVisible(false);
- b1.remove(b1);
- bomLijst.remove(test);
- Explosie e = new Explosie(1, xpos, ypos);
- add(e);
- explosieLijst.add(e);
- bomberman3Bom = false;
- repaint();
- }
- }
- public void keyReleased(KeyEvent e)
- {
- }
- public void keyTyped(KeyEvent e)
- {
- }
- }
Add Comment
Please, Sign In to add comment