Skip to content

Commit

Permalink
Model toegevoegd, koppeling met bedieningspaneel en scorepaneel
Browse files Browse the repository at this point in the history
  • Loading branch information
jmmeijer committed Feb 23, 2017
1 parent f59173f commit dc13514
Show file tree
Hide file tree
Showing 9 changed files with 397 additions and 70 deletions.
163 changes: 136 additions & 27 deletions EindProject2/src/jesse/AbstracteVorm.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
package jesse;

import java.awt.*;
import java.awt.event.*;
import java.math.*;
import java.util.*;
//import javax.swing.Timer;

public abstract class AbstracteVorm extends Thread implements Vorm {
protected Graphics pen;
protected int breedte, hoogte, x, y, dx, dy;
protected ReactietestView view;
protected ReactietestModel model;
protected int aantalMillisec, breedte, hoogte, x, y, dx, dy, vertraging;
//TODO: make protected
protected double teller;
protected Color kleur, wiskleur;
protected boolean doorgaan;
protected boolean doorgaan, pauze;
//protected javax.swing.Timer timer;

/*
* Standaard constructor
Expand All @@ -15,40 +24,89 @@ protected AbstracteVorm(Graphics g){
x = y = 0;
kleur = Color.BLACK;
wiskleur = Color.LIGHT_GRAY;
aantalMillisec = 20;
doorgaan = true;
pauze = false;

teller = 0;
//timer = new javax.swing.Timer( 100, new TimerHandler() );
}


/*
* constuctor met positie- en kleurparameters
*/
protected AbstracteVorm(Graphics g, int x, int y, int breedte, int hoogte, Color kleur){
protected AbstracteVorm(Graphics g, ReactietestModel model, ReactietestView view, int breedte, int hoogte, Color kleur){
this.pen = g;
this.x = x;
this.y = y;
this.model = model;
this.view = view;
this.breedte = breedte;
this.hoogte = hoogte;
this.kleur = kleur;
wiskleur = Color.LIGHT_GRAY;
//wiskleur = Color.LIGHT_GRAY;
wiskleur = view.getBackground();
aantalMillisec = 20;
doorgaan = true;
dx = 3;
dy = 2;
pauze = false;

//willekeurige startpositie bepalen
x = getRandomInRange(0,view.getWidth()-breedte);
y = getRandomInRange(0,view.getHeight()-hoogte);

//willekeurige snelheid en richting
dx = getRandomInRange(-aantalMillisec,aantalMillisec);
dy = getRandomInRange(-aantalMillisec,aantalMillisec);

// willekeurig getal voor vertraging tussen 0 en 10 sec
vertraging = new Random().nextInt(10000);

teller = 0;
//timer = new javax.swing.Timer( 100, new TimerHandler() );
}

public void run(){
pen.translate(dx, dy);
pen.setColor(kleur);
pen.setXORMode(wiskleur);
while(doorgaan){
teken();
slaap(20);
teken();
verplaats();
}
}
protected int getRandomInRange(int min, int max){
return new Random().nextInt(max + 1 -min) + min;
}
/*
* Onnodig door format optie op de label
private static double round(double getal, int decimalen) {
// aantal decimalen mag niet minder dan 0 zijn
if (decimalen < 0) throw new IllegalArgumentException();
BigDecimal bd = new BigDecimal(getal);
bd = bd.setScale(decimalen, RoundingMode.HALF_UP);
return bd.doubleValue();
}
*/
public double getTeller(){

//double test = round(teller, 2);

return teller;
}

public void nuStoppen(){
doorgaan = false;
public void run(){

slaap(vertraging);

pen.translate(dx, dy);
pen.setColor(kleur);
pen.setXORMode(wiskleur);
//timer.start();

while(doorgaan){
//TODO: is dit de juiste plaats voor de teller?
// Teller dynamisch berekend op basis van verversing per aantal milliseconden.
teller += (double) aantalMillisec / 1000;
//System.out.println(teller);
//pen.setColor(kleur);
teken();
//TODO: vanuit hier naar model sturen?
slaap(aantalMillisec);
//pen.setColor(wiskleur);
teken();
verplaats();
}
}

/*
Expand All @@ -57,25 +115,76 @@ public void nuStoppen(){
*/
//public abstract void teken(Graphics g);

// TODO: abstract met graphics of met kleur
// TODO: abstracte functie met graphics of met kleur
public abstract void teken();

public void nuStoppen(){
doorgaan = false;
//timer.stop();
teller = 0.0;
}

public void pauzeer(){
pauze = true;
}

public synchronized void pauzeVoorbij(){
pauze = false;
notify();
}

public synchronized void controleerPauze() throws InterruptedException {
while( pauze ){
wait();
}
}

//TODO:Dynamisch randen uitlezen
public void verplaats() {
if( x + dx <= 0 || x + dx + breedte >= 700 ) {

//System.out.println( "" + x + " + " + dx + " <= " + view.getWidth() );

if( x + dx <= 0 ) {
/*
x = 0;
int correctie = (int) x + dx;
System.out.println( "" + correctie );
x += correctie;
*/
dx = -dx;
}
else if( x + dx + breedte >= view.getWidth() ) {
x = view.getWidth() - breedte;
dx = -dx;
}
if( y + dy <= 0 || y + dy + hoogte >= 500 ) {
// TODO: correctie van niet afgeledge baan.
x += dx;
if( y + dy <= 0 ) {
//y = 0;
dy = -dy;
}
x += dx; y += dy;
else if( y + dy + hoogte >= view.getHeight() ) {
y = view.getHeight() - hoogte;
dy = -dy;
}
y += dy;
}

public void slaap(int millisec){
try{
Thread.sleep(millisec);
controleerPauze();
}
catch(InterruptedException e){

}
catch(InterruptedException e){}
}

/*
class TimerHandler implements ActionListener {
public void actionPerformed(ActionEvent e){
teller =+ 0.01;
}
}
*/
}
31 changes: 23 additions & 8 deletions EindProject2/src/jesse/BedieningsPaneel.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,20 @@
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.border.Border;

public class BedieningsPaneel extends JPanel {
private ReactietestModel model;
private ReactietestView view;
private JButton startKnop, stopKnop, circelKnop, driehoekKnop, vierkantKnop, rechthoekKnop;

public BedieningsPaneel(ReactietestModel model,ReactietestView view){
public BedieningsPaneel(ReactietestModel model, ReactietestView view){

this.model = model;
this.view = view;

Border border = BorderFactory.createEmptyBorder(10,10,10,10);
setBorder(border);

startKnop = new JButton("Start");
stopKnop = new JButton("Stop");
Expand Down Expand Up @@ -63,7 +66,6 @@ public void start(){
startKnop.setEnabled(false);
startKnop.setVisible(false);


circelKnop.setBackground(Color.RED);
driehoekKnop.setBackground(Color.GREEN);
vierkantKnop.setBackground(Color.YELLOW);
Expand Down Expand Up @@ -100,6 +102,8 @@ public void stop(){
view.stop();
}



//inwendige actionhandler klasse
class Handler implements ActionListener {

Expand All @@ -109,17 +113,28 @@ public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();

switch (command) {
case "start": start();
case "start":
start();
break;
case "stop": stop();
case "stop":
stop();
break;
case "circel":
case "circel":
view.stopCircel();
view.startCircel();
// Check vorm actief: goed? score en verwijder
break;
case "driehoek":
case "driehoek":
view.stopDriehoek();
view.startDriehoek();
break;
case "vierkant":
case "vierkant":
view.stopVierkant();
view.startVierkant();
break;
case "rechthoek":
case "rechthoek":
view.stopRechthoek();
view.startRechthoek();
break;
default:
break;
Expand Down
5 changes: 3 additions & 2 deletions EindProject2/src/jesse/Circel.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,16 @@ public class Circel extends AbstracteVorm implements Vorm {

private int diameter;

public Circel(Graphics g, int x, int y, int diameter, Color kleur){
super(g,x,y,diameter,diameter,kleur);
public Circel(Graphics g, ReactietestModel model, ReactietestView view, int diameter, Color kleur){
super(g,model,view,diameter,diameter,kleur);
this.diameter = diameter;
}

@Override
public void teken() {
pen.setClip(x, y, breedte, hoogte);
pen.fillOval( x, y, diameter, diameter );
pen.drawString("circel: " + this.getTeller(),20,20);
}

}
4 changes: 2 additions & 2 deletions EindProject2/src/jesse/Driehoek.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ public class Driehoek extends AbstracteVorm implements Vorm {

private int[] xPoints, yPoints;

public Driehoek(Graphics g, int x, int y, int breedte, int hoogte, Color kleur){
super(g,x,y,breedte,hoogte,kleur);
public Driehoek(Graphics g, ReactietestModel model, ReactietestView view, int breedte, int hoogte, Color kleur){
super(g,model,view,breedte,hoogte,kleur);


}
Expand Down
12 changes: 8 additions & 4 deletions EindProject2/src/jesse/Paneel.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,26 @@ public class Paneel extends JPanel {

private ReactietestModel model;
private ReactietestView view;
private JPanel scorePaneel, bedieningsPaneel;
private ScorePaneel scorePaneel;
private JPanel bedieningsPaneel;

public Paneel(){

setLayout( new BorderLayout() );

model = new ReactietestModel();

scorePaneel = new ScorePaneel( model );
//scorePaneel.setPreferredSize(new Dimension(800, 50));

view = new ReactietestView( model );
view.setPreferredSize(new Dimension(800, 600));
view.setMinimumSize(new Dimension(800, 600));

bedieningsPaneel = new BedieningsPaneel( model, view );

// TODO: Moet ook bedieningspaneel meekrijgen?
scorePaneel = new ScorePaneel( model, view );
//scorePaneel.setPreferredSize(new Dimension(800, 50));
scorePaneel.begin();

add(view, BorderLayout.CENTER);
add(scorePaneel, BorderLayout.LINE_END);
add(bedieningsPaneel, BorderLayout.PAGE_END);
Expand Down
Loading

0 comments on commit dc13514

Please # to comment.