Problem beim Programmieren Von Mühle

Status
Nicht offen für weitere Antworten.

Black_Divil

Mitglied
Hi,

Habe vor längerer Zeit angefangen Mühle zu Programmieren und bin nun an einen kleinen(für mich großen) Problem angekommen. Das Spiel an sich ist so gut wie Fertig allerdings hab ich das Spielbrett etwas unschön beschrieben.

Hab mittels Integer Array das spielbrett an sich gespeichert
sprich 0 = kein stein, 1 = stein von Spieler1, 2 = stein von Spieler2
wenn nun alle steine von beiden spielern gesetzt sind kann ja nur noch ein feld weiter gezogen werden.
Nachdem mein spiel Drag&Drop fähig ist zieh ich mir mein stein nun zu dem nächsten punkt auf dem spielbrett.
wenn ich nun mein stein mit der maus nehm und zieh in an die neue position passiert folgendes:
Die alte position wird durch die X,Y koordinaten des MousePressed Events gespeichert und das geht nur wenn nicht schon eine Position ermittelt wurde.
Das geht auch prima. Leider nur nicht immer.
die positionen sind alle von der Linken oberen Ecke aus durch nummeriert
so wie hier
Code:
/** 
	 *   0          1          2
	 *   O----------O----------O
	 *   |   3     4|      5   |
	 *   |   O------O------O   |
	 *   |   |   6 7|  8   |   |
	 *   |   |   O--O--O   |   |
	 *  9| 10| 11|   12| 13| 14|    
	 *   O---O---O     O---O---O
	 *   |   |   | 16  |17 |   |
	 *   |   | 15O--O--O   |   |
	 *   |   |    19|    20|   |
	 *   | 18O------O------O   |
	 *   |        22|        23|
	 * 21O----------O----------O
	 */

aus unerklärlichen gründen gibt mein Programm gerne auch mal die pos 10 durch wenn ich mich von der 7 zur 4 bewegt hab... allerdings auch nicht immer.

Nachdem mich das ganze jetzt schon fast 1 monat ärgert, ich den fehler immernoch nicht gefunden hab und ich meine Lösung auch nicht so schick find bin ich bereit einen anderen Weg zu gehen...

Mir ist aber noch keiner eingefallen.... Hier kommt ihr ins Spiel.
Hat von euch jemand eine Idee wie man das schicker Lösen könnte?
 

Marco13

Top Contributor
Black_Divil hat gesagt.:
Hi,
Die alte position wird durch die X,Y koordinaten des MousePressed Events gespeichert und das geht nur wenn nicht schon eine Position ermittelt wurde.
Was bedeutet das? D.h. WAS passiert denn WANN bei deinem Drag/Drop?
 

Black_Divil

Mitglied
Also,
hab mir ja schon gedacht das ich das ein bisschen doof geschrieben hab...

Habe eine eigene Klasse für die Figuren für Spieler 1, und auch eine Eigene für die figuren von Spieler 2.
beide Reagieren auf
Mouse_Pressed
Mouse_Released
Mouse_Dragged(MouseMotion)

Diese Events werden dann von mein Spielfeld Verabeitet.

Bei Pressed Passiert weiter nix... auser das die alte Position gespeichert wird...

ich musste nur ein kleines Problem umgehen, da mouse_Dragged ja erst den Event Meldet wenn die Maus gedrückt gehalten und gezogen wird...


um die Punkte die die genaue ablageposition bestimmen, definier ich ein bereich von 20px X 20px.
in diesen bereich werden steine auf die richtige position gezogen wenn sie losgelassen aber noch nicht ganz richtig liegen...

dazu vieleicht noch ein beispiel

nehmen wir an das feld 1 sitzt auf pos 100,100
dann werden die figuren noch akzeptiert die zwischen 90,90 und 110,110 liegen.

wird die Maus also losgelassen prüf ich wo sie abgelegt wurde... wurde sie falsch abgelegt lass ich sie einfach da wieder erscheinen wo sie vorher war...
Ist sie richtig bzw. im bereich kommen die Regeln ins spiel...

Mouse_Dragged sorgt einfach nur dafür das die figur sich auch auf den bildschirm bewegt...

ich hoffe das ich damit deine Frage beantworte, fals noch mehr fragen sind... ich lauf nicht weg ;-)
 

Marco13

Top Contributor
OK. Es geht also NICHT um das "echte" Drag&Drop - wäre mir hier auch seltsam vorgekommen.

Jetzt hast du aber immernoch nicht gesagt, WO und WANN etwas falsches passiert.
Code:
class XXX
{
    Point startPos = null;
    mousePressed(event)
    {
         startPos = computFrom(event);
    }

    mouseDragged(event)
    {
         setPieceLocation(event);
         repaint();
    }

    mouseReleased(event)
    {
        Point endPos = computFrom(event);
        if (valid(startPos, endPost) doMove(startPos, endPos);
        else kreisch();
    }
}
 

Black_Divil

Mitglied
Tja, tut mir leid darauf kann ich dir auch keine antwort geben...
Ich weis nicht wo der fehler auftritt...

Es kommt vor das die alte position nicht richtig erkannt wird...
das ist natürlich verherend aber am code der das prüft kann ich kein fehler feststellen.
Code:
public int positionVonFigurErmitteln(Point p)
{
	int posnr = -1;
	
	for (int j=0; j<pos.length; j++)
	{
		if(pos[j].x-kulanzwert <= p.x & pos[j].x+kulanzwert >= p.x)
		{
			if(pos[j].y-kulanzwert <= p.y & pos[j].y+kulanzwert >= p.y)
			{
				posnr = j;
			}
		}
	}
		
        return posnr;
}
in pos[] sind alle positionen des Spielbretts p ist die position von Event.
kulanzwert steht derzeit auf 11 dadurch werden die positionen leichter erkannt wenn die figur daneben gelegt wird...
da die felder aber teilweise nur 20 px auseinander sind kommt es so schon leicht zu fehlern...

aber wie gesagt...
ich würde es auch anders schreiben ...
dachte auch schon daran eine Feld klasse zu schreiben die dann die sich dann merkt welche figur da gesessen war und wo sie sich dann hin bewegt hat... darüber hinnaus könnte ich dann abfragen auf welches feld abgelegt wurde...
nur weis ich nicht obs was bringt... darüber hinnaus müsste ich dann c.a. 80 % von der Klasse umstricken...(ob danach noch was geht ???:L )

Gibts vieleicht noch ne bessere Idee wie mann das relativ einfach schreiben könnte?

Ich denk ich werd bald das ganze teil neu schreiben...
Finde es eh nicht so gut die Spielfeld klasse hat knapp 900 Zeilen. kommt aber auch davon das da alles drin hängt... sogar die regeln...

P.S. Warum nicht das echte Drag&Drop ... das ist doch denke ich das selbe ich drück die maus auf ein object halte es damit fest und kann es wo anders ablegen... ich bin der meinung nichts anderes ist drag&drop ... oder seh ich das falsch?
 

Marco13

Top Contributor
Mit "echtem" Drag and Drop meinte ich das
http://java.sun.com/docs/books/tutorial/uiswing/dnd/intro.html
wie wenn man z.B. eine Datei vom Windows-Explorer auf den Desktop zieht ...

Zum eigentlichen Problem: Ein paar Debug-Ausgaben sollten schon helfen.

Code:
public int positionVonFigurErmitteln(Point p)
{
   System.out.println("Ermittle position für "+p);

   int posnr = -1;
   
   for (int j=0; j<pos.length; j++)
   {
      int x0 = pos[j].x-kulanzwert;
      int x1 = pos[j].x+kulanzwert;
      int y0 = pos[j].y-kulanzwert;
      int y1 = pos[j].y+kulanzwert;

      if(x0 <= p.x & x1 >= p.x && y0 <= p.y & y1 >= p.y)
      {
         System.out.println("Grenzen von Position "+j+" sind "+x0+" "+y0+" - "+x1+ " "+y1+" und da ist "+p+" drin");
         posnr = j;
      }
   }

   System.out.println("Position für "+p+" is "+posnr);
   return posnr;
}

Dann kreigst du mit, WANN die Methode aufgerufen wird, und es wird genau mitgetrackt, wie die (fehlerhafte?!) position zustande gekommen ist.
 

Black_Divil

Mitglied
Gut, ... das hab ich ja auch schon mal versucht.
Hat mich leider nicht weiter gebracht...

Bin nun selbst aber auf ein paar ungereimtheiten in meinen Code gestoßen.
Das lag zum teil daran das ich alle spielsteine gelöscht und danach wieder gesetzt hab wenn sich was auf dem spielfeld getan hat. Das hatte auch einen grund warum ich das so gemacht hab... (tieferen sinn hatte das nicht!)
es war ein test da manche steine einfach nicht verschwinden wollten... (es hat geholfen - aber der fehler blieb)
nun sind aber endlich einige fehler drausen und der stein der entfernt werden soll wird nun unabhängig von den anderen entfernt.

Leider blieb der lern effekt aus da ich mir es nicht genau erklären kann woran nun letztendlich der fehler lag. vermute aber viele MouseListener auf dem selben object.

naja...
nun hoffe ich das ich mein Projekt ohne größeren hindernissen zu ende bringen kann.
viel fehlt ja nicht mehr... trotzdem danke für die mithilfe/unterstützung..
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Problem beim Programmieren von 4Gewinnt Spiele- und Multimedia-Programmierung 5
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
G LIBGDX Problem beim resizen des Frames Spiele- und Multimedia-Programmierung 3
T LWJGL 2.9.2: Seltsamer Effekt beim Rendern (VertexShader Problem?) Spiele- und Multimedia-Programmierung 3
T Problem beim Aufbau des Spielfelds Spiele- und Multimedia-Programmierung 18
N Problem mit Kollisionsabfrage beim Fallen Jump & Run Spiele- und Multimedia-Programmierung 5
L Problem beim Rätsellöser Spiele- und Multimedia-Programmierung 3
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
K Problem beim Anzeigen von Bildern Spiele- und Multimedia-Programmierung 5
D Problem mit Überprüfung beim Lottospiel Spiele- und Multimedia-Programmierung 6
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
aze Problem beim Laden von Obj File Spiele- und Multimedia-Programmierung 3
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
G Problem beim Zeichnen von LineArrays Spiele- und Multimedia-Programmierung 9
C Problem beim picken Spiele- und Multimedia-Programmierung 10
B problem beim Memory Logik Spiele- und Multimedia-Programmierung 13
J Problem beim Instaliren Spiele- und Multimedia-Programmierung 8
N Rundenstrategiespiel - Problem beim Drehen eines Bildes Spiele- und Multimedia-Programmierung 18
C Graphische Benutzerschnittstelle, Problem beim Zeichnen Spiele- und Multimedia-Programmierung 4
A [HILFE] - Minecraft-Problem! Spiele- und Multimedia-Programmierung 1
C Plugin Problem Spiele- und Multimedia-Programmierung 2
J JLayer Problem Spiele- und Multimedia-Programmierung 1
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
G Low Poly 3D LWJGL Shader Problem Spiele- und Multimedia-Programmierung 4
G LIBGDX Texturen Problem Spiele- und Multimedia-Programmierung 1
C AutoClicker Problem Spiele- und Multimedia-Programmierung 2
S OOP Logik Problem Spiele- und Multimedia-Programmierung 5
G LIBGDX Viewport Problem Spiele- und Multimedia-Programmierung 3
J Problem mit Game Of Life Spiele- und Multimedia-Programmierung 3
N Problem mit 2D Spiel Spiele- und Multimedia-Programmierung 17
C Minecraft Minecraft Plugin Problem Spiele- und Multimedia-Programmierung 17
R Pong Spiel Problem Spiele- und Multimedia-Programmierung 1
V Problem mit BufferStrategy Spiele- und Multimedia-Programmierung 2
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
W Generelles Problem: Entscheidungsfindung Spiele- und Multimedia-Programmierung 4
T Problem bei Kollisionsabfrage Spiele- und Multimedia-Programmierung 4
C Vier Gewinnt Problem mit Ordnerstruktur Spiele- und Multimedia-Programmierung 2
T Problem mit Eclipse (java)-(minecraft) Spiele- und Multimedia-Programmierung 3
I Textbasiertes Spiel - Umsetzungsfrage & Schleifen Problem Spiele- und Multimedia-Programmierung 26
M Sound Problem Spiele- und Multimedia-Programmierung 3
M Sound Engin Problem 2 Spiele- und Multimedia-Programmierung 2
J Problem bei der GUI - Zu viele Spielbretter Spiele- und Multimedia-Programmierung 2
D LWJGL gluLookAt "Umschauen" Problem Spiele- und Multimedia-Programmierung 0
D Problem mit Würfelanimierung in LWJGL Spiele- und Multimedia-Programmierung 7
C Zeldaklon Problem mit Wand-Kollision Spiele- und Multimedia-Programmierung 8
0 Boxen übereinander stapelt Problem Spiele- und Multimedia-Programmierung 5
D Textfield im Game ,Problem: while-Schleife Spiele- und Multimedia-Programmierung 3
R 2D platformer - enemy damage -> TIMER PROBLEM Spiele- und Multimedia-Programmierung 3
S LWJGL Kamera Problem - Alles verzerrt Spiele- und Multimedia-Programmierung 4
B LWJGL StackOverFlow Problem nach 30sekunden. (Pong) Spiele- und Multimedia-Programmierung 2
Seikuassi LWJGL-Problem Spiele- und Multimedia-Programmierung 2
L Minecraft Minecraft Plugin programmieren (Craftbukkit 1.7.2) Problem Spiele- und Multimedia-Programmierung 4
B Minecraft mehr Ram zuweißen Problem Spiele- und Multimedia-Programmierung 0
K Bukkit Plugin Problem Spiele- und Multimedia-Programmierung 3
Y Problem mit repaint() in run() Spiele- und Multimedia-Programmierung 2
X Kleines Problem mit Java Reflections und einem eigenen Eventhandler Spiele- und Multimedia-Programmierung 1
T Problem mit Kollisionsabfrage der NPC Spiele- und Multimedia-Programmierung 1
J Minecraft Problem mit dem JRE - Minecraft Spiele- und Multimedia-Programmierung 3
TheSorm Problem mit 2 classen NullPointerException Spiele- und Multimedia-Programmierung 1
S Problem mit 4 gewinnt(MinMax Algorithmus) Spiele- und Multimedia-Programmierung 2
N Problem in der Main.class Spiele- und Multimedia-Programmierung 1
J Blöcke, Hitboxen, Koolisionsabfrage - Problem Spiele- und Multimedia-Programmierung 8
S Problem mit 3d-Polygon Spiele- und Multimedia-Programmierung 2
A Problem mit Sound Spiele- und Multimedia-Programmierung 5
C Nxt Duell Problem Spiele- und Multimedia-Programmierung 4
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
ruerob Problem bei Fade-Out von Sounds Spiele- und Multimedia-Programmierung 3
L [Slick2D] Problem bei Speicherfreigabe Spiele- und Multimedia-Programmierung 2
M Bukkit Plugin Problem Spiele- und Multimedia-Programmierung 22
T Java3D Rendering Problem Spiele- und Multimedia-Programmierung 7
J Problem bei pixelgenauer Kollisionsabfrage Spiele- und Multimedia-Programmierung 10
F Problem mit dem Abspielen von byte[] (Audioprogrammierung) Spiele- und Multimedia-Programmierung 2
C Problem mit Abspielen von Audio-Dateien Spiele- und Multimedia-Programmierung 3
R Problem bei Farbe ändern/4Gewinnt Spiele- und Multimedia-Programmierung 5
R StringIndexOutOfBoundsException - Problem Spiele- und Multimedia-Programmierung 2
S Problem mit Sichtfeld/Licht in einem Raster Spiele- und Multimedia-Programmierung 5
G Acht-Damen-Problem HILFE! Spiele- und Multimedia-Programmierung 11
A TileMap KeyListener - Problem Spiele- und Multimedia-Programmierung 2
J Problem mit Threads Spiele- und Multimedia-Programmierung 8
S Problem mit Zeitsteuerung der Game Loop Spiele- und Multimedia-Programmierung 4
Fu3L Problem mit 3D Noise Spiele- und Multimedia-Programmierung 4
T Problem bei LinkedList / JPanel Spiele- und Multimedia-Programmierung 4
T Problem mit ClassLoader und LWJGL Spiele- und Multimedia-Programmierung 5
M Scrolling Repaint Problem Spiele- und Multimedia-Programmierung 2
Samake03 [Problem] layeredPane bzw. Viewport Spiele- und Multimedia-Programmierung 3
Helgon glTexParameter / glTexImage2D Problem Spiele- und Multimedia-Programmierung 11
T Jmonkey opengl problem Spiele- und Multimedia-Programmierung 13
M Problem mit Kamera (glMultMatrix (OpenGL/ LWJGL)/ Quaternionen) Spiele- und Multimedia-Programmierung 5
M Problem mit Gameserver / Datensynchronisation Spiele- und Multimedia-Programmierung 10
G Mein erstes minigame -> problem mit Methode Spiele- und Multimedia-Programmierung 3
X Geometry Wars Clone Problem Spiele- und Multimedia-Programmierung 4
H Problem mit JMonkeyEngine3 und OgreXML Spiele- und Multimedia-Programmierung 3
D [JOGL 2.0] Kleines Problem mit freier Flugsteuerung Spiele- und Multimedia-Programmierung 3
A JAVA3D TransformGroup <--> Group Problem Spiele- und Multimedia-Programmierung 3
U [JOGL 1.1.1a]Kleines Problem mit Text Overlays: Spiele- und Multimedia-Programmierung 19
T Problem mit JnR-Steuerung / KeyListener Spiele- und Multimedia-Programmierung 6
D Problem Mit Miensweeper Clone & rekursive Methode Spiele- und Multimedia-Programmierung 4
M Performance Problem bei BufferedImage Spiele- und Multimedia-Programmierung 7
T Problem mit Speicherverbrauch Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen

Neue Themen


Oben