Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

vor einiger Zeit habt Ihr mir sehr geholfen, bei einem Problem mit JAVA.

Deshalb möchte ich mal an dieser Stelle Danke sagen und Euch einladen,

auf meiner Webseite mein Java Projekt zu testen.

JavaCPC - CPC Games to play online with your browser ist nun seit ein paar Tagen online und bietet Euch jede Menge 'echte' Spiele in einem Java-Emulator für den Schneider/Amstrad CPC an.

Der Clou: Die Spiele sind keine "Roms" oder "Schnappschüsse", sondern sind 1:1 Abbilder der Disketten.

Dank Eurem Forum habe ich es geschafft, diese automatisch laden zu lassen...

(Siehe dazu diesen Beitrag: http://forum.fachinformatiker.de/java/114611-string-einzelne-keyevents-umwandeln-geht.html )

Nochmal Danke an Euch und viel Spass beim Spielen ;)

Markus

Geschrieben
gelungenes projekt, wenns auch am design ein wenig mangelt ;-)

Gut, dass Geschmäcker verschieden sind *grins*

An der Startseite werde ich aber nochmal arbeiten...

Damit bin ich selbst noch nicht ganz zufrieden.

Der Rest wird aber so bleiben.

Mir war es wichtiger, die Seite übersichtlich und einfach zu halten, als viel "brimborium" drumherum zu machen...

Bin aber gerne für Kritik und Anregungen offen.

(Schaut dazu am besten mal in mein Forum, dort gibt es einen Punkt, wo man soetwas posten kann. Dieses dann aber bitte auf Englisch, da die Seite überwiegend von Engländern, Griechen, Spaniern und Franzosen benutzt wird.)

Gruss,

Markus

Geschrieben (bearbeitet)
is trotzdem ne geile seite. schon allein wegen ik+. aber wie funktioniert das denn mit der steuerung?

Normal gilt folgende Tastaturbelegung:

- Normale Buchstaben und Ziffern zum schreiben

- Zehnerblock rechts bei Num-Lock ein: Joystickabfrage: 4,8,6,2 - Richtungen, 5 - Feuer

Man kann allerdings auf eine alternative Joystickabfrage umschalten:

- Wenn der Haken gesetzt wird bei "Q,A,O,P, SPACE, CTRL Joystick" liegen die Joysticktasten dort.

Q,A - Rauf/Runter

O,P - Links/Rechts

SPACE,CTRL(STRG) - Feuer 1, Feuer 2

Einige Spiele bieten auch an, die Tasten zu konfigurieren.

Einen echten Joystick bzw ein Gamepad kann man leider nicht benutzen (Ausser, man zeigt mir, wie man Joystick-Signale in KeyEvents umwandeln kann, was cool wäre, weil man so auch die Maus auf Joysticksignale umschalten könnte)

MfG

Markus

[Edit]: Einige Spiele verlangen, dass man 1 oder 2 drücken muss, um etwas zu erreichen.

Dies kann manchmal auf F1 oder F2 liegen... (F1-F9 = F-Tasten 1-9, F12 = F0)

Bearbeitet von Devilmarkus
Geschrieben

Jetzt mal ernsthaft: kann man Joysticksignale bzw Maussignale so umwandeln, dass sie einen KeyEvent aufrufen?

Z.B.: Man bewegt die Maus nach rechts, und im Emulator wird die Taste 'Joystick Rechts' gedrückt... Etc....

Geschrieben

In Bezug auf Maussteuerung: Für allgemeine Aktionen wie Klick, Release, etc. gibt's das Interface MouseListener, für erweiterte Aktionen wie Mausbewegungen gibt's das Interface MouseMotionListener.

Geschrieben

Hallo zusammen,

Ich habe nun sämtliche Suchmaschinen betätigt, aber leider nicht gefunden, was mir weiterhelfen könnte....

Folgendes Problem:

Ich benötige eine Routine, welche mir anzeigt, in welche Richtung die Maus bewegt wird....

Beispiel:

Man bewegt die Maus hoch -> Ausgabe: "Rauf"

runter -> "Runter"....

etc....

Ich weiss zwar, wie ich die X-Y Koordinaten auslesen kann, aber das hilft mir nicht wirklich weiter...

Ich möchte, dass man die Maus wie einen Joystick später benutzen kann.

Wie ich auf einzelne Richtungen (was mir halt fehlt) die entsprechenden Tasten zuweisen kann, weiss ich.

Eine sehr simple Bewegung habe ich auch schon hinbekommen, diese scheitert aber schon daran, wenn z.B. die Maus diagonal bewegt wird.

Vielleicht weiss ja jemand Rat?

 public void mouseMoved(MouseEvent me)

     {  

     int xoldpos = xpos;

     int yoldpos = ypos;

            xpos = me.getX();

            ypos = me.getY();


            if (xoldpos <= xpos - 3){

            Switches.direct = "Right";

            xoldpos = xpos;

            yoldpos = ypos;}

            else

            if (xoldpos >= xpos + 3){

            Switches.direct = "Left";

            xoldpos = xpos;

            yoldpos = ypos;}

                                //              else ???

            if (yoldpos >= ypos + 3){

            Switches.direct = "Up";

            xoldpos = xpos;

            yoldpos = ypos;}

            else

            if (yoldpos <= ypos - 3){

            Switches.direct = "Down";

            xoldpos = xpos;

            yoldpos = ypos;}

            Display.xpos = xpos;

            Display.ypos = ypos;



     } 

Das ist mein Versuch, aber irgendwie klappt das nicht so, wie ich es bräuchte...

Geschrieben

Servus,

"klappt nicht" ist keine Fehlerbeschreibung.

Weshalb weist Du xoldpos und yoldpos jeweils in den if-Abfragen noch mal Werte zu? Im einfachsten Fall (und der interessiert hier) willst Du die aktuellen Werte von x und y mit den alten Werten vergleichen. Dazu merkst Du Dir die alten Werte, vergleichst sie mit den neuen und leitest daraus die Richtung ab. Das sieht soweit ganz gut aus. Schmeiß mal den ganzen überflüssigen Code raus und probier mit einer Textausgabe, ob es passt. Wenn nicht, dann sag, was nicht passt.

Peter

Geschrieben

Hallo,

ich habe es heute hinbekommen....

Der Code mag zwar seltsam erscheinen, aber so funzt es:

public void mouseMoved(MouseEvent me)

     {  

     xoldpos = xpos;

     yoldpos = ypos;

     Display.xpos = xpos;

     Display.ypos = ypos;


     xpos = me.getX();

     ypos = me.getY();

     if (mousejoy){


            if (xoldpos <= xpos - 1){

            Switches.directR = 0;

            Switches.directxR = "Right";

            Switches.directxL = "Stop";

            }

            else

            if (xoldpos >= xpos + 1){

            Switches.directL = 0;

            Switches.directxR = "Stop";

            Switches.directxL = "Left";

            }

            xoldpos = xpos;



            if (yoldpos >= ypos + 1){

            Switches.directU = 0;

            Switches.directyU = "Up";

            Switches.directyD = "Stop";

            }

            else

            if (yoldpos <= ypos - 1){

            Switches.directD = 0;

            Switches.directyU = "Stop";

            Switches.directyD = "Down";

            }

            yoldpos = ypos;


     }



     } 
In dem System passiert dann folgendes:
  public void joyReader(){

      if (Switches.MouseJoy){

      if (Switches.directxR.equals("Right"))

          keyboarda.keyPressed(KeyEvent.VK_NUMPAD6);

      if (Switches.directxL.equals("Left"))

          keyboarda.keyPressed(KeyEvent.VK_NUMPAD4);

      if (Switches.directyU.equals("Up"))

          keyboarda.keyPressed(KeyEvent.VK_NUMPAD8);

      if (Switches.directyD.equals("Down"))

          keyboarda.keyPressed(KeyEvent.VK_NUMPAD2);

              Switches.directL++;

              if (Switches.directL >= 4){

                  keyboarda.keyReleased(KeyEvent.VK_NUMPAD4);

              }

              Switches.directR++;

              if (Switches.directR >= 4){

                  keyboarda.keyReleased(KeyEvent.VK_NUMPAD6);

              }

              Switches.directU++;

              if (Switches.directU >= 4){

                  keyboarda.keyReleased(KeyEvent.VK_NUMPAD8);

              }

              Switches.directD++;

              if (Switches.directD >= 4){

                  keyboarda.keyReleased(KeyEvent.VK_NUMPAD2);

              }

      }    

  }

Wie gesagt: Der Code mag etwas umständlich sein, aber so funktioniert es.

Testen kann man das Ganze hier:

JavaCPC - CPC Games to play online with your browser

Wenn der Emulator geöffnet wurde, erscheint oben Rechts ein Menü.

Dort "Settings -> Joystick -> Mousejoystick" aktivieren.

Man kann nun in der Oberfläche (SymbOS) den Mauspfeil mit der Maus auch bewegen...

Maustasten sind auch zugewiesen.

Gruss, Markus

P.S.: Wenn jemand eine elegantere Lösung wüsste, dann wäre es nett, dieses hier zu posten.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...