Misschien dat wat toelichting deze discussie wat duidelijker kan maken.
Het probleemgedeelte van het programma zit als volgt in elkaar:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| - Main
|
|- InterfaceGTP (JFrame)
|
|- menubar (JMenuBar)
|- statusbalk (JPanel)
|- totaalveld (Totaalveld extended op JPanel)
|
|- Paint van alles en nogwat
|
|
Ronde
|
Speelveld
|
|- Foto (JPanel)
|
|- Vakje x ~20 (JPanel) |
InterfaceGTP maakt een instantie van Ronde aan een geeft het object totaalveld als parameter mee. Ronde maakt een instantie van Speelveld aan en geeft totaalveld weer als parameter mee.
Speelveld maakt een instantie van Foto aan en plaatst deze op het totaalveld. (De foto wordt niet lekker getekend)
Ook maakt Speelveld verschillende vakjes aan welke op Foto worden getekend. (Ze zijn echter niet te zien)
Als dit alles klaar is start speelveld een Timer dat de weergave van ieder vakje om te zoveel tijd verandert en weer opnieuw moet tekenen. Dit lukt dus niet.
Hier wat
hoogtedieptepunten uit onze code:
Hier ziet je de constructor en wat methodes van Speelveld.
SetRonde wordt op het begin aangeroepen en SelectNextVakje door de timer die gaat lopen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
| public Speelveld(int aantalspelers, int startSpeler, int startX, int startY, int breedte, int hoogte, Totaalveld veld) {
this.veld = veld;
aantalSpelers = aantalspelers;
a = b = c = d = 0;
spelerAanbeurt = startSpeler;
fotoTijd = 0;
fotoMaxTijd = 0;
startXFoto = (startX + breedte - (horizontaal * breedteHokje)) / 2;
startYFoto = 75;
foto = new Foto(startXFoto,startYFoto);
// De Foto wordt op het Totaalveld getekend
veld.add(foto);
vakjesTimer.start();
display();
}
public void setRonde(int ronde) {
// bla bla
vakje = new Vakje[horizontaal][verticaal];
for(int x = 0; x < horizontaal; x++) {
for(int y = 0; y < verticaal; y++) {
char random = randomChar();
vakje[x][y] = new Vakje(x*breedteHokje+startXFoto,y*breedteHokje+startYFoto, ronde, random);
// Het Vakje wordt op de foto getekend
foto.add(vakje[x][y]);
}
}
vakjesTimer.start();
}
private void selectNextVakje() {
do {
a++;
if(a+1==horizontaal) {
b++;
a = 0;
}
if(b+1==verticaal)
b=0;
}
while(!vakje[a][b].checkKanGeselecteerdWorden());
vakje[c][d].setStatus("normaal");
vakje[a][b].setStatus("geselecteerd");
System.out.println("Vakje: "+c+" en "+d);
c = a;
d = b;
}
public void display() {
Graphics g = veld.getGraphics();
foto.display(g);
if(drawVraag)
vragen.display(g);
for(int x = 0; x < horizontaal; x++) {
for(int y = 0; y < verticaal; y++) {
vakje[x][y].display(g);
}
}
} |
Hier een groot gedeelte van de Vakje-Klasse
De display die hier aangeroepen wordt krijgen we dus niet te zien.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| public class Vakje extends JPanel {
// bla bla
public Vakje(int x, int y, int ronde, char beginLetter) {
this.beginLetter = beginLetter;
this.x = x;
this.y = y;
this.ronde = ronde;
status = "normaal";
// De displayer is en innerclasse, deze kan bij de variable van deze klasse maar doet ander werk (het weergeven van een hokje)
displayer = new vakjeDisplay();
}
// GetChar methode
public void setStatus(String setStatus){
if(!status.equals("speler1")) {
this.status = setStatus;
}
}
public void display(Graphics g){
displayer.paint(g);
}
public boolean checkKanGeselecteerdWorden() {
if(status.equals("normaal"))
return true;
return false;
}
public boolean updateTimer() {
tijd--;
if(tijd == 0) {
tijd=25;
return false;
}
return true;
}
class vakjeDisplay{
public void paint(Graphics g){
if(status.equals("geselecteerd")) {
g.setColor(Color.green);
g.fillRect(x,y,BREEDTE,HOOGTE);
g.setColor(Color.black);
}
if(status.equals("speler1")) {
g.setColor(Color.red);
g.fillRect(x,y,BREEDTE,HOOGTE);
g.setColor(Color.black);
}
g.drawRect(x,y,BREEDTE,HOOGTE);
g.drawString(""+beginLetter, x + 15, y + 15);
// bla bla
}
}
} |
Ik hoop dat iemand hier een flinke fout in ziet zitten