Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

07.07.2006, 22:09

Probleme bei Solitär

Zur Zeit programmiere ich ein kleines Solitär mit DirectX. Den Grafischen Part hab ich schon mit direct3d geschafft. Jetzt hab ich mir zum bewegen der Karten eine Klasse mit DirectInput geschrieben, um leichter mit der Maus umgehen zu können. Wenn der Mauszeiger innerhalb der Karte liegt, der Benutzer die linke Maustaste drückt und die Maus bewegt sollte sich die Karte ja mitbewegen. Und hier liegt mein Problem. Die Karte bewegt sich nicht mit der gleichen Geschwindigkeit wie der Mauszeiger, obwohl ich die Vektoren der Karte mit den Relativen Mauskoordinaten, die DirectInput liefert, verschiebe. Kennt jemand eine bessere Methode, wie ich die Karte verschieben könnte?
Ich gebe bei der Arbeit immer 100%

6% Montags
30% Dienstags
35% Mittwochs
25% Donnerstag
4% Freitag

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

2

08.07.2006, 08:08

Hmm, ist das der normale Windows-Mauszeiger den du benutzt?

Wenn ich das richtig verstanden habe, sind die deltas aus DirectInput recht "roh" und hat mit den Mauseinstellungen des Windows-Mauscursor nichts zu tun.

Die Beispiele umgehen das meist dadurch, dass sie den Mauscursor selbst zeichnen. Man kann aber sicher auch die Windows-Einstellungen für die Maus auslesen und dann selbst so umrechnen, dass die Koordinaten wieder stimmen.

Gruss,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

3

08.07.2006, 09:06

Ich könnte ja auch mal versuchen das ganze über die Messages zu machen. Könnte mir da jemand vielleicht sagen, wie ich dann aus den absoluten Mauskoordinaten Relative Mauskoordinaten mache?
Ich gebe bei der Arbeit immer 100%

6% Montags
30% Dienstags
35% Mittwochs
25% Donnerstag
4% Freitag

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

4

08.07.2006, 09:25

Das ist einfach:

Alle MouseMove Messages auswerten. (WM_MOUSEMOVE)
Erste Message? Dann Position merken.
Spätere Message? Delta aus aktueller und letzter Position berechnen. Aktuelle Position merken.

Man muss blos aufpassen, dass man beim Verlassen/Betreten des Fensters mit der Maus wieder richtig startet. Sowas kann man z.B. mit TrackMouseEvent überwachen.

Hope that helps,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

5

08.07.2006, 20:24

Also ich will das jetzt so implementieren: ich Schreibe mir eine Funktion namens TransformCard. Dieser übergebe ich die aktuellen Mauskoordinaten.
Dann subtrahiere ich von der Cursorposition die Position der Karte. Dann müsste der Vekor herauskommen, mit dem ich die Karte transformieren müsste dass diese sich immer mit der Maus bewegt. So jetzt habe ich noch eine Frage: Für die Position der Karte will ich den Mittelpunkt verwenden. Jetzt habe ich mir überlegt, wie ich diesen errechnen kann. Ich bin zu dem Schluss gekommen, dass wenn man die Komponenten des Vektors der Diagonale des Rechtecks durch 2 teilt, müsste der Mittelpunkt heraus kommen. Ist das so richtig?
Ich gebe bei der Arbeit immer 100%

6% Montags
30% Dienstags
35% Mittwochs
25% Donnerstag
4% Freitag

6

09.07.2006, 13:19

Hmm zwar ist das warscheinlich nicht was du willst(war zu faul durchzulesen was du geschrieben hast :D) aber unter Windows kansnt du ganz einfach die Std. cards.dll benutzen... damit ist das Zeichnen der Karten garkein Problem mehr ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

7

09.07.2006, 14:31

ist sowieso quatsch was ich oben geschrieben hab. Weiß jetzt, wie ich den Mittelpunkt berechne. Danke @ all
Ich gebe bei der Arbeit immer 100%

6% Montags
30% Dienstags
35% Mittwochs
25% Donnerstag
4% Freitag

Werbeanzeige