hoi, in onderstaande code staat dus ergens een fout, het is dus een deel van het spelletje breakout of arkanoid. Er zou fout moeten verschijnen als het balletje de peddel mist maar hij toont altijd fout, of het balletje de peddel nu raakt of niet. Volgens mij ligt de fout bij de code in methode controlleerPeddel() maar heb al verschillende dingen geprobeerd, hij geeft altijd hetzelfde
import javax.swing.*;
public class Bal implements Runnable{
private Class image;
private JLabel balLabel;
private int x,y;
private boolean lOmhoog, rOmhoog, lOmlaag, rOmlaag;
private JFrame frame;
private Thread thread;
private int xPeddel;
private int breedte;
private int hoogte;
//constructor
public Bal(JFrame frame,int xPeddel){
image = this.getClass();
ImageIcon balleke = new ImageIcon(image.getResource("bal.gif"));
balLabel = new JLabel(balleke);
this.x = 200;
this.y = 300;
this.breedte = 23;
this.hoogte = 24;
balLabel.setBounds(x,y,breedte,hoogte);
frame.getContentPane().add(balLabel);
lOmhoog = false;
rOmhoog = false;
lOmlaag = false;
rOmlaag = true;
this.frame = frame;
thread = new Thread(this);
thread.setDaemon(true);//bij sluiten programma en dus hoofdtread sluiten de subtreads ook
thread.start();
}
// de getters
public int getX() { return this.x = x; }
public int getY() { return this.y = y; }
public boolean getLOmhoog() { return this.lOmhoog = lOmhoog; }
public boolean getLOmlaag (){ return this.lOmlaag = lOmlaag; }
public boolean getROmhoog() { return this.rOmhoog = rOmhoog; }
public boolean getROmlaag (){ return this.rOmlaag = rOmlaag; }
public int getBreedte(){return this.breedte = breedte;}
public int getHoogte(){return this.hoogte = hoogte; }
public void run(){
try{
while(true)
{
controlleer();
Thread.sleep(10);
}
}
catch(Exception e){
System.out.println("fout in Bal");
}
}
public void controlleer(){
if(x<0 && lOmhoog) rechtsomhoog();
else if (x<0 && lOmlaag) rechtsomlaag();
else if (x+30 > frame.getWidth() && rOmhoog) linksomhoog();
else if (x+30 > frame.getWidth() && rOmlaag) linksomlaag();
else if (y<0 && lOmhoog) linksomlaag();
else if (y<0 && rOmhoog) rechtsomlaag();
else if (y > frame.getHeight()-100 && rOmlaag) controlleerPeddel();
else if (y > frame.getHeight()-100 && lOmlaag) controlleerPeddel();
else
{
if (lOmhoog) linksomhoog();
else if (lOmlaag) linksomlaag();
else if (rOmhoog) rechtsomhoog();
else if (rOmlaag) rechtsomlaag();
}
balLabel.setLocation(x,y);
}
public void controlleerPeddel(){
if (x+30 > xPeddel && x-30 < xPeddel+60 &&rOmlaag) rechtsomhoog();
else if (x+30+ y > y && y+10 > y- 30 && lOmlaag) linksomhoog();
else System.out.println("dood");
}
public void linksomhoog(){
x--;
y--;
valseMaken();
lOmhoog = true;
}
public void rechtsomhoog(){
x++;
y--;
valseMaken();
rOmhoog = true;
}
public void linksomlaag(){
x--;
y++;
valseMaken();
lOmlaag = true;
}
public void rechtsomlaag(){
x++;
y++;
valseMaken();
rOmlaag = true;
}
private void valseMaken(){
rOmhoog = false;
rOmlaag = false;
lOmhoog = false;
lOmlaag = false;
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Peddel implements KeyListener, Runnable{
private Class image;
private JLabel peddelLabel;
private int x= 5;
private int y;
private JFrame frame;
private Thread thread;
//constructor
public Peddel(JFrame frame){
image = this.getClass();
ImageIcon peddelke = new ImageIcon(image.getResource("peddel.gif"));
peddelLabel = new JLabel(peddelke);
this.x = x;
this.y = 430;
frame.getContentPane().add(peddelLabel);
this.frame = frame;
thread = new Thread(this);
thread.setDaemon(true);//bij sluiten programma en dus hoofdtread sluiten de subtreads ook
thread.start();
peddelLabel.addKeyListener(this);
peddelLabel.requestFocus();
}
public void run(){
try{
while(true)
{
//controlleer();
Thread.sleep(10);
peddelLabel.setBounds(x,y,60,10);
peddelLabel.requestFocus();
}
}
catch(Exception e){
System.out.println("fout in Peddel");
}
}
//de getters
public int getX(){ return this.x = x; }
public int getY() { return this.y = y; }
//de setters
public int setX(int nieuweX){return this.x = nieuweX; }
public int setY(int nieuweY){return this.y = nieuweY; }
public void keyTyped(KeyEvent e){ }
public void keyPressed(KeyEvent e){
switch(e.getKeyCode()){
case(KeyEvent.VK_LEFT) :
if(x < 0)
x = 0;
if (x > 400)
x = 400;
this.x = x-20;break;
/*case(KeyEvent.VK_P):
pauze=!pauze;
break;*/
case(KeyEvent.VK_RIGHT):
if(x < 0)
x = 80;
if (x > 430)
x = 430;
this.x = x +20;
break;
}
}
public void keyReleased(KeyEvent e){}
}
import javax.swing.*;
public class Bal implements Runnable{
private Class image;
private JLabel balLabel;
private int x,y;
private boolean lOmhoog, rOmhoog, lOmlaag, rOmlaag;
private JFrame frame;
private Thread thread;
private int xPeddel;
private int breedte;
private int hoogte;
//constructor
public Bal(JFrame frame,int xPeddel){
image = this.getClass();
ImageIcon balleke = new ImageIcon(image.getResource("bal.gif"));
balLabel = new JLabel(balleke);
this.x = 200;
this.y = 300;
this.breedte = 23;
this.hoogte = 24;
balLabel.setBounds(x,y,breedte,hoogte);
frame.getContentPane().add(balLabel);
lOmhoog = false;
rOmhoog = false;
lOmlaag = false;
rOmlaag = true;
this.frame = frame;
thread = new Thread(this);
thread.setDaemon(true);//bij sluiten programma en dus hoofdtread sluiten de subtreads ook
thread.start();
}
// de getters
public int getX() { return this.x = x; }
public int getY() { return this.y = y; }
public boolean getLOmhoog() { return this.lOmhoog = lOmhoog; }
public boolean getLOmlaag (){ return this.lOmlaag = lOmlaag; }
public boolean getROmhoog() { return this.rOmhoog = rOmhoog; }
public boolean getROmlaag (){ return this.rOmlaag = rOmlaag; }
public int getBreedte(){return this.breedte = breedte;}
public int getHoogte(){return this.hoogte = hoogte; }
public void run(){
try{
while(true)
{
controlleer();
Thread.sleep(10);
}
}
catch(Exception e){
System.out.println("fout in Bal");
}
}
public void controlleer(){
if(x<0 && lOmhoog) rechtsomhoog();
else if (x<0 && lOmlaag) rechtsomlaag();
else if (x+30 > frame.getWidth() && rOmhoog) linksomhoog();
else if (x+30 > frame.getWidth() && rOmlaag) linksomlaag();
else if (y<0 && lOmhoog) linksomlaag();
else if (y<0 && rOmhoog) rechtsomlaag();
else if (y > frame.getHeight()-100 && rOmlaag) controlleerPeddel();
else if (y > frame.getHeight()-100 && lOmlaag) controlleerPeddel();
else
{
if (lOmhoog) linksomhoog();
else if (lOmlaag) linksomlaag();
else if (rOmhoog) rechtsomhoog();
else if (rOmlaag) rechtsomlaag();
}
balLabel.setLocation(x,y);
}
public void controlleerPeddel(){
if (x+30 > xPeddel && x-30 < xPeddel+60 &&rOmlaag) rechtsomhoog();
else if (x+30+ y > y && y+10 > y- 30 && lOmlaag) linksomhoog();
else System.out.println("dood");
}
public void linksomhoog(){
x--;
y--;
valseMaken();
lOmhoog = true;
}
public void rechtsomhoog(){
x++;
y--;
valseMaken();
rOmhoog = true;
}
public void linksomlaag(){
x--;
y++;
valseMaken();
lOmlaag = true;
}
public void rechtsomlaag(){
x++;
y++;
valseMaken();
rOmlaag = true;
}
private void valseMaken(){
rOmhoog = false;
rOmlaag = false;
lOmhoog = false;
lOmlaag = false;
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Peddel implements KeyListener, Runnable{
private Class image;
private JLabel peddelLabel;
private int x= 5;
private int y;
private JFrame frame;
private Thread thread;
//constructor
public Peddel(JFrame frame){
image = this.getClass();
ImageIcon peddelke = new ImageIcon(image.getResource("peddel.gif"));
peddelLabel = new JLabel(peddelke);
this.x = x;
this.y = 430;
frame.getContentPane().add(peddelLabel);
this.frame = frame;
thread = new Thread(this);
thread.setDaemon(true);//bij sluiten programma en dus hoofdtread sluiten de subtreads ook
thread.start();
peddelLabel.addKeyListener(this);
peddelLabel.requestFocus();
}
public void run(){
try{
while(true)
{
//controlleer();
Thread.sleep(10);
peddelLabel.setBounds(x,y,60,10);
peddelLabel.requestFocus();
}
}
catch(Exception e){
System.out.println("fout in Peddel");
}
}
//de getters
public int getX(){ return this.x = x; }
public int getY() { return this.y = y; }
//de setters
public int setX(int nieuweX){return this.x = nieuweX; }
public int setY(int nieuweY){return this.y = nieuweY; }
public void keyTyped(KeyEvent e){ }
public void keyPressed(KeyEvent e){
switch(e.getKeyCode()){
case(KeyEvent.VK_LEFT) :
if(x < 0)
x = 0;
if (x > 400)
x = 400;
this.x = x-20;break;
/*case(KeyEvent.VK_P):
pauze=!pauze;
break;*/
case(KeyEvent.VK_RIGHT):
if(x < 0)
x = 80;
if (x > 430)
x = 430;
this.x = x +20;
break;
}
}
public void keyReleased(KeyEvent e){}
}