Mapeditor Tile per Mausklick
Übersicht

AffenmannBetreff: Mapeditor Tile per Mausklick |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jau das hilft mir sehr
Vielen dank ![]() |
||
Affenmann |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hm
Wie kann ich das den hochladen ? Is vom Rpgmaker eins |
||
![]() |
Pdd |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier im Archiv | ||
Lieber Apfel als Birne. |
Affenmann |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hehe is Hochgeladen
Sehe aber keinen Link den ich Posten kann |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hehe Danke ![]() Aber sehe kein Link^^ |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
dimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group