Graphicsg, KeyEvent ec <-- geht das?

Status
Nicht offen für weitere Antworten.

StickToFreak

Aktives Mitglied
Hey leute, also hier der code:

Code:
public void paint (Graphics g, KeyEvent ev) {
                   g.drawRect(10,10,300,200);
                   g.setColor(rectColor);
       g.setColor(circleColor);
       g.fillRect ((mouseX-radius), (mouseY-radius),diameter+20, diameter-15);

           if (ev.getKeyCode() == KeyEvent.VK_DOWN || ev.getKeyCode() == KeyEvent.VK_UP)
           {
              g.setColor(circleColor);
              g.fillRect ((mouseX-radius), (mouseY-radius),diameter-20, diameter+15);
           }
       }

Also zur Verdeutlichung: Es soll ein Objekt gezeichnet werden (fillRect) und wenn man dann UP, DOWN drückt soll sich der diameter ändern. Geht das?

Liebe Grüße

StickToFreak
 
S

SlaterB

Gast
in einer paint-Methode hat ein KeyEvent nichts zu suchen,

speichere dir irgendwelche abstrakten Daten
int position = ..;
Rectagle form = ..;

paint macht nichts anderes, als genau diesen Datenstand zu zeichnen

ein KeyListener macht nichts anderes, als diesen Datenstand zu ändern,
(ruft höchstens noch repaint() auf)
 

StickToFreak

Aktives Mitglied
Aber wenn ich die if-Schleife, die jetzt (s.o) in der paint-Methode sitzt, in die keyPressed reinsetze, dann sagt er mri, er kennt die Variable g nicht. Logisch. Was kann ich machen?^^
also du meinst, ich soll eine neue Variable machen Rectagle form = ... ; ? Wie würde das denn aussehen?
 
S

SlaterB

Gast
if-schleife.de

ich hab doch gesagt, dass der KeyListener nur Variablen verändert, nichts zeichnet,
wie soll ich das normal erklären?
leg dir notfalls für jeden einzelnen Wert eine int-Variable an,

paint zeichnet das, aufgerufen per repaint();
 

StickToFreak

Aktives Mitglied
Gut. Aber wenn ich jetzt für diameter 1 und diameter 2 ne variable anlege und diese dann im KeyListener also bei Tastendruck ändere verändert sich ja nur die Variable, und nicht die Position des Objekts..
also so sieht das gerade aus:

[HIGHLIGHT="Java"]
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Snake extends Applet implements KeyListener {


private int mouseX;
private int mouseY;
private int radius, diameter = 20;
private Color circleColor = Color.black;
private Color rectColor= Color.black;
int diameter1 = 5;
int diameter2 = 6;


public void init() {
Dimension full = getSize();
mouseX = full.width/2;
mouseY = full.height/2;
radius=diameter/2;
addKeyListener(this);
}


public void paint (Graphics g) {
g.drawRect(10,10,300,200);
g.setColor(rectColor);

g.setColor(circleColor);

g.fillRect((mouseX-radius), (mouseY-radius),diameter1,diameter2);
g.fillRect((mouseX-radius+6), (mouseY-radius),diameter1,diameter2);
g.fillRect((mouseX-radius+12), (mouseY-radius),diameter1,diameter2);
g.fillRect((mouseX-radius+18), (mouseY-radius),diameter1,diameter2);
g.fillRect((mouseX-radius+24), (mouseY-radius),diameter1,diameter2);
g.fillRect((mouseX-radius+30), (mouseY-radius),diameter1,diameter2);
g.fillRect((mouseX-radius+36), (mouseY-radius),diameter1,diameter2);


}

public void keyPressed(KeyEvent ev) {




if (ev.getKeyCode() == KeyEvent.VK_RIGHT && mouseX <300) {
mouseX = mouseX+2;
mouseY = mouseY;

repaint();
}
if (ev.getKeyCode() == KeyEvent.VK_DOWN && mouseY <200) {

mouseX = mouseX;
mouseY = mouseY+2;

repaint();
}
if (ev.getKeyCode() == KeyEvent.VK_UP && mouseY >20) {
mouseX = mouseX;
mouseY = mouseY-2;

repaint();
}
if (ev.getKeyCode() == KeyEvent.VK_LEFT && mouseX >20) {
mouseX = mouseX-2;
mouseY = mouseY;


repaint();


}
if (mouseX == 20 && ev.getKeyCode() == KeyEvent.VK_LEFT){
System.out.println("Game Over!");
repaint();
}

if (mouseY==20 && ev.getKeyCode() == KeyEvent.VK_UP){
System.out.println("Game Over!");

}

if (mouseX==300 && ev.getKeyCode()== KeyEvent.VK_RIGHT){
System.out.println("Game Over!");
}

if (mouseY==200 && ev.getKeyCode() == KeyEvent.VK_DOWN){
System.out.println("Game Over!");
}





}


public void keyTyped(KeyEvent ev) {

}
public void keyReleased(KeyEvent ev) {

}

}[/HIGHLIGHT]
 
S

SlaterB

Gast
hast du auch eine Frage?

das der KeyListener nach Änderung der Position/ des Programmzustands repaint() aufrufen soll,
habe ich schon erwähnt oder? ;)
 
S

SlaterB

Gast
ich weiß gar nicht was dein Programm macht und habe bisher nur ein ganz grundlegendes Konzept angesprochen,

stell dir das wie die Arbeitsteilung zwischen zwei Menschen vor:
Mensch 1, der Chef, schreibt in Exemplarvariablen, was er zu malen haben möchte,
z.B.
x = 2;

Mensch 2, der Zeichner, liest später den x-Wert aus und malt genau an diese Stelle einen Kreis,

was ist daran schwer? mehr kann ich dazu nicht sagen,
dass in deinem Beispiel ein int-Wert x nicht reicht, mag sein, aber du kannst ja genauso gut hundert Variablen anlegen oder eine Liste oder was auch immer
 

StickToFreak

Aktives Mitglied
Also was ich versuche zu programmieren ist Snake.
Mit drawRect zeichne ich die Aussenbegrenzung für den Snake bereich.
jetzt versuche ich das die Schlange (das Objekt, in meinem Fall ist es diese Schlange):


Code:
g.fillRect((mouseX-radius),    (mouseY-radius),diameter1,diameter2);
g.fillRect((mouseX-radius+6),  (mouseY-radius),diameter1,diameter2);
g.fillRect((mouseX-radius+12), (mouseY-radius),diameter1,diameter2);
g.fillRect((mouseX-radius+18), (mouseY-radius),diameter1,diameter2);
g.fillRect((mouseX-radius+24), (mouseY-radius),diameter1,diameter2);
g.fillRect((mouseX-radius+30), (mouseY-radius),diameter1,diameter2);
g.fillRect((mouseX-radius+36), (mouseY-radius),diameter1,diameter2);

Doch wenn ich jetzt Auf meiner Tastatur "Up" o. "Down" drücke, geht die ganze Schlange waagerecht hoch, nicht senkrecht, dass versuche ich hier zuändern :D.
Wenn ich jetzt in dem Teil: public void keyPressed(KeyEvent ev) {
eine if-Abfrage mache die z.B. sagt:
Code:
if (ev.getKeyCode() == KeyEvent.VK_DOWN || if (ev.getKeyCode() == KeyEvent.VK_UP){
mouseX-radius=mouseX-radius+5;
mouseY-radius=mouseY-radius;
repaint();
}
Ich weiß das mouseX/Y-radius keine definierte variable ist und deshalb JavaEditor mäckert, aber das wäre ja nur ein Beispiel. Wenn ich jetzt eine Variable anlege für mouseX/Y - radius, dann geht das widerum nicht:
Code:
public void init() {
Dimension full = getSize();
mouseX = full.width/2;
mouseY = full.height/2;
radius=diameter/2;
addKeyListener(this);
}
Weißt du jetzt was ich meine? :D
Also ich will eigentlich nur meine komplette Schlange aus der Waagerechtlage, zur Senkrechtlage ändern. Dafür muss ich aber mouseX und mouseY ändern. Und ich hab keine Ahnung wie ich das machen soll, so dass die ganze Schlange nicht gleich ein Sprung um 50 Pixel oder so macht, sondern genau an der gleichen Stelle bleibt, nur einmal am vordersten Punkt gedreht wurde.

Du kannst ja mal dein JavaEditor öffnen, und den kompletten Code von oben reinkopieren, (also nicht in dieser Antwort der Code ;) ). Dann siehst du vllt. was ich meine.

Grüße

StickToFreak
 
S

SlaterB

Gast
du verwendest ein Applet, welches praktisch nicht einfach so zu testen ist (zumindest mir nicht bekannt),

was genau das Problem ist, erzählst du weiter nicht

> Wenn ich jetzt eine Variable anlege für mouseX/Y - radius, dann geht das widerum nicht:

warum geht was genau nicht? nur weil man irgendeine Variable anlegt hört doch nicht Code auf zu funktionieren..

> Also ich will eigentlich nur meine komplette Schlange aus der Waagerechtlage, zur Senkrechtlage ändern.

was geht daran nicht?
erstelle dir int-Variablen für die Position, von mir aus dazu ein boolean senkrecht true/ false,
je nach Tastendruck ändere diese Variablen

> Und ich hab keine Ahnung wie ich das machen soll, so dass die ganze Schlange nicht gleich ein Sprung um 50 Pixel oder so macht,

ändere die Position nicht um 50, sondern um 49, 48 oder irgendeinen Wert? wo liegt das Problem?

wenn du Schlange schrittweise bewegen lassen willst, also z.B.

---------

-------
|

----
|
|
|


dann musst du entweder für jedes einzelne Schlangenteil die Position einzeln speichern
(wenn sie sich in ein neues Feld bewegt, dann das letzte aus der Liste entfernen)

oder inkrementell Bewegungsdaten speichern, z.B.
Länge der Schlange = 10
aktuelle Position = 5, 5
Liste der letzen Abbiegungen: 4,3 von links, 2, 2 von rechts usw.
dann könnte paint anhand dieser Daten alle Positionen neu nachrechnen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J JLabel bzw. Image Icon mit KeyEvent bewgen Java Basics - Anfänger-Themen 9
T KeyEvent Problem Hilfe!! Java Basics - Anfänger-Themen 5
Xentox501 keyevent.VK_LEFT wird beim drücken jeder belibigen Taste aktiv. Java Basics - Anfänger-Themen 3
T KeyEvent - Gedankenfehler? Java Basics - Anfänger-Themen 3
P Klassen Bei KeyEvent in KeyListener den Tastendruck abbrechen Java Basics - Anfänger-Themen 5
S Eigene KeyEvent-Mask erstellen Java Basics - Anfänger-Themen 4
B Input/Output jTextField - KeyEvent - Zeichen soll nicht erscheinen Java Basics - Anfänger-Themen 6
F KeyEvent Frage Java Basics - Anfänger-Themen 2
MrGe keyevent gleichheitszeichen Java Basics - Anfänger-Themen 2
S KeyEvent Maker funktioniert nicht. Java Basics - Anfänger-Themen 4
S String KeyEvent parsen Java Basics - Anfänger-Themen 2
I KeyEvent macht nichts.^^ Java Basics - Anfänger-Themen 3
D KeyEvent Taste blockieren. Java Basics - Anfänger-Themen 2
? Problem mit KeyEvent.VK_DOWN Java Basics - Anfänger-Themen 4
A KeyEvent wird nicht erkannt Java Basics - Anfänger-Themen 2
A keyevent > keyPressed > vk_enter Java Basics - Anfänger-Themen 12
P KeyEvent.VK_Enter Java Basics - Anfänger-Themen 3
G KeyEvent in JFrame Java Basics - Anfänger-Themen 2
S Keyevent in Panel Java Basics - Anfänger-Themen 5
C public void keyPressed(KeyEvent e) Java Basics - Anfänger-Themen 2
G KeyListener und KeyEvent Java Basics - Anfänger-Themen 6
S KeyEvent Tastenkombination? Java Basics - Anfänger-Themen 1
D Button KeyEvent zuweisen. Java Basics - Anfänger-Themen 15
G KeyEvent verzögert Java Basics - Anfänger-Themen 11
G KeyEvent auswerten Java Basics - Anfänger-Themen 2
Z KeyEvent in JButton? Java Basics - Anfänger-Themen 12
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
P Netbeans installation geht nicht Java Basics - Anfänger-Themen 26
Ostkreuz wie geht der catch? Java Basics - Anfänger-Themen 3
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
Say Stelle in Code herausfinden, wie geht man vor? Java Basics - Anfänger-Themen 12
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
P Installation JRE 8u321 startet, geht aber nicht weiter Java Basics - Anfänger-Themen 1
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
E Pervasive PSQL insert funktion geht nicht Java Basics - Anfänger-Themen 9
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
H Wie geht eigentlich Objektorientierung? Java Basics - Anfänger-Themen 14
M Methoden Wert einer Variable geht verloren? Java Basics - Anfänger-Themen 6
melisax Lower & Uppercase Beispielprogramm geht nicht Java Basics - Anfänger-Themen 3
MarcKKKK123 Wie geht das? Java Basics - Anfänger-Themen 1
B Static Attribute in einer Klasse, wie geht das? :O Java Basics - Anfänger-Themen 19
N methodenaufruf for each geht nicht Java Basics - Anfänger-Themen 2
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
W App geht live und dann? Java Basics - Anfänger-Themen 9
P Geht es vielleicht viel kürzer? Java Basics - Anfänger-Themen 7
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
K Erste Schritte Programm geht aus Schleife, warum? Java Basics - Anfänger-Themen 2
S Geht das bei Java ? Java Basics - Anfänger-Themen 11
L Wie geht man bei mehreren Action Klassen vor? Java Basics - Anfänger-Themen 0
C unverständlicher Code Attribute ohne Datentyp, wie geht das? Java Basics - Anfänger-Themen 8
B OCR - Rechnungserkennung, wie geht das genau? Java Basics - Anfänger-Themen 59
CptK Klassen KeyListner geht nicht Java Basics - Anfänger-Themen 7
L Klassen Objekt aus einer Warteschlange in eine andere übergeben, geht nicht? Java Basics - Anfänger-Themen 6
K Armstrong Programm geht nur bis 1000, aber nicht weiter Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
amazinglife77 Input/Output Lesen/Schreiben Properties: in eclipse geht, als JAR nicht Java Basics - Anfänger-Themen 4
V Erste Schritte Warum geht meine continue Anweisung nicht? Java Basics - Anfänger-Themen 8
MR._FIRE_Flower String.split("(") geht nicht Java Basics - Anfänger-Themen 4
M Restbuchwert Berechnung geht nicht Java Basics - Anfänger-Themen 45
K Klassen Nachträglich ein Objekt einem anderen zuweisen, geht das? Java Basics - Anfänger-Themen 2
S int addieren geht nicht Java Basics - Anfänger-Themen 13
L system.print.out geht nicht Java Basics - Anfänger-Themen 11
M Referenz geht bei Zwischenspeichern verloren (ArrayList) Java Basics - Anfänger-Themen 4
S Komma geht beim Schreiben ins csv verloren. Java Basics - Anfänger-Themen 6
M Arrays einspeichern geht nicht Java Basics - Anfänger-Themen 21
J BlueJ und import-Anweisungen, wie geht das? Java Basics - Anfänger-Themen 4
J Geht mit Java überhaupt was? Java Basics - Anfänger-Themen 13
J Debuggen - wie geht das? Java Basics - Anfänger-Themen 6
I erstelle Vorschaubild mit der lib PDF-Renderer und möchte danach Dateiname ändern -> geht aber nicht Java Basics - Anfänger-Themen 0
J Ausführen geht nicht Java Basics - Anfänger-Themen 19
G System.out.printf geht nicht Java Basics - Anfänger-Themen 6
E Erste Schritte [Noob] Warum geht meine For-Schleife nicht? Java Basics - Anfänger-Themen 2
I Java Code so gut es geht Kommentieren Java Basics - Anfänger-Themen 4
S Button "Berechnen" geht nicht Java Basics - Anfänger-Themen 3
B Compiler-Fehler Ein Java-Eclipse-Anfänger geht auf Reisen... Java Basics - Anfänger-Themen 10
K JUnit: Objekte von eigenen Klassen vergleichen...geht nicht Java Basics - Anfänger-Themen 5
T fianl array geht nicht... Java Basics - Anfänger-Themen 2
O if and else geht nur manchmal Java Basics - Anfänger-Themen 17
B Nichts geht mehr Java Basics - Anfänger-Themen 10
D Java geht auf windows 64 bit nicht. Java Basics - Anfänger-Themen 5
V Einfacher vergleich von Arrays geht schief Java Basics - Anfänger-Themen 2
T sample.war geht nicht... Java Basics - Anfänger-Themen 1
Thallius Klassen aus Classname programmatisch erzeugen. Wie geht das in java? Java Basics - Anfänger-Themen 5
C Datentypumwandlung geht nicht Java Basics - Anfänger-Themen 5
U kompilieren geht nicht wg. Formatierung wahrscheinlich Java Basics - Anfänger-Themen 7
G While schleife mit 2 Bedingungen geht nicht! Java Basics - Anfänger-Themen 15
S Methoden Rückgabewert einer Methode als Parameter an eine andere Methode übergeben, geht das? Java Basics - Anfänger-Themen 5
L Das erste Mal GridBagLayout - wie geht das? Java Basics - Anfänger-Themen 5
O Jar Datei erstellen geht nicht. Java Basics - Anfänger-Themen 4
O (.+?) --> $1 geht nicht Java Basics - Anfänger-Themen 5
V relativer Pfad geht nicht, absolut schon? Java Basics - Anfänger-Themen 3
R Java JDK/ Kompiler geht nicht Java Basics - Anfänger-Themen 4
H Geht dieser Code noch einfacher (try catch finally) Java Basics - Anfänger-Themen 7
P Geht dieser Code noch einfacher? Java Basics - Anfänger-Themen 16
J Warum geht int und String nicht? Java Basics - Anfänger-Themen 18
J repaint() geht gar nicht; GUI aktualisieren Java Basics - Anfänger-Themen 10
N ArrayList geht nicht Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben