moorhuhn clon prob

Status
Nicht offen für weitere Antworten.

SebiB90

Top Contributor
ich mach ein moorhuhn spiel mit weihnachtsmännern und hab da ein prob
ich hab eine klasse für die weihnachtsmänner die über den bildschirm fliegen und eine hauptklasse.
in der hauptklasse wird ein thread gestartet der dann zufällig weihnachtsmänner erstellt und die immer bewegen mit move und paint. nur wie soll ich die zwischen und speichern und wie kann ich die zufällig erstellen?
 

SebiB90

Top Contributor
in einer endlos schleife(thread) will ich die weihnachtsmänner bewegen dazu muss ich aber jede instanc von denen speichern aber wie?
für jede instance ne neue variable? wie soll ich dann alle durch gehen können um die zu bewegen?
 

SebiB90

Top Contributor
für jeden einen eigenen thread?
verbraucht das nicht zu viel ressourcen?

ich kann´s mal versuchen
 

Wildcard

Top Contributor
Die müssen sich ja nicht jede nanosekunde bewegen, also einfach schlafen legen.
Ich finds besser als beliebig viele Objekte in der Hauptklasse zu bewegen.
 

SebiB90

Top Contributor
dann mach ich das so

und mit demzufällig erstellen
wär das so am besten?
Code:
while(true) {
  if(new Random().nextBoolean()) {
    new Santa();
  }
}
 

Reality

Top Contributor
Man muss dazu doch nicht mehrere Threads machen!
Man sagt einfach in einem Thread: x1 += 2; x2 += 4; usw. Danach neu zeichnen.

Liebe Grüße
Reality
 

Reality

Top Contributor
Code:
//globale Variablen

int x1 = 12; // Erster Wheinachtsmann
int y1 = 40;

int x2 = 37; // Zweiter Wheinachtsmann
int y2 = 48;
//usw.

public void run(){
  //do something;
  x1 += 2;
  x2 += 2;

  repaint();
}

public static void paint(Graphics g){
  g.drawImage(x1, y1, img, this);
  g.drawImage(x2, y2, img2, this);
}

So bewegst du die Wheinachtsmänner gleichzeitig mit nur einem Thread.

Liebe Grüße
Reality
 

Jockel

Top Contributor
Er meint damit, dass du alle Figuren im selben Thread auf einmal aktualisierst und nicht für jede Figur einen eigenen Thread hast... x1, x2, etc. in Realitys Code stellen nur die Positionen der verschiedenen Figuren da.

[edit]
hm... zu langsam...
 

Illuvatar

Top Contributor
Außerdem würde es sich anbieten eine Klasse für die Weihnachtsmänner zu machen, und dieWeihnachtsmänner in einer Collection wie einem Vector zu speichern.
 

SebiB90

Top Contributor
ich hab ne extra klasse für die weinachtsmänner
dann nehm ich collection oder ist ein array schneller?
 

Reality

Top Contributor
Wenn du weisst wieviele Wheinachtsmänner du haben willst, dann nimm ein Array. Ist schneller und braucht weniger Resourcen.

Liebe Grüße
Reality
 
R

Roar

Gast
nein, nicht viel. außerdem was machst du wenn du mal mehr weihnachtsmänner haben willst? array vergörßern? anderne code anpassen?
@real: da fehlt aber noch ein sleep, hm? :-D
 

SebiB90

Top Contributor
werden hier bei die objecte kopiert oder referenziert?
Code:
for(Enumeration e=santas.elements();e.hasMoreElements();) {
  Santa santa=(Santa)e.nextElement();
  if(santa.isOut()) {
    santas.remove(santas.indexOf(santa));
  }else {
    santa.move();
  }
}
 
B

Beni

Gast
In Java werden Objekte immer referenziert. (Nur die Methode clone kann Objekte kopieren).

Aber dein Code dürfte so nicht funktionieren, du kannst doch die Liste nicht ändern, während eine Enumeration darüber läuft (bzw, du wirst einige Santa's überspringen)?
 
B

bygones

Gast
geh mit einem Iterator über die Collection. Der Iterator hat die Methode remove... wenn du ansonsten direkt über die Collection sie manipulierst wird eine ConcurrentModificationException geworfen
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben