Brauche Hilfe zur Mausteuerung auf einer Tilemap

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Gray Fox

Betreff: Brauche Hilfe zur Mausteuerung auf einer Tilemap

BeitragDo, Mai 26, 2005 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ich habe zwar schon mehrere Beiträge gefunden, die eventuell in diese Richtung gehen, aber ich werde nie richtig schlau daraus. Könnte jemand mir die Funktionsweise solch einer Steuerung anhand von einem Beispielcode erklären?

Könnte mir jemand auch erklären wie ich das aktuelle Tile über dem sich meine Maus gerade befindet herauskriege?

Ich hoffe jemand ist bereit mir Anfänger zu helfen Very Happy
 

D²O

BeitragDo, Mai 26, 2005 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sollte eigendlich verständlich sein Wink


BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,16,2
SetBuffer BackBuffer ()




While Not KeyHit (1)

For y = 0 To 1
For x = 0 To 1

Rect 0+(320*x),0+(240*y),320,240,0 ;Tile zeichen

;abfragen ob die mouse in einem Rechteck ist
;wenn ja, roters rechteck zeichnen
If MouseX() > 0+(320*x) And MouseX () < 0+(320*x)+320 And MouseY () > 0+(240*y) And MouseY () < 0+(240*y)+240
Color 255,0,0
Rect 0+(320*x),0+(240*y),320,240,1
EndIf

Color 255,255,255;farbe wieder zurück setzen
Next
Next






Flip
Cls
Wend
End
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK;

Chester

BeitragDo, Mai 26, 2005 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich habs so in meinem mapeditor:
BlitzBasic: [AUSKLAPPEN]

Const Graphics_width% = 800 ;Auflösung
Const Graphics_height%= 600

Const tile_x% = 128; Tile Größe
Const tile_y% = 128

Global map_x% = Graphics_width%/tile_x% ; Map Breite ausrechnen
Global map_y% = 50 ; Map Länge

Dim map(map_x%,map_y%)

Graphics Graphics_width%,graphics_height%,32,2
SetBuffer BackBuffer()

Global maus2 = CreateImage(2,2)

SetBuffer ImageBuffer(maus2)
Plot 1,1

SetBuffer BackBuffer()

Repeat
Cls
;################### Raster
Color 255,255,255
For y = 0 To tile_y%*map_y% Step tile_y%
Line 0,y+viewy%,768,y+viewy%
Next

For x = 0 To tile_x%*map_x% Step tile_x%
Line x,0+viewy%,x,tile_y%*map_y%+viewy%
Next

For x = 0 To map_x%
For y = 0 To map_y%

kolli = ImageRectCollide(maus2,MouseX(),MouseY(),0,x*tile_x%,y*tile_y%+viewy%,tile_x%+1,tile_y%+1)
Color 200,0,0
If kolli = 1 Then
Rect x*tile_x%,y*tile_y%+viewy%,tile_x%+1,tile_y%+1,0
Color 0,0,0
x_map = x
y_map = y
EndIf
Next
Next

Flip
FlushKeys()
Until KeyHit(1)

EndGraphics : End


musste halt anpasssen
 

Gray Fox

BeitragSa, Mai 28, 2005 0:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für eure Tips. Ich hätte noch eine Beginnerfrage: Wie finde ich heraus über welchen Tile aus einem Dim Feld sich die Maus gerade befindet?
 

Bigfreddy

BeitragSa, Mai 28, 2005 0:56
Antworten mit Zitat
Benutzer-Profile anzeigen
MouSEX() / Tilebreite (z.B. 32) = z.B. 3
MouseY() / Tilehöhe (~ 32) = ~ 4

=> Mouse ist auf dem Feld (3/4)
 

Gray Fox

BeitragSa, Mai 28, 2005 1:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Bigfreddy hat Folgendes geschrieben:
MouSEX() / Tilebreite (z.B. 32) = z.B. 3
MouseY() / Tilehöhe (~ 32) = ~ 4

=> Mouse ist auf dem Feld (3/4)


Danke Smile

Hatte das zwar vorher schon gemacht gab Probleme, deshalb dachte ich, die Methode wäre net geeignet, hab mich wohl geirrt Smile
 

Gray Fox

BeitragSo, Mai 29, 2005 1:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hätte noch ne Frage, wenn ich ein mehrdimensionales Array abfrage und ein Feld ist leer, wie kann ich das abfangen bzw. einen Standartwert setzten?
  • Zuletzt bearbeitet von Gray Fox am So, Mai 29, 2005 2:03, insgesamt einmal bearbeitet
 

hitokiri

BeitragSo, Mai 29, 2005 2:31
Antworten mit Zitat
Benutzer-Profile anzeigen
gibt leider keine hübsche "initliasiere alle felder des dims mit wert bla" funktion, musst also beim erstellen des DIM mit (dimensionen) for next schleifen einen wert in alle reinsetzen.
 

Gray Fox

BeitragSo, Mai 29, 2005 2:32
Antworten mit Zitat
Benutzer-Profile anzeigen
hitokiri hat Folgendes geschrieben:
gibt leider keine hübsche "initliasiere alle felder des dims mit wert bla" funktion, musst also beim erstellen des DIM mit (dimensionen) for next schleifen einen wert in alle reinsetzen.


Wären Types sinnvoller?
 

hitokiri

BeitragSo, Mai 29, 2005 2:46
Antworten mit Zitat
Benutzer-Profile anzeigen
hm..dazu müsste ich schon genauer wissen, was alles in das array rein soll. aber an sich sind types für sehr grosse dinge meines bescheidenen wissens nach nich so gut geeignet, mehrdimensionale arrays werden sehr schnell sehr gross und types aus eigener erfahrung ab ungefähr 10000 instanzen sehr sehr langsam.

edit: wobei mir gerade auffällt dass ich eigentlich nix kapiere.
types müsstest du auch erst die ganzen instanzen erstellen.
und types sind in dem sinne eine linked list und an sich erstmal eindimensional, kannst höchstens (dimensionen) felder geben und werte einsetzen was aber an sich sehr hirnrissig wäre. *kopfkratz*
  • Zuletzt bearbeitet von hitokiri am So, Mai 29, 2005 2:57, insgesamt einmal bearbeitet

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group