In bestimmten Bereichen tiles zeichnen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Komek

Betreff: In bestimmten Bereichen tiles zeichnen

BeitragMo, Nov 07, 2005 12:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

erstmal sollte gesagt sein, das ich hier neu bin. Also, nochmals Hallo meinerseits.

Nun kommt auch schon meine erste frage, programmiere gerade schiffe versenken, habe allerdings ein kleines problem. Ich hab ein Gitter erstellt, in dem der Spieler nachher mit einem mausdruck ein schuss auf die aktuelle koordinate abfeuern kann.

es soll ein cursor im spiel geben, der nachher ganz normal auf den x und y achsen gezeichnet werden soll...

...
BlitzBasic: [AUSKLAPPEN]
DrawImage cursor, MouseX(), MouseY()


wenn sich der cursor über dem gitter befindet, soll geprüft werden, in welchem raster bzw. welchem abschnitt im gitter und dann soll ein kreuz oder so gezeichnet werden (grafik), in meinem folgendem code ist es einfach das "rote tile"...

nun möchte ich einfach wissen, wie ich das problem lösen kann, ohne alle möglichkeiten wie in meinem beispielcode abzufragen...

BlitzBasic: [AUSKLAPPEN]
;Globals für GfxMode
Global width=1152, height=864, depth=32, mode=1
Graphics3D width, height, depth, mode

;Ein Image erstellen
tile = CreateImage(25, 25)

;soll rot gefüllt werden...
SetBuffer ImageBuffer(tile)
Color 255, 0, 0
Rect 0, 0, 25, 25, 1
Color 255,255,255
SetBuffer BackBuffer()


;// // // M A I N L O O P
While Not KeyHit(1)

;bildschirm löschen
Cls

;So will ich nicht abfragen
If MouseX() >= (0*25) And MouseX() < (1*25) And MouseY() >= (0*25) And MouseY() < (1*25)
DrawImage tile, MouseX()*0, MouseY()*0
EndIf

For x=1 To 15
For y=1 To 15
Rect 0, 0, x*25, y*25, 0
Next
Next

;der kleinste cursor der welt Wink
Rect MouseX(), MouseY(), 1, 1, 1

;puffer flippen
Flip()

Wend

;Programmende
End



so bekomm ich es auch hin, aber dann stimmt die cursor position ja nicht mehr.....


BlitzBasic: [AUSKLAPPEN]
;Globals für GfxMode
Global width=1152, height=864, depth=32, mode=1
Graphics3D width, height, depth, mode

;Ein Image erstellen
tile = CreateImage(25, 25)

;soll rot gefüllt werden...
SetBuffer ImageBuffer(tile)
Color 255, 0, 0
Rect 0, 0, 25, 25, 1
Color 255,255,255
SetBuffer BackBuffer()


;// // // M A I N L O O P
While Not KeyHit(1)

;bildschirm löschen
Cls

;Tile zeichnen, aber cursor befindet sich logischer weise an einer anderen ;position wie das tile :(
DrawImage tile, MouseX()*25, MouseY()*25


For x=1 To 15
For y=1 To 15
Rect 0, 0, x*25, y*25, 0
Next
Next

;der kleinste cursor der welt Wink
Rect MouseX(), MouseY(), 10, 10, 1

;puffer flippen
Flip()

Wend

;Programmende
End


M.f.G Komek
 

Tugend Gleichmut

BeitragMo, Nov 07, 2005 12:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal Hallo, denn ich bin auch neu hier.
Ich weiß es nicht genau, aber wenn du für jede Koordinate des Gitters ein Tile benutzt, kannst du dann nicht einfach mit imageoverlap arbeiten? Indem du abfragst, ob der cursor auf dem tile ist..

MfG

Tugend Gleichmut

Komek

BeitragMo, Nov 07, 2005 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich hab es hinbekommen, war ganz einfach Wink

BlitzBasic: [AUSKLAPPEN]
;Globals für GfxMode
Global width=1152, height=864, depth=32, mode=1
Graphics3D width, height, depth, mode

;Ein Image erstellen
tile = CreateImage(25, 25)

;soll rot gefüllt werden...
SetBuffer ImageBuffer(tile)
Color 255, 0, 0
Rect 0, 0, 25, 25, 1
Color 255,255,255
SetBuffer BackBuffer()


;// // // M A I N L O O P
While Not KeyHit(1)

;bildschirm löschen
Cls

;So will ich nicht abfragen

;DrawImage tile, MouseX()*25, MouseY()*25

If MouseX() >= 0*25 And MouseX() < 15*25 And MouseY() >= 0*25 And MouseY() < 15*25

xx = MouseX()/25
yy = MouseY()/25


DrawImage tile, xx*25, yy*25

xx=xx+1
yy=yy+1

If MouseDown(1) = True Then
Text 0,500, xx + \" / \" + yy
EndIf

EndIf


For x=1 To 15
For y=1 To 15
Rect 0, 0, x*25, y*25, 0
Next
Next

;der kleinste cursor der welt Wink
Rect MouseX(), MouseY(), 1, 1, 1

;puffer flippen
Flip()

Wend

;Programmende
End


M.f.G Komek

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group