Toon posts:

[java]Muurtje bouwen

Pagina: 1
Acties:

Verwijderd

Topicstarter
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
import java.awt.*;
import java.applet.Applet;

public class Muur extends Applet {
    int positieX, positieY, baksteen;
    int schuif = 1;
    
    public void paint(Graphics m) {
      do {
        m.setColor(Color.cyan);
        m.fillRect(positieX, positieY, 50, 20);
        positieX = positieX + 55;
        baksteen ++;
        if(baksteen == 5) {
            positieX = 0;
            positieY = positieY + 25;
            baksteen = 0;
            if(schuif == 1){
              positieX = positieX + 25;
              schuif = 0;
            }
            if(schuif == 0) {
              positieX = 0;
              schuif = 1;
            }
        }
      } while(positieY < 160);
      
    }
}

de bedoeling is dat er een muurtje wordt gebouwd, zo:
code:
1
2
3
x x x x x
 x x x x x
x x x x x

etcetc.

maar dit krijgen we:
code:
1
2
3
x x x x x
x x x x x
x x x x x

Iemand enig idee waarom deze het niet zou doen?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

een missende else
code:
 if(schuif == 1){
                    positieX = positieX + 25;
                    schuif = 0;
                }
ELSE                if(schuif == 0) {
                    positieX = 0;
                    schuif = 1;
                }
en je mag zelfs het 2 if statement laten vervangen door de else. En gebruik geen integers als je booleans wilt. Code is trouwens erg onduidelijk: magic number (50,20,55,5), niet echt handig gekozen variable namen: baksteen ipv baksteenIndex.

Verwijderd

Topicstarter
Ah, nu doet hij het wel, dankjewel!

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

je kunt ook het volgende doen..
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
for(int baksteenIndex=0; baksteenIndex<aantalBakstenen; baksteenIndex++)
{
   int xBaksteen = baksteenIndex % AANTAL_HORIZONTAAL;
   int yBaksteen = baksteenIndex / AANTAL_HORIZONTAAL;
   
   if( yBakSteen % 2==1)
      positieX = xBaksteen*BAKSTEEN_BREEDTE;
   else
      positieX = xBaksteen*BAKSTEEN_BREEDTE+HOR_INSPRING;
  
   positieY = (k / AANTAL_HORIZONTAL)*BAKSTEEN_HOOGTE;
   ... de rest
}