Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

SpieleProgrammierung:Hexfelder berechnen...

Markus Stehr (Anonym) / 1 Antworten / Flachansicht Nickles

Tach Leute!!!

Ich habe das problem das ich nicht weis wie ich es schaffe das ich
ein bestimmtes Feld bekomme, wobei ich nur die angaben MouseX und MouseY habe...

Wer von euch hat sowas schonmal entworfen? Ich kann so fast alles auser Assembler lesen.

Ich schreibe in QB 4.5 und
es soll später mal ein BattleTech-Spiel werden.
(Endlich mal eine original Tabletop Convertion)
Wer jetzt wegen Speed meckert, ich benutze die Future Libary.

Wer ein CodeSnippet will oder mit mir zusammenarbeiten will Maile mich an. Es gibt kein Geld nur Ruhm und Ehre ;)
Soll ja OpenSource sein.

Bis denne sacht
Markus Stehr

*Origin:FNORD! (doc.doom.b@gmx.de)

bei Antwort benachrichtigen
T-Rex Markus Stehr (Anonym) „SpieleProgrammierung:Hexfelder berechnen...“
Optionen

Tach auch.

Zuerst gibst ein Problem:
Haben die Hex-Felder einen Rahmen? Ich denke da an MechForce (ja, Amiga-Game), da hatte jedes Feld einen Rahmen von (ich glaube) einem Pixel. Da ist die Frage, wohin der Rahmen zählt (ja, DAUs drücken auf den Rahmen).

Aber Lösungsansatz:
Zwei nebeneinander liegende Felder haben in einer Zeile immer die gleiche Breite. Also sind Feld1 + Feld2 genauso breit wie Feld3 und Feld4.
Heißt: Du mußt die Breite der Felder wissen, also mußt Du das abhängig von MouseY machen.
Beispiel: Zeile yy, Breite(Feld1 + Feld2) = 60, MouseX div 60 (wie heißt die Division in QB?), dann hast Du schon mal einen ungefähren Rahmen, welche Felder gemeint sind.
Damit erhältst Du ein Wert, der entweder im linken oder im rechten Feld ist (oder für die DAUs: auf dem Rahmen). Eins von diesen Feldern enthält jetzt die gesuchte Koordinate. Hiervon mußt Du also die Breite des ersten Feldes abziehen. Ist der Wert negativ, wurde auf das linke, sonst auf das rechte Feld geklickt.

Zu beachten ist, daß die verschiedenen Zeilen eines Hex-Feldes auch verschieden breit) sind, also Du für die Zeilen verschiedene Breiten jedesmal hast.

Allerdings kann man auch hier vereinfachen:
(Wahrscheinlich) nach zwei Drittel des Feldes gibt es wieder die gleichen Breiten, die schon mal verwendet wurden.

Für die vertikale Position mußt Du im Prinzip genau so vorgehen.

 GrüßeT-Rex 
bei Antwort benachrichtigen