KeyPressed

Anto

Aktives Mitglied
Aber gut, mal ein Versuch:

In meier Controllerklasse stehen in Keypressed und KeyTyped jeweils switch cases, die den Keycode ans Model weitergeben.

Im Model stehen 2 Methoden, die je nach Keycode bzw. je nachdem, von wem sie aufgerufen werden, die Booleans in den beiden Spielerobjekten neu setzen.

Das funktioniert auch soweit, wenn ich meinen Printbefehlen glauben darf.

Am Ende dieser Methode steht jeweils noch setChanged(); und notifyObservers();

Naja und meine neue Klasse, die Runnable implementiert, bekommt ein Model übergeben.
in run steht in etwa:

while(mod.isSet())

{if (spieler1bool == true){spieler1.gehehoch();}
if (spieler2bool == true){spieler2.gehehoch();}

.
.
.
.
.

: mod.benachrichtige();



}


wobei in benachrichtige nur drinsteht setChanged und notify Observers.



ach bevor ich es vergesse:

Im Controller steht noch (also im Konstruktor davon):

X x = new X (m);
new Thread(x).start();
 

Sunchezz

Bekanntes Mitglied
Und es passiert nichts??

Ich schätze dann kommst du langsam nicht drum rum mal wirklichen Quelltext zu zeigen!
Du kannst auch gerne jede Zeile beschreiben wie ebend, aber ich glaube das wird sich hier keiner antun!


Und bitte JavaTags benutzen.
 

Anto

Aktives Mitglied
Nein es passiert nichts.

Und so lebensmüde werde ich sicher nicht sein, es sind schon so viele rausgeflogen weil ihre Sachen im Netz aufgetaucht sind....ein Patzer, und man fliegt aus der Veranstaltung!
 

Sunchezz

Bekanntes Mitglied
Ich verstehe grade das Problem nicht...
Du hast nen Quellcode geklaut und willst den nicht veröfftlichen damits keiner merkt???
Oder was ist hier los?


Also ich kann dir grad jedenfalls nich weiterhelfen ohne Quellcode, da ich absolut nich mehr durchsehe bei deinen Aussagen!
Ich hoffe die anderen sehen mehr durch und können dir noch helfen -.-
 

Sunchezz

Bekanntes Mitglied
Darf ich fragen wer dir das verbietet?


Auf jeden Fall ist so eine Hilfe relativ unmöglich, wenn das nich noch ne Woche so weitergehen soll -.-
 

Anto

Aktives Mitglied
Der Veranstalter! Es steht ganz klar in den Bedingungen, dass jeder, der seinen Code in irgendeiner Form zugänglich macht (auch online) fliegt.
Es sind auch schon welche geflogen deswegen.

Im Moment läuft das ganze sogar (theoretisch) nur dass meine Figuren viel zu schnell sind.

Gibt es eine Möglichkeit, die langsamer zu machen?
 

Anto

Aktives Mitglied
Habe ich . Aber ich sehe ein, das geht wirklich nicht mehr ohne Code:

bei 1000 und 500 millisekunden geht es, läuft aber sehr lahm, bei allem anderen gibt es keine Bewegung.
 

Sunchezz

Bekanntes Mitglied
this.sleep(millisekunden)

Ich hoffe du rufst das innerhalb deiner run() auf!!


Java:
public void run() {
  while(..) {
   ....boolean überprüfung
   ....positionen setzen
   this.sleep(10);
  }
}

nicht außerhalb...
 

Sunchezz

Bekanntes Mitglied
Ich korrigiere, das würde nur funktionieren wenn du direkt Klasse von Thread erben lassen würdest, doch du implementierst ja nur Runnable.

ändere:
Java:
this.sleep(10);

in:

Java:
Thread.sleep(10);
 

Anto

Aktives Mitglied
Es hat jetzt funktioniert....mal interessehalber, wieso funktioniert das Aufrufen der startmethode eigentlich nur im Konstruktor?


Danke für die Hilfe

Grüße

Anto
 

Sunchezz

Bekanntes Mitglied
Ist jetzt nur ne Vermutun, da ich deinen Code nich kenne...
aber ich vermute das du den Thread auch nur lokal im Konstruktor implementiert hast.

Würdest du ihn als Klassen-Feld/Attribut/Variable (weiß ja nicht unter was du es kennst) implementieren, könntest du aus der ganzen Klasse und mit zusätzlichen Gettern auch aus anderen Klassen darauf zugreifen!
 

Anto

Aktives Mitglied
Hab ich versucht....das Objekt der neuen Klasse initialisieren geht, die Startmethode aufrufen geht nicht.

Ist auch mehr akademisch, da es ja jetzt funktioniert....von daher....
 

Sunchezz

Bekanntes Mitglied
Erbt deine neue Klasse von Thread?

oder erstellst du deine neue Klasse so: ?

Java:
DeineNeueKlasse dnk = new DeineNeueKlasse();
new Thread(dnk).start();

oder vielleicht:
Java:
Thread t = new Thread(new deineNeueKlasse());
t.start();

Weil in diesen beiden fällen ist klar das du woanders mit:
Java:
deineKlasse.start();
nicht weit kommst!
Denn dann erbt deine Klasse nicht von Thread, sondern implementiert nur Runnable.
Diese sieht die Methode start() nicht vor!
 

Ähnliche Java Themen


Oben