Vraag: Ik teken in 4 threads steeds een toren en een muur (1 toren en 1 muur van de speler en 1 toren en 1 muur van de tegestander (speler Of computer).
Mijn probleem is dat bij 3 van deze threads de plaatjes van de ene stand naar de andere springen (van beginstand direct naar de eindstand) ik wil graag dat deze 3 het net als de eerste in stapjes naar het eindpunt gaat. (moet dus lijken of hij schuift). Volgens mij heb ik de laatste 3 hetzelfde geprogrammeerd als de eerste maar de laatste 3 doen dus niet de tussenstapjes.
heeft iemand enig idee waardoor dit komt (heeft waarschijnlijk iets te maken met JPanel of paintComponent(Graphics g) maar weet het niet zeker.
Hieronder volgt de code.
Deze werkt wel!!!!
en deze werken niet
heb ook in het volgende topic gekeken maar daar kon ik het antwoord ook niet echt vinden. Dit probleem lijkt wel heel erg op de mijne maar ik teken dus een JPanel in plaats van een label
[topic=511311/1/25]
Mijn probleem is dat bij 3 van deze threads de plaatjes van de ene stand naar de andere springen (van beginstand direct naar de eindstand) ik wil graag dat deze 3 het net als de eerste in stapjes naar het eindpunt gaat. (moet dus lijken of hij schuift). Volgens mij heb ik de laatste 3 hetzelfde geprogrammeerd als de eerste maar de laatste 3 doen dus niet de tussenstapjes.
heeft iemand enig idee waardoor dit komt (heeft waarschijnlijk iets te maken met JPanel of paintComponent(Graphics g) maar weet het niet zeker.
Hieronder volgt de code.
Deze werkt wel!!!!
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
| package arcomage;
import javax.swing.*;
public class TowerThread extends Thread implements Runnable
{
CardPanel tower;
JLayeredPane BT;
Arcomage eenPotjeArcomage;
int Tower = 30;
private final Integer TOWERLAYER = new Integer(-4);
public TowerThread(CardPanel tower, JLayeredPane BT, Arcomage eenPotjeArcomage)
{
this.tower = tower;
this.eenPotjeArcomage = eenPotjeArcomage;
this.BT = BT;
}
public void run()
{
while(true){
drawTower();}
}
public void drawTower()
{
int a = eenPotjeArcomage.getTower(); // hoe hoog de toren/muur moet worden getekend
if(a>=100)
a=105;
//if(tower !=null)
try{
BT.remove(tower);
}
catch(ArrayIndexOutOfBoundsException e){System.out.print(e.toString());}
tower.setBounds(140,185-Tower,46,131);
try{
BT.add(tower,TOWERLAYER);
}
catch(ArrayIndexOutOfBoundsException e){System.out.print(e.toString());}
if(Tower < a)
Tower++;
else if(Tower > a)
Tower--;
try{
Thread.sleep(1000);
}catch(InterruptedException e){}
}
} |
en deze werken niet
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
| import javax.swing.*;
public class ETowerThread extends Thread implements Runnable
{
CardPanel eTower;
JLayeredPane BT;
Arcomage eenPotjeArcomage;
int currentHeight = 30;
private final Integer TOWERLAYER = new Integer(-4);
public ETowerThread(CardPanel eTower, JLayeredPane BT, Arcomage eenPotjeArcomage)
{
this.eenPotjeArcomage = eenPotjeArcomage;
this.BT = BT;
this.eTower = eTower;
}
public void run()
{
while(true)
{ drawETower();}
}
public void drawETower()
{
int a = eenPotjeArcomage.getETower();
if(a>=100)
a=105;
//if(eTower != null)
try{
BT.remove(eTower);
}
catch(ArrayIndexOutOfBoundsException e){}
eTower.setBounds(440,185-a,85,131);
try{
BT.add(eTower, TOWERLAYER);
}
catch(ArrayIndexOutOfBoundsException e){System.out.print(e.toString());}
if(currentHeight < a)
currentHeight++;
else if(currentHeight > a)
currentHeight--;
try{
Thread.sleep(1000);
}catch(InterruptedException e){}
}
} |
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
| import javax.swing.*;
public class WallThread extends Thread implements Runnable
{
CardPanel wall;
JLayeredPane BT;
Arcomage eenPotjeArcomage;
int Wall = 15;
private final Integer TOWERLAYER = new Integer(-4);
public WallThread(CardPanel wall, JLayeredPane BT, Arcomage eenPotjeArcomage)
{
this.wall =wall;
this.BT = BT;
this.eenPotjeArcomage = eenPotjeArcomage;
}
public void run()
{
while(true)
{drawWall();}
}
public void drawWall()
{
int a = eenPotjeArcomage.getWall();
if(a>100)
a=100;
//if(wall != null)
try{
BT.remove(wall);
}
catch(ArrayIndexOutOfBoundsException e){}
wall.setBounds(190,210-a,22,111);
try{
BT.add(wall,TOWERLAYER);
}
catch(ArrayIndexOutOfBoundsException e){System.out.print(e.toString());}
if(Wall < a)
Wall++;
else if(Wall > a)
Wall--;
try{
Thread.sleep(1000);
}catch(InterruptedException e){}
}
} |
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
| import javax.swing.*;
public class EWallThread extends Thread implements Runnable
{
CardPanel eWall;
JLayeredPane BT;
Arcomage eenPotjeArcomage;
int EWall = 15;
private final Integer TOWERLAYER = new Integer(-4);
public EWallThread(CardPanel eWall, JLayeredPane BT, Arcomage eenPotjeArcomage)
{
this.eWall = eWall;
this.eenPotjeArcomage = eenPotjeArcomage;
this.BT = BT;
}
public void run()
{
while(true)
{drawEWall();}
}
public void drawEWall()
{
int a = eenPotjeArcomage.getEWall();
if(a>100)
a=100;
//if(eWall != null)
try{
BT.remove(eWall);
}
catch(ArrayIndexOutOfBoundsException e){}
eWall.setBounds(450,210-a,22,111);
try{
BT.add(eWall,TOWERLAYER);
}
catch(ArrayIndexOutOfBoundsException e){System.out.println(e.toString());}
if(EWall < a)
EWall++;
else if(EWall > a)
EWall--;
try{
Thread.sleep(1000);
}catch(InterruptedException e){}
}
} |
heb ook in het volgende topic gekeken maar daar kon ik het antwoord ook niet echt vinden. Dit probleem lijkt wel heel erg op de mijne maar ik teken dus een JPanel in plaats van een label
[topic=511311/1/25]