ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
922
922
EMPFEHLEN
-
08.02.04 20:23 #1
- Registriert seit
- Feb 2004
- Beiträge
- 4
Ich habe folgendes Problem in Visual Basic 6:
Für ein Schulprojekt programmiere ich ein Schachprogramm, zwar ohne CPU-Gegener (kommt ja vl. noch) sonder einfach Mensch gegen Mensch. Das Schachbrett ist eine PictureBox, die einzelnen Figuren sind Images (jeweils eine, ihre Geschwister erstelle ich mir per Load() ... also bauer(1), bauer(2), bauer(3), ... springer(1), springer(2), turm(1), turm(2) ... usw ...)
Mein Problem ist nun das Koordinatensystem! Alles ist bestens, bevor die Figuren am Brett sind! Die Brett-Koordinaten hole ich mir mit brett_MouseMove(). Wenn ich jetzt aber die Maus über eine Figur bewege, versagt das System. Die Koordinaten werden nun intern zB über dem Turm berechnet, nicht mehr allgemein, über das ganze Brett berechnet.
Versteht ihr was ich meine Wie kann ich es anstellen, dass das Programm die Koordinaten NUR auf das Brett bezieht und NICHT beim MouseOver über einer Figur das Brett ignoriert und das interne Koordinatensystem der Figur nutztRechtschreibfehler sind beabsichtigt und dienen zur allgemeinen Belustigung.
-
08.02.04 20:30 #2
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Hallo,
vielleicht ist das MouseMove-Ereignis vom gesamten Formular für Deine Aufgabe geeigneter. Ich bin mir da gerade zwar nicht sicher, aber das würde ich an Deiner Stelle einfach mal ausprobieren.
Logischerweise musst Du dann unter Umständen die Berechnung der Felder umschreiben.
-
08.02.04 20:41 #3
- Registriert seit
- Feb 2004
- Beiträge
- 4
Das Programm errechnet sich aber aus den X- und Y-Koordinaten alles, zB Farbe der Felder, Position (Top,Left) der Figuren, wenn die Maus jetz ausserhalb des Bretts Koordinaten senden würde, so würde die ganze berechnung zusammenbrechen, ungültige Felder berechntet werden, s/w falsch, ...
Gibts nichts anderesRechtschreibfehler sind beabsichtigt und dienen zur allgemeinen Belustigung.
-
08.02.04 21:43 #4
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Das Problem ist nur, dass die Figuren über dem Brett liegen und deswegen das MouseMove-Ereignis auslösen, wenn die Maus dadrüber ist.
Möglicherweise kannst Du statt dem PictureBox-Control für das Brett auch ein FlexGrid nehmen - ich weiss nur gerade nicht, ob man da auch Grafiken einfügen kann.
Ich würde das MouseMove-Event des Formulars nehmen und die Berechnung anpassen, wenn es unbedingt das MouseMove-Event sein soll. Eine andere Alternative wäre, die Figur per Drag&Drop auf ein anderes Feld zu ziehen oder die Figur mit einem Klick zu aktivieren und dann mit einem zweiten Klick auf das Zielfeld zu verschieben.
Letzteres dürfte relativ einfach machbar sein.
-
08.02.04 21:49 #5
- Registriert seit
- Feb 2004
- Beiträge
- 4
hmm... da stellt sich dann aber das Problem: wie ziehen? Die Folge wären dann 16 Damen pro Seite (alle Figuren können fahren wohin sie wollen...!) ... aber mal sehen, ich werds mal mit dem Coord-Sys des Forms versuchen. Danke für die Hilfe!
Rechtschreibfehler sind beabsichtigt und dienen zur allgemeinen Belustigung.
-
08.02.04 22:00 #6
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Ziehen per Drag&Drop - so wie man im Explorer auch Dateien woanders hinschieben kann.
Dass nicht jede Figur überall hingezogen werden darf, muss natürlich vor dem Verschieben der Figur selbst überprüft werden. Ganz hilfreich dabei wäre evtl. auch einfach ein 8x8 Elemente grosses Array als Koordinatensystem, in dem Du die Positionen der Figuren speicherst.
-
09.02.04 11:42 #7
- Registriert seit
- Feb 2004
- Beiträge
- 4
Ja, danke, schon klar was Drag and Drop ist

Stimmt, ich könnte es mal so versuchen.
danke
Rechtschreibfehler sind beabsichtigt und dienen zur allgemeinen Belustigung.
-
Oder du legst bestimmte "maximal-Felder" fest, die bei Mousemove&Mouseover dein momentan selektiertes Objekt dahin verschieben.
Mit maximalFelder meine ich bestimmte Positionen in deiner PictureBox wie z.B. (anfang left=25px&top=25px | ende left=50px&top=50px)
So hast du ein Feld von 25m².
Wenn die Maus über diesem Feld ist und gleichzeitig ein Objekt selektiert hat, kannst du - wie gesagt - dein selektiertes Objekt (z.B. Turm(1)) ín die Mitte dieses Feldes "schieben". (turm(1).left = 25px |zeilenumbruch| turm(1).top = 25px)
Ist vielleicht nicht so einfach wie Drag&Drop, jedoch auch eine Möglichkeit.
Mit D&D habe ich mich jedoch kaum auseinander gesetzt....
Gruß
daDomDas Geheimnis der Kreativität ist das Wissen darum, wie man seine Quellen verbirgt.
(Albert Einstein)
Abendkleider
Ähnliche Themen
-
Bei mysql_query gehen Daten verloren
Von moritz115 im Forum PHPAntworten: 7Letzter Beitrag: 24.04.10, 09:59 -
Zeilenumbrüche gehen verloren
Von ahykes im Forum PHPAntworten: 12Letzter Beitrag: 09.07.08, 19:17 -
Variablen gehen verloren ?!
Von DJauie im Forum PHPAntworten: 1Letzter Beitrag: 31.10.07, 16:08 -
sessionwerte gehen verloren
Von jogisarge im Forum PHPAntworten: 3Letzter Beitrag: 10.03.06, 14:35 -
Mapping-Koordinaten gehen beim Rendern verloren
Von NEONINGER im Forum 3D Studio MaxAntworten: 5Letzter Beitrag: 20.12.05, 17:52





Zitieren
Login





