2 Tastatureingaben gleichzeitig verarbeiten

Sorry, aber ich komm nicht mit :confused:

Hier mein Programm soweit ich das jetzt verstanden habe:

Code:
import java.applet.*;
import java.awt.*;
import java.awt.Graphics;
import java.awt.Image;
import java.applet.Applet;
import java.awt.event.*;



  public class Rechtecke extends Applet implements Runnable, KeyListener, Controlable {

    int x1=20;
    int x2=60;
    int y1=40;
    int y2=80;
    boolean pfd, pfu, w, s;
    
    public void init(){
      setBackground (Color.WHITE);
      addKeyListener(this);
    }
    public void start (){
      Thread th = new Thread (this);
      th.start();
      new Thread(new GameLoop(this)).start();
    }
    public void run (){

    }
    public void paint (Graphics g){
      g.setColor(Color.red);
      g.drawRect(x1,y1,20,20);
      g.drawRect(x2,y2,20,20);
    }
    public void keyPressed(KeyEvent e) {
      if (e.getKeyCode() == 40) pfd = true; //y1 = y1+10;
      if (e.getKeyCode() == 38) pfu = true; //y1 = y1-10;
      if (e.getKeyCode() == 83)s = true;   //y2 = y2+10;
      if (e.getKeyCode() == 87)w = true;   //y2 = y2-10;
    }
    public void keyTyped(KeyEvent e) { }
    public void keyReleased(KeyEvent e) {
      if (e.getKeyCode() == 40) pfd = false; //y1 = y1+10;
      if (e.getKeyCode() == 38) pfu = false; //y1 = y1-10;
      if (e.getKeyCode() == 83) s = false;   //y2 = y2+10;
      if (e.getKeyCode() == 87) w = false;   //y2 = y2-10;
    }
    
    class GameLoop implements Runnable{

      Controllable c;

      public GameLoop(Controlable c){
        this.c = c;
      }
      
      @Override public void run(){
        while(true){
          if(c. && c.){
            y1 = y1+10;   // 
          }
          if(c. && c.){
            y1 = y1-10;   // 
          }

        }
      }
     public interface Controlable{
       public boolean pfd();
       public boolean pfu();
       public boolean w();
       public boolean s();


       public void ();
       public void ();
     }


    }
  }

@Override public void run: Was kommt da jetzt rein Du hast in deinem Beispiel spacePressed && leftPressed verwendet, und dann bei Aktion y1 = y1+10; geschrieben. Aber bei mir soll ja immer was anderes passieren, also nie bei 2 Tasten das selbe.

Und bei
Code:
public void walkRight();
  public void walkLeft();
  //usw.
//Die Methodenanzahl und -namen musst du natürlich selbst bestimmen.

Was ist das jetzt Einfach i-welche namen und das wars, also muss da nicht in die Methoden rein


sorry, aber ich check das nicht so :p

greetz
 
Hi,
du hast 3 Dateien:
Rechtecke, GameLoop und Cotrolable
Rechtecke implementiert Controlable und hat somit alle Methoden von Controlable. So machst du es ja auch beim KeyListener. Außerdem setzt Rechtecke bool-Werte, wenn entprechende Tasten gedrückt/losgelassen werden.
Controlable hat Methoden zum Ermitteln der Bool-Werte, sowie Methoden zum Ausführen der Bewegungen.
GameLoop prüft ständig, ob 2 Boolwerte gedrückte sind, und leitet die entprechenden Aktionen ein. Die Aktionen und die Bool-Werte werden über ein Object vom Typ Controlable zur Verfügung gestellt. Dieses Object wird GameLoop im Kontruktor übergeben.

In meinem letzten Post ist 1 Codesnippet auch eine Klasse, d.h. es sind niemals 2 Klassen in einem Snippet!

Ich würde dir mal raten, dich in das Thema Schnittstellen einzulesen, da ich merke, dass du auf diesem Gebit wenig Ahnung hast.
Ciao
DosCoder
 
lol, wie du merkst habe ich nicht nur von Schnittstellen sondern auch von Java generell wenig Ahnung :) Aber ich muss das Programm jetzt fertig machen (Hausarbeit :()

Also ok dann habe ich jetzt halt 3 Teile xD
Mit dem mit der Klasse Rechteck bin ich ja jetzt fertig das passt so.

Aber nochmal zur GameLoop Klasse:
Du schreibst dass GameLoop prüft ob 2 Tasten gedrückt sind, und du schreibst dass außerdem bei GameLoop meine Anweisung (y1 = y1+10;) reinkommen, aber wenn ich prüfe ob z.B. w und Pfeiltaste up gedrückt sind, kann ich ja keine Anweißung starten, weil einmal y1 = y1+10; und einmal y2 = y2+10; ausgeführt werden sollen. Je nach dem was gedrückt wurde.

Und mit Controll bin ich vollkommen überfordert ;)
 
Hi,
so wie es aussieht, möchtest du Java gar nicht lernen, oder?(Das ist jetzt nicht böse gemeint.) Ich hab nämlich das Gefühl, du lässt dein Programm von uns(Forenmembern) programmieren:
http://www.tutorials.de/forum/java/342249-objekt-mit-tastatureingabe-bewegen.html
http://www.tutorials.de/forum/java/342510-applet-waehrend-thread-sleep-eine-aktion-ausfuehren.html
und letzlich dieser Thread

Also entweder, du ließt dich in Schittstellen ein, oder du postest einen Auftrag die (un)entgeltichen Stellenangebote hier auf tutorials.de.
Ich sehe nämlich keinen Sinn darin, dir den ganzen Code hinzuklatschen(was ich ja schon fast getan habe), ohne dass du dabei was lernst. Auch habe ich keinen Bock, dich in Schnittstellen-Technologien einzuweisen, da es solche Tutorials zuhauf im Netz gibt.

Ciao
DosCoder
 
Ja wie soll ich das alles hinbekommen !? Ich hatte bis jetzt ein halbes Jahr Java in der Schule und kann außer den Kontrollstrukturen nix. Jetzt soll ich auf einmal ein ganzes Spiel schreiben !! Das habe ich ja jetzt auch nach vielen Stunden und intensiven suchen und lernen so einiger Maßen hinbekommen !! ich habe halt noch ein paar Bugs die ich nicht rausgekomme und hier poste und um hilfe bitte. Aber wie's aussieht hilft mir hier keiner so, dass ich das auch verstehe :(
 
Wenn dir keiner versucht haette zu helfen, haettest du wohl auch keine Antworten bekommen. Alle sind hier sehr hilfsbereit vorallem wenn sie sehen das man sich Muehe gibt. Daher solltest du es jetzt nicht darstellen, als ob keiner dir ordentlich hilft!
Ich weiss auch das es am Anfang schwer ist, sich in Java reinzudenken, aber da kann dir keiner bei helfen, das geht nur durch ueben, ueben ueben und nochmals ueben.
Poste deinen Code, wo du nicht weiterkommst (wie du es schon gemacht hast) verweise auf die STelle, wo du nicht weiterkommst, erklaere was du dir dabei denkst wie es funktionieren sollte, und wie es tatsaelich funktioniert.
 
Das habe ich doch bei meinem vorletzten Post gemacht, ich habe ka was ich in dei GameLoop und in die Controll Kalsse schreiben soll!!
 
Ja wie soll ich das alles hinbekommen !? Ich hatte bis jetzt ein halbes Jahr Java in der Schule und kann außer den Kontrollstrukturen nix. Jetzt soll ich auf einmal ein ganzes Spiel schreiben !! Das habe ich ja jetzt auch nach vielen Stunden und intensiven suchen und lernen so einiger Maßen hinbekommen !!

Jeder von uns hat irgendwann mal programmieren gelernt, viele autodidaktisch. Ich habe Java in der Web 1.0 Zeit gelernt, wo man nicht mal eben so jemanden fragen konnte, wo denn ein Problem sein kann. Wenn ich das geschafft habe, wirst du es auch sicherlich schaffen. Und wenn nicht, dann steh eben dazu.

Das Problem an deinem Posting ist, dass du zunächst eine Frage stellst, die schon zig Mal im Netz aufgetaucht ist und genauso oft auch schon beantwortet wurde. Und obwohl DosCoder sich schon die Mühe gemacht und dir schon alles vorgekaut hat, schaffst du es nicht, die Lösung per Copy & Paste in dein Programm zu kopieren und ein paar Variablen zu ändern bzw. hier und da noch etwas eigenen Code zu schreiben.

Wir sind hier immer bereit jemandem zu helfen, aber wir lassen uns auch nicht ausnutzen - denn es ist unsere Freizeit, die wir hier investieren. Und wenn dir das Programmieren eines Spiels noch zu schwer ist, weil du noch keine Erfahrungen damit gesammelt hast, solltest du eben mit etwas Einfacherem anfangen.
 
Es interessiert mich relativ wenig wie du coden gerlent hast & ja ich geb ja zu ich kanns nicht! Ich werds viel. auch i-wann schaffen, ich muss da drin ja i-wann auch abi machen ;) aber nach ein paar Stunden unterricht in denen man gerade mal if Abfragen & Schleifen und ein bisschen anderen Kram gelernt hat, kann man das halt nicht sofort alles perfekt, deshalb sich ich hier Hilfe ;)

Wenn meine Frage schon sooo oft beanwortet wurde, mit einem guten Lösung, die auch wirklich funktioniert, dann zeig doch mal 2-3 Links die auch zu einer guten Lösung gekommen sind!!

greetz
 
N302OO7 hat gesagt.:
dann zeig doch mal 2-3 Links die auch zu einer guten Lösung gekommen sind!!
... womit wird wieder am Anfang wären:
http://www.cokeandcode.com/info/tut2d.html Tipp: Show ab dem Stichwort Keyboard Input)
Auch hier wurde erkärt, was ich dir fast ausprogrammiert habe:
http://www.klamm.de/forum/archive/index.php/t-12402.html
Das gleiche gilt auch hier:
http://www.jguru.com/faq/view.jsp?EID=278335

Und hiermit verabschiede ich ich aus diesem Thread, ich habe es nämlich satt, auch noch dumm angemacht zu werden, nachdem ich in meiner Freizeit einen fast kompletten Code geschrieben habe!

Ciao
DosCoder
 
Zurück