import javax.swing.*;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Doolhof extends JFrame{
public static void main( String args[] ) {
JFrame frame = new Doolhof();
frame.setSize(1000, 900);
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
frame.setTitle("Doolhof");
frame.setContentPane(new DoolhofPaneel());
frame.setVisible(true);
}
}
class DoolhofPaneel extends JPanel implements KeyListener {
public Persoon persoon;
public int vakgroote = 32;
public int veld[][] = new int[25][25];
public ImageIcon muur;
public boolean links, rechts, up, down, ingedrukt, gewonnen;
public int linksg, rechtsg, upg, downg;
private javax.swing.Timer timer;
DoolhofPaneel(){
this.setFocusable(true);
this.addKeyListener(this);
timer = new javax.swing.Timer(1, new TimerHandler());
timer.start();
muur = new ImageIcon("muur.gif");
veld[0][0]=1; veld[0][1]=1; veld[0][2]=1; veld[0][3]=1; veld[0][4]=1; veld[0][5]=1; veld[0][6]=1; veld[0][7]=1; veld[0][8]=1; veld[0][9]=1; veld[0][10]=1; veld[0][11]=1; veld[0][12]=1; veld[0][13]=1; veld[0][14]=1; veld[0][15]=1; veld[0][16]=1; veld[0][17]=1; veld[0][18]=1; veld[0][19]=1; veld[0][20]=1; veld[0][21]=1; veld[0][22]=1; veld[0][23]=1; veld[0][24]=1; veld[1][0]=1; veld[1][2]=1; veld[1][9]=1; veld[1][10]=1; veld[1][13]=1; veld[1][14]=1; veld[1][16]=1; veld[1][17]=1; veld[1][19]=1; veld[1][20]=1; veld[1][22]=1; veld[1][23]=1; veld[1][24]=1; veld[2][0]=1; veld[2][2]=1; veld[2][4]=1; veld[2][5]=1; veld[2][6]=1; veld[2][8]=1; veld[2][9]=1; veld[2][12]=1; veld[2][19]=1; veld[2][24]=1; veld[3][0]=1; veld[3][2]=1; veld[3][4]=1; veld[3][9]=1; veld[3][11]=1; veld[3][12]=1; veld[3][13]=1; veld[3][15]=1; veld[3][17]=1; veld[3][19]=1; veld[3][24]=1; veld[4][0]=1; veld[4][4]=1; veld[4][6]=1; veld[4][7]=1; veld[4][8]=1; veld[4][9]=1; veld[4][15]=1; veld[4][17]=1; veld[4][19]=1; veld[4][20]=1; veld[4][21]=1; veld[4][22]=1; veld[4][24]=1; veld[5][0]=1; veld[5][2]=1; veld[5][3]=1; veld[5][4]=1; veld[5][11]=1; veld[5][12]=1; veld[5][13]=1; veld[5][14]=1; veld[5][15]=1; veld[5][17]=1; veld[5][22]=1; veld[5][24]=1; veld[6][0]=1; veld[6][6]=1; veld[6][7]=1; veld[6][8]=1; veld[6][9]=1; veld[6][10]=1; veld[6][11]=1; veld[6][18]=1; veld[6][22]=1; veld[6][24]=1; veld[7][0]=1; veld[7][1]=1; veld[7][3]=1; veld[7][11]=1; veld[7][12]=1; veld[7][13]=1; veld[7][14]=1; veld[7][15]=1; veld[7][16]=1; veld[7][18]=1; veld[7][20]=1; veld[7][21]=1; veld[7][22]=1; veld[7][24]=1; veld[8][0]=1; veld[8][3]=1; veld[8][5]=1; veld[8][6]=1; veld[8][7]=1; veld[8][8]=1; veld[8][16]=1; veld[8][18]=1; veld[8][20]=1; veld[8][24]=1; veld[9][0]=1; veld[9][2]=1; veld[9][3]=1; veld[9][8]=1; veld[9][10]=1; veld[9][11]=1; veld[9][12]=1; veld[9][14]=1; veld[9][16]=1; veld[9][18]=1; veld[9][20]=1; veld[9][21]=1; veld[9][22]=1; veld[9][24]=1; veld[10][0]=1; veld[10][2]=1; veld[10][3]=1; veld[10][4]=1; veld[10][5]=1; veld[10][6]=1; veld[10][8]=1; veld[10][9]=1; veld[10][14]=1; veld[10][16]=1; veld[10][18]=1; veld[10][24]=1; veld[11][0]=1; veld[11][6]=1; veld[11][8]=1; veld[11][10]=1; veld[11][11]=1; veld[11][14]=1; veld[11][18]=1; veld[11][19]=1; veld[11][20]=1; veld[11][21]=1; veld[11][22]=1; veld[11][24]=1; veld[12][0]=1; veld[12][1]=1; veld[12][2]=1; veld[12][3]=1; veld[12][4]=1; veld[12][6]=1; veld[12][8]=1; veld[12][12]=1; veld[12][14]=1; veld[12][15]=1; veld[12][18]=1; veld[12][24]=1; veld[13][0]=1; veld[13][6]=1; veld[13][8]=1; veld[13][9]=1; veld[13][10]=1; veld[13][12]=1; veld[13][15]=1; veld[13][18]=1; veld[13][21]=1; veld[13][22]=1; veld[13][23]=1; veld[13][24]=1; veld[14][0]=1; veld[14][2]=1; veld[14][3]=1; veld[14][4]=1; veld[14][6]=1; veld[14][8]=1; veld[14][10]=1; veld[14][12]=1; veld[14][13]=1; veld[14][15]=1; veld[14][18]=1; veld[14][19]=1; veld[14][22]=1; veld[14][24]=1; veld[15][0]=1; veld[15][2]=1; veld[15][4]=1; veld[15][6]=1; veld[15][8]=1; veld[15][10]=1; veld[15][12]=1; veld[15][15]=1; veld[15][16]=1; veld[15][19]=1; veld[15][24]=1; veld[16][0]=1; veld[16][2]=1; veld[16][4]=1; veld[16][8]=1; veld[16][10]=1; veld[16][14]=1; veld[16][16]=1; veld[16][19]=1; veld[16][20]=1; veld[16][21]=1; veld[16][22]=1; veld[16][23]=1; veld[16][24]=1; veld[17][0]=1; veld[17][2]=1; veld[17][4]=1; veld[17][10]=1; veld[17][11]=1; veld[17][12]=1; veld[17][14]=1; veld[17][23]=1; veld[17][24]=1; veld[18][0]=1; veld[18][2]=1; veld[18][4]=1; veld[18][6]=1; veld[18][7]=1; veld[18][8]=1; veld[18][12]=1; veld[18][14]=1; veld[18][15]=1; veld[18][16]=1; veld[18][19]=1; veld[18][21]=1; veld[18][24]=1; veld[19][0]=1; veld[19][2]=1; veld[19][8]=1; veld[19][10]=1; veld[19][11]=1; veld[19][12]=1; veld[19][16]=1; veld[19][19]=1; veld[19][21]=1; veld[19][22]=1; veld[19][24]=1; veld[20][0]=1; veld[20][2]=1; veld[20][4]=1; veld[20][5]=1; veld[20][6]=1; veld[20][7]=1; veld[20][8]=1; veld[20][10]=1; veld[20][14]=1; veld[20][15]=1; veld[20][16]=1; veld[20][19]=1; veld[20][21]=1; veld[20][24]=1; veld[21][0]=1; veld[21][2]=1; veld[21][4]=1; veld[21][16]=1; veld[21][19]=1; veld[21][21]=1; veld[21][23]=1; veld[21][24]=1; veld[22][0]=1; veld[22][2]=1; veld[22][3]=1; veld[22][4]=1; veld[22][5]=1; veld[22][6]=1; veld[22][7]=1; veld[22][8]=1; veld[22][9]=1; veld[22][11]=1; veld[22][12]=1; veld[22][13]=1; veld[22][14]=1; veld[22][16]=1; veld[22][17]=1; veld[22][18]=1; veld[22][19]=1; veld[22][21]=1; veld[22][24]=1; veld[23][0]=1; veld[23][14]=1; veld[23][22]=1; veld[23][24]=1; veld[24][0]=1; veld[24][1]=1; veld[24][2]=1; veld[24][3]=1; veld[24][4]=1; veld[24][5]=1; veld[24][6]=1; veld[24][7]=1; veld[24][8]=1; veld[24][9]=1; veld[24][10]=1; veld[24][11]=1; veld[24][12]=1; veld[24][13]=1; veld[24][14]=1; veld[24][15]=1; veld[24][16]=1; veld[24][17]=1; veld[24][18]=1; veld[24][19]=1; veld[24][20]=1; veld[24][21]=1; veld[24][22]=1; veld[24][23]=1; veld[24][24]=1;
veld[23][23]=2;
persoon = new Persoon(1*vakgroote,1*vakgroote,vakgroote);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
for(int i=0; i < veld.length ; i++){
for (int j=0; j < veld.length ; j++){
g.setColor(Color.orange);
if(veld[i][j]==0){
g.fillRect(50+vakgroote*i, 50+vakgroote*j ,vakgroote ,vakgroote);
}
if(veld[i][j]==1){
muur.paintIcon( this, g, 50+vakgroote*i, 50+vakgroote*j);
}
if(veld[i][j]==2){
g.setColor(Color.blue);
g.fillRect(50+vakgroote*i, 50+vakgroote*j, vakgroote, vakgroote);
if(i*vakgroote==persoon.getx() && j*vakgroote==persoon.gety()){
gewonnen=true;
}
}
}
}
persoon.teken(g);
if(gewonnen){
g.drawString("U hebt gewonnen.", 400, 30);
}
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_LEFT){
if(!links && !rechts && !up && !down){
links=true;
}
}
if(e.getKeyCode() == KeyEvent.VK_RIGHT){
if(!links && !rechts && !up && !down){
rechts=true;
}
}
if(e.getKeyCode() == KeyEvent.VK_DOWN){
if(!links && !rechts && !up && !down){
down=true;
}
}
if(e.getKeyCode() == KeyEvent.VK_UP){
if(!links && !rechts && !up && !down){
up=true;
}
}
ingedrukt=true;
}
public void keyReleased(KeyEvent e) {
ingedrukt=false;
}
public void keyTyped(KeyEvent e) {}
class TimerHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
if(!gewonnen){
if(links){
if(persoon.xmincontrole(veld)){
links=false;
}
else{
if(linksg<33){
persoon.xmin();
if(linksg==32){
if(!ingedrukt){
links=false;
}
linksg=0;
}
linksg++;
repaint();
}
}
}
if(rechts){
if(persoon.xpluscontrole(veld)){
rechts=false;
}
else{
if(rechtsg<33){
persoon.xplus();
rechtsg++;
if(rechtsg==32){
if(!ingedrukt){
rechts=false;
}
rechtsg = 0;
}
repaint();
}
}
}
if(down){
if(persoon.ypluscontrole(veld)){
down=false;
}
else{
if(downg<33){
persoon.yplus();
downg++;
if(downg==32){
if(!ingedrukt){
down=false;
}
downg=0;
}
repaint();
}
}
}
if(up){
if(persoon.ymincontrole(veld)){
up=false;
}
else{
if(upg<33){
persoon.ymin();
upg++;
if(upg==32){
if(!ingedrukt){
up=false;
}
upg=0;
}
repaint();
}
}
}
}
}
}
}