Grid bzw. Spalten und Reihen bei MouseOver

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Gizeh

Betreff: Grid bzw. Spalten und Reihen bei MouseOver

BeitragFr, Apr 20, 2007 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich brüte jetzt seit Stunden über einem kleinen Problem - das geübten Coder sicherlich rasch auffallen wird.

Im folgenden wird ein Grid erstellt - beim MouseOver soll das kleine blaue Rechteck exakt über einer Grid-Parzelle erscheinen - das tut es aber hier nicht - und ich weiß einfach nicht woran es liegt.

Ausserdem sind sowohl 5 Spalten als auch 5 Reihen angegeben - aber das Rechteck bei x- und y- Bewegung der Maus darüber jeweils 6 Spalten!


    user posted image

    user posted image


Kann mir jemand weiterhelfen, und meine Aufmerksamkeit vielleicht auf die geheime und mysteriöse Ursache lenken? Smile

Der Code:

Code:

Graphics 800,600,0,2 : SetBuffer Backbuffer()


   

; ----------------------------------------------------------


CONST ICONWIDTH%  = 40      ; ICON BREITE
CONST ICONHEIGHT% = 40      ; ICON HÖHE

CONST TILEWIDTH%  = 25      ; AUFLÖSUNG GRID
CONST TILEHEIGHT% = 25      

Global gColsTotal%
Global gRowsTotal%


; Beginn der Editor-Fläche (für die Linien)
CONST LineX = 360
CONST LineY = 120

; ANZAHL COLS & ROWS
gColsTotal% = 5
gRowsTotal% = 5


; -------------------------------------------------
; MAIN LOOP
; -------------------------------------------------

Repeat

   CLS
   
   CreateGrid
   
   ;Show & Move Mouse-Pointer over Grid
   If MouseX() > LineX AND MouseX() < LineX+TILEWIDTH*gColsTotal AND MouseY() > LineY AND MouseY() < LineY+TILEHEIGHT*gRowsTotal Then
         ; DRAW MARKER
         Color 192,192,255
         x% = (MouseX() / TILEWIDTH) * TILEWIDTH  ; So kriegt man die Spalte & Pixelposition raus in nem Tilebased Game
         y% = (MouseY() / TILEHEIGHT) * TILEHEIGHT
         Rect x,y,TILEWIDTH,TILEHEIGHT,0
      Else
         ShowPointer
   EndIf
   
      
   Flip

Until KeyHit(1)




; -------------------------------------------------
; FUNCTION CREATE GRID
; -------------------------------------------------
Function CreateGrid()

   ; Draw Background-Fill
   COLOR 90,90,90
   Rect LineX,LineY,TILEWIDTH*gColsTotal,TILEHEIGHT*gRowsTotal,1
   
   ; Draw Grid-Lines
   COLOR 255,255,255
   For i = 0 To gColsTotal
      For x = 0 To gRowsTotal
         ; Senkrechte Spalten erzeugen
         Line LineX+i*TILEWIDTH,LineY,LineX+i*TILEWIDTH,LineY+TILEHEIGHT*gRowsTotal
         ; Horizontale Reihen erzeugen
         Line LineX,LineY+x*TILEHEIGHT,LineX+TILEWIDTH*gColsTotal,LineY+x*TILEHEIGHT
      Next
   Next
   
End Function

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Apr 20, 2007 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Problem ist es das die tiles nicht bei 0
/0 anfangen sondern bei LineX und LineY
Hier mal der angepasste Code
Code:
If MouseX() > LineX And MouseX() < LineX+TILEWIDTH*gColsTotal And MouseY() > LineY And MouseY() < LineY+TILEHEIGHT*gRowsTotal Then
         ; DRAW MARKER
         Color 192,192,255
         x% = ((MouseX()- LineX)/ TILEWIDTH) * TILEWIDTH  ; So kriegt man die Spalte & Pixelposition raus in nem Tilebased Game
         y% = ((MouseY()- Liney) / TILEHEIGHT) * TILEHEIGHT
         Rect x+ LineX,y+ Liney,TILEWIDTH,TILEHEIGHT,1
      Else
         ShowPointer
   EndIf
[BB2D | BB3D | BB+]

Gizeh

BeitragDi, Apr 24, 2007 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Rallimen, etwas verspätet meinen Dank für Deine Hilfe - Du hattest Recht! Danke für den Tipp Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group