Toon posts:

[Java] Meerdere threads, meerdere methoden..

Pagina: 1
Acties:

Verwijderd

Topicstarter
In een java-progje probeer ik meerdere grafische objecten te laten zien (en bewegen). (dit is btw een spelletje pong).

Nu wil ik voor elk object dat beweegt in het speelveld een aparte thread aanmaken. Dus iedere thread roept een andere methode aan.
Ik heb nu de volgende methoden voor het bewegen van de objecten:
- bal_beweging()
- object_beweging() (hier moeten er dus meerdere van gaan lopen)

Hoe moet ik nou die methoden aanroepen voor de threads :?

Ik heb de volgende threads
code:
1
2
3
4
Thread bal = new Thread(...);
Thread blokje = new Thread(...);
bal.start();
blokje.start();

Wat moet er nou eigenlijk staan op de plaats van die puntjes :?
En wat moet er in de run() komen te staan :?
(en ja, ik heb van alles geprobeerd (Java API, search, etc..) )

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
als je dat wilt zal je een aparte class moeten maken die thread extend of runnable implementeerd. Het lijkt mij alleen makkelijker om gewoon 1 thread te maken die alle objecten langsloopt en 1 voor 1 laat bewegen

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Probeer eens wat de lezen over treads.
Waar jij threads voor wilt gebruiken is fout. Het is namelijk niet gegarandeerd dat alle threads altijd evenveel processorkracht krijgen toebedeeld. De snelheid van het balletje van je pongspelletje is dan bijvoorbeeld afhankelijk van hoeveel andere threads op dat moment nodig hebben. Als je dan bijvoorbeeld twee balletjes hebt, kunnen die (bij dezelfde variabelen) in snelheid verschillen.
Ik zou 1 thread gebruiken voor alle spel-elementen, 1 thread voor de input. (eventueel 1 thread voor andere onzin... ;-)

pseudocode voor je run:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
private spelelement[] items; <- hierin zitten je objecten (pads, balletje, bewegende hindernissen)
syncronized terminate;

... run() {
  while (!terminate) {
    for(int i =0; i< spelelenent.count; i++) {
    Bereken nieuwe positie. en eventuele botsingen. :P
    }
    herteken();
    sleep(1); // dynamisch is beter, maar dat kan altijd nog.
  }
  
}

Localhost, sweet localhost


  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Op donderdag 07 maart 2002 15:40 schreef fawkes het volgende:
In een java-progje probeer ik meerdere grafische objecten te laten zien (en bewegen). (dit is btw een spelletje pong).

Nu wil ik voor elk object dat beweegt in het speelveld een aparte thread aanmaken. Dus iedere thread roept een andere methode aan.
Ik heb nu de volgende methoden voor het bewegen van de objecten:
- bal_beweging()
- object_beweging() (hier moeten er dus meerdere van gaan lopen)

Hoe moet ik nou die methoden aanroepen voor de threads :?

Ik heb de volgende threads
code:
1
2
3
4
Thread bal = new Thread(...);
Thread blokje = new Thread(...);
bal.start();
blokje.start();

Wat moet er nou eigenlijk staan op de plaats van die puntjes :?
En wat moet er in de run() komen te staan :?
(en ja, ik heb van alles geprobeerd (Java API, search, etc..) )
voorbeeldje...
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
public class bal_beweging extends Thread {

  public bal_beweging() {
    // doe wat initialisatie..
    start();
  }

  public void run() {
    // wat je maar moet doen...
  }
}

class jeApp {

  public static void main(String args[]) {
    new jeApp();
  }

  public jeApp() {
    bal_beweging balls[] = bal_beweging[10];
    for (int x=0;x<10;x++) {
    balls[x] = new bal_beweging();
    }
  }
}

zie: http://java.sun.com/docs/books/tutorial/essential/threads/index.html voor meer info