Mapeditor Tile per Mausklick

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Affenmann

Betreff: Mapeditor Tile per Mausklick

BeitragMi, Aug 02, 2006 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Da ich nun mehr Mappen muss würde ich ganz gerne mein Mapeditor erweitern und zwar um ein Tileset Links. Per Klick auf ein Feld wird halt das Tile ausgewählt...

Finde allerdings leider keine Lösung.

Habe versucht mit MausX und Mausy herauszufinden über welchen Tile die Maus ist.. Hat auch soweit alles klappt doch Leider nur in der ersten Zeile da rechts ja noch Platz frei ist und die MausX und MausY troztdem weiter geht ^^

Hoffe ihr könnt mir einen Denkanstoss geben.

SpionAtom

BeitragMi, Aug 02, 2006 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht hilft das hier weiter:
Die Variablen am Anfang kann man beliebig verändern. Man gibt lediglich die Position und die Ausmaße eines solchen Feldes an.

Code: [AUSKLAPPEN]

Graphics 800, 600, 0, 2
SetBuffer BackBuffer()

posX = 50
posy = 100
breite = 10
hoehe = 8
feldgr = 50

   Repeat
      Cls
      Color 255, 255, 255   ;Raster zeichnen
      For i = 0 To breite - 1
      For j = 0 To hoehe - 1
         Rect posX + i * feldgr, posY + j * feldgr, feldgr, feldgr, 0
      Next
      Next
            
      mfeldx = (MouseX() - posX) / feldgr ;Mausposition berechnen (kann auch außerhalb des Feldes liegen)
      mfeldy = (MouseY() - posY) / feldgr      

      ;Abfragen, ob sich Maus im Feld befindet
      If MouseX() >= posX And MouseY() >= posY And MouseX() - posX <= feldgr * breite And MouseY() - posY <= feldgr * hoehe Then
         Rect posX + mfeldx * feldgr - 4, posY + mfeldy * feldgr - 4, feldgr + 8, feldgr + 8, 1
         Text 0, 0, "Maus im Feld (" + mfeldx + "," + mfeldy + ")"
         Color 0, 0, 0
         Rect posX + mfeldx * feldgr - 3, posY + mfeldy * feldgr - 3, feldgr + 6, feldgr + 6, 1
      Else
         Text 0, 0, "Maus außerhalb des Feldes"
      End If
      
      Flip()
   Until KeyDown(1)
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Affenmann

BeitragMi, Aug 02, 2006 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Jau das hilft mir sehr

Vielen dank Very Happy
 

Affenmann

BeitragMi, Aug 02, 2006 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

posX = 0
posy = 0
breite = 18
hoehe = 16
feldgr =16


DrawImage normalset,posx,posy
Color 255, 255, 255 ;Raster zeichnen
For i = 0 To breite - 1
For j = 0 To hoehe - 1
Rect posX + i * feldgr, posY + j * feldgr, feldgr, feldgr, 0
Next
Next

mfeldx = (MouseX() - posX) / feldgr ;Mausposition berechnen (kann auch außerhalb des Feldes liegen)
mfeldy = (MouseY() - posY) / feldgr

;Abfragen, ob sich Maus im Feld befindet
If MouseX() >= posX And MouseY() >= posY And MouseX() - posX <= feldgr * breite And MouseY() - posY <= feldgr * hoehe Then
Rect posX + mfeldx * feldgr - 4, posY + mfeldy * feldgr - 4, feldgr + 8, feldgr + 8, 1
Text 0, 0, "Maus im Feld (" + mfeldx + "," + mfeldy + ")"
Color 0, 0, 0
DrawImage tileset,posX + mfeldx * feldgr, posY + mfeldy * feldgr
Else
Text 0, 0, "Maus außerhalb des Feldes"
End If
EndIf

For x=0 To 17
If mfeldx=X And mfeldy=0 And MouseDown(1) Then
Tile=MfeldX
EndIf


Hm sorry dass ich nochmal störe aber bekomme es einfach nich hin....

Die Erste Reihe funktioniert nun.

SpionAtom

BeitragMi, Aug 02, 2006 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
na eigentlich dachte ich, dass du die Tiles in einem Array speicherst. Zeig man her das Tileset, dann zeig ich dir, was ich meine.
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Affenmann

BeitragMi, Aug 02, 2006 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm
Wie kann ich das den hochladen ? Is vom Rpgmaker eins

Pdd

BeitragMi, Aug 02, 2006 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier im Archiv
Lieber Apfel als Birne.
 

Affenmann

BeitragMi, Aug 02, 2006 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hehe is Hochgeladen
Sehe aber keinen Link den ich Posten kann

D2006

Administrator

BeitragMi, Aug 02, 2006 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/upload/file.php?id=318

@Affenman:
Wie du deine Uploads findest:
https://www.blitzforum.de/upload/uploads.php
Da sind die aktuellen immer oben.
https://www.blitzforum.de/upload/upload.php
Und hier sind deine eigenen samt Link.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

Affenmann

BeitragMi, Aug 02, 2006 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hehe Danke Wink
Aber sehe kein Link^^

SpionAtom

BeitragMi, Aug 02, 2006 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ich leider nicht weiß, wie dein Map-editor arbeiten soll, und wie die Map abgespeichert wird, konnte ich auch nur ein Beispiel geben, wie so eine Auswahl stattfinden könnte Confused

Jedenfalls musst du dir darüber Gedanken machen, wie du deine Map speichern willst.

Und hier das Beispiel: Benötigtes Tileset, welches ich in PNG umbenannt habe!!
Code: [AUSKLAPPEN]
Graphics 1024, 768, 0, 2
SetBuffer BackBuffer()

posX = 0
posy = 16
breite = 18
hoehe = 16
feldgr = 16
ts = LoadImage("tileset.png")


   TFormFilter 0
   wahlx = -1
   wahly = -1

   Repeat
      Cls
      DrawImage ts, posX, posY
      Color 255, 255, 255   ;Raster zeichnen
      For i = 0 To breite - 1
      For j = 0 To hoehe - 1
         Rect posX + i * feldgr, posY + j * feldgr, feldgr, feldgr, 0
      Next
      Next
            
      mfeldx = (MouseX() - posX) / feldgr ;Mausposition berechnen (kann auch außerhalb des Feldes liegen)
      mfeldy = (MouseY() - posY) / feldgr      

      ;Was man mit der Auswahl macht:
      If wahlx > -1 And wahly > -1 Then ;Also wenn man bereits eine Auswahl getroffen hat         
         Text 0, posY + hoehe * feldgr + 5, "Ausgewähltes Tile: (" + wahlx + "," + wahly + ")"
         Color 255, 0, 0: Rect posX + wahlx * feldgr, posY + wahly * feldgr, feldgr, feldgr, 0
         Color 255, 255, 255
         DrawImage wahlTile, 0, posY + hoehe * feldgr + 25
         
      Else
         Text 0, posY + hoehe * feldgr + 5, "Sie haben noch kein Tile gewählt"
      End If


      ;Abfragen, ob sich Maus im Feld befindet
      If MouseX() >= posX And MouseY() >= posY And MouseX() - posX <= feldgr * breite And MouseY() - posY <= feldgr * hoehe Then
         Text 0, 0, "Maus im Feld (" + mfeldx + "," + mfeldy + ")"
         Color 0, 0, 0
         Rect posX + mfeldx * feldgr, posY + mfeldy * feldgr, feldgr, feldgr, 0
         
         ;Auswahl treffen
         If MouseDown(1) Then
            wahlx = mfeldx
            wahly = mfeldy
            wahlTile = CreateImage(feldgr, feldgr)
            CopyRect wahlx * feldgr, wahly * feldgr, feldgr, feldgr, 0, 0, ImageBuffer(ts), ImageBuffer(wahlTile)
            ResizeImage wahlTile, 4 * feldgr, 4 * feldgr
            
         End If

      Else
         Text 0, 0, "Maus außerhalb des Feldes"
      End If
      
      Flip()
   Until KeyDown(1)
End
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Affenmann

BeitragDo, Aug 03, 2006 7:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ganz ehrlich... Das is mir zu kompliziert inzwischen^^

Gehts nicht einfacher ? Möchte ja nur das die Variable Tile die Tile Nr von dem Bild bekommt ^^

SpionAtom

BeitragDo, Aug 03, 2006 12:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Affenmann hat Folgendes geschrieben:
Also ganz ehrlich... Das is mir zu kompliziert inzwischen^^

Gehts nicht einfacher ? Möchte ja nur das die Variable Tile die Tile Nr von dem Bild bekommt ^^


Dan sag mir, wie die Tiles nummeriert sind, dann kann ich dir weiterhelfen Razz
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

dimaster

BeitragDo, Aug 03, 2006 12:22
Antworten mit Zitat
Benutzer-Profile anzeigen
@affenmann schau dir ma die rpg tuts auf www.robsite.de (Tutorials-->BlitzBasic-->) an dort findest du auch ein gutes Beispiel für einen Mapeditor...

mfg dimaster
 

Affenmann

BeitragDo, Aug 03, 2006 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok danke werde gleich mal auf Robsite gucken.


Tiles sind von links nach rechts in 16er schritten angeordnet^^

2te reihe ist das erste bild 19te Tile Insgesamt sind es 288 Tiles

Edit: Glaube du hast mich nicht richtig verstanden... Mein Mapeditor ist bei bereits weiterentwickelt und kann auch Tiles setzen. Nur suche eine vereinfachung um Tiles auswählen. Dafür möchte ich dass, das Tileset angezeigt wird und ich mit der Maus eins auswählen kann ; )

SpionAtom

BeitragDo, Aug 03, 2006 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Irgendwo gibt es zwei Zeilen
Code: [AUSKLAPPEN]
wahlx = ...
wahly = ...

Daraus kannst du die Nummer des jeweiligen Tiles errechnen:

Code: [AUSKLAPPEN]
Tilenummer = wahly * breite + wahlx + 1


Und hier nochmal das ganze
Code: [AUSKLAPPEN]
Graphics 1024, 768, 0, 2
SetBuffer BackBuffer()

posX = 0
posy = 16
breite = 18
hoehe = 16
feldgr = 16
ts = LoadImage("tileset.png")
normalfont = LoadFont("arial", 16)
minifont = LoadFont("Arial", 10)
SetFont normalfont

   TFormFilter 0
   wahlx = -1
   wahly = -1

   Repeat
      Cls
      DrawImage ts, posX, posY
      Color 255, 255, 255   ;Raster zeichnen
      SetFont minifont
      For i = 0 To breite - 1
      For j = 0 To hoehe - 1
         Rect posX + i * feldgr, posY + j * feldgr, feldgr, feldgr, 0
         Text posX + i * feldgr + 3, posY + j * feldgr + 3, j * breite + i + 1
      Next
      Next
      
      SetFont normalfont
            
      mfeldx = (MouseX() - posX) / feldgr ;Mausposition berechnen (kann auch außerhalb des Feldes liegen)
      mfeldy = (MouseY() - posY) / feldgr      

      ;Was man mit der Auswahl macht:
      If wahlx > -1 And wahly > -1 Then ;Also wenn man bereits eine Auswahl getroffen hat         
         Text 0, posY + hoehe * feldgr + 5, "Ausgewähltes Tile: (" + wahlx + "," + wahly + ")"
         Color 255, 0, 0: Rect posX + wahlx * feldgr, posY + wahly * feldgr, feldgr, feldgr, 0
         Color 255, 255, 255
         DrawImage wahlTile, 0, posY + hoehe * feldgr + 25
         Text 4 * feldgr + 5, posY + hoehe * feldgr + 5 + feldgr * 2, wahlnr
         
      Else
         Text 0, posY + hoehe * feldgr + 5, "Sie haben noch kein Tile gewählt"
      End If


      ;Abfragen, ob sich Maus im Feld befindet
      If MouseX() >= posX And MouseY() >= posY And MouseX() - posX <= feldgr * breite And MouseY() - posY <= feldgr * hoehe Then
         Text 0, 0, "Maus im Feld (" + mfeldx + "," + mfeldy + ")"
         Color 0, 0, 0
         Rect posX + mfeldx * feldgr, posY + mfeldy * feldgr, feldgr, feldgr, 0
         
         ;Auswahl treffen
         If MouseDown(1) Then
            wahlx = mfeldx
            wahly = mfeldy
            wahlnr = wahly * breite + wahlx + 1
            wahlTile = CreateImage(feldgr, feldgr)
            CopyRect wahlx * feldgr, wahly * feldgr, feldgr, feldgr, 0, 0, ImageBuffer(ts), ImageBuffer(wahlTile)
            ResizeImage wahlTile, 4 * feldgr, 4 * feldgr
            
         End If

      Else
         Text 0, 0, "Maus außerhalb des Feldes"
      End If
      
      Flip()
   Until KeyDown(1)
End
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Affenmann

BeitragDo, Aug 03, 2006 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich werd einfach aus deinem Code nich schlau...

Naja gut vielleicht werd ich später mal eine Lösung finden .. vorerst werde ich mit dem Mausrad weiter Tiles anwählen.

Danke für deine Hilfe Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group