typesfrage

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

snörkl

Betreff: typesfrage

BeitragMo, Jun 23, 2008 11:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Joa, ich bin gerade dabei an einem kleinen Editor zu programmieren und möchte oben in einer Leiste Tiles anzeigen, die ich dann nur anzuklicken brauche um sie auszuwählen und dann setzen zu können. Ich hänge momentan an einem Punkt, denn ich möchte, dass von jedem Tileset alle Tiles nebeneinander dargestellt werden, und wenn ich ein anderes dazulade die neuen neben den alten (also 4 tiles in einem Tileset, nebeneinander dargestellt + 4 tiles in einem anderen Tileset, neben den 1. dargestellt). HIer liegt dann auch mein Problem, ich denke es ist nicht schwer zu lösen aber ich beiße mich das fest und mir fällt sicher irgendwas offensichtliches nicht auf Wink. Denn bei mir werden die zwei Tilesets dann übereinander und nicht nebeneinander dargestellt. Ich poste einfach mal die verschiedenen betreffenden Codes...

Zuerst, der Type ansich:
Code: [AUSKLAPPEN]
Type tileset
   Field nameTiles$
   Field numberTiles
   Field widthTiles
   Field heightTiles
   Field imageTiles
   Field xTiles  = 100
   Field frmTiles
End Type
Global image.tileset


Dann, das einlesen der Daten für das Tileset und das Erstellen danach:
Code: [AUSKLAPPEN]
Case 3
         Cls 
         Color 0,0,0
         image.tileset = New tileset
         Locate SCREEN_WIDTH/2,0
         Print "Geben Sie bitte den Namen des Tilesets ein: "
         Locate SCREEN_WIDTH/2,15
         image\nameTiles = Input("Name: ")
         Locate SCREEN_WIDTH/2,29
         image\numberTiles = Input("Jetzt die Anzahl der Tiles: ")
         Locate SCREEN_WIDTH/2,44
         Print "Die horizontale Länge eines Tiles: "
         Locate SCREEN_WIDTH/2,58
         image\widthTiles = Input("Horizontale Länge (in Pixel): ")
         Locate SCREEN_WIDTH/2,73
         Print "Und zuletzt die vertikale Länge eines Tiles: "
         Locate SCREEN_WIDTH/2,88
         image\heightTiles = Input("Vertikale Länge (in Pixel): ")
         
         image\imageTiles = LoadAnimImage(image\nameTiles,image\widthTiles,image\heightTiles,0,image\numberTiles)
         image\frmTiles = 0
         image\xTiles = image\xTiles + (image\widthTiles*image\numberTiles);hier sollte er pro Set eins weiterrücken


und schließlich das Anzeigen der Bilder:
Code: [AUSKLAPPEN]
   If tilesthere = 1
      
      For image = Each tileset
         Repeat
            DrawImage image\imageTiles,image\xTiles,yTiles,image\frmTiles
            If image\frmTiles < image\numberTiles Then
               image\frmTiles=image\frmTiles+1
            Else
               image\frmTiles = 0
               quitloop = 1
            EndIf
            image\xTiles=image\xTiles+image\widthTiles
         Until quitloop = 1
         quitloop = 0
         image\xTiles = image\xTiles - (image\widthTiles*(image\numberTiles+1)) ;Das auch genauer angucken
      Next
      
   EndIf      


Ich hoffe mein Problem ist einigermaßen zu verstehen,
mfg,
snoerkl

Mr.Hyde

Newsposter

BeitragMo, Jun 23, 2008 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal eine leicht angepasste Version.

Code: [AUSKLAPPEN]

Case 3
   Cls
   Color 0,0,0
   ;neuneuneuneu
   maxWidth = 0
   For image = Each tileset
      maxWidth = maxWidth + (image\widthTiles*image\numberTiles)
   Next
   ;Ende neuneuneuneu
   image.tileset = New tileset
   Locate SCREEN_WIDTH/2,0
   Print "Geben Sie bitte den Namen des Tilesets ein: "
   Locate SCREEN_WIDTH/2,15
   image\nameTiles = Input("Name: ")
   Locate SCREEN_WIDTH/2,29
   image\numberTiles = Input("Jetzt die Anzahl der Tiles: ")
   Locate SCREEN_WIDTH/2,44
   Print "Die horizontale Länge eines Tiles: "
   Locate SCREEN_WIDTH/2,58
   image\widthTiles = Input("Horizontale Länge (in Pixel): ")
   Locate SCREEN_WIDTH/2,73
   Print "Und zuletzt die vertikale Länge eines Tiles: "
   Locate SCREEN_WIDTH/2,88
   image\heightTiles = Input("Vertikale Länge (in Pixel): ")
   
   image\imageTiles = LoadAnimImage(image\nameTiles,image\widthTiles,image\heightTiles,0,image\numberTiles)
   image\frmTiles = 0
   ;changedchangedchanged
   image\xTiles = maxWidth ;hier sollte er pro Set eins weiterrücken
   ;end changedchangedchanged


;changedchangedchanged
If tilesthere = 1
   For image = Each tileset
      Repeat
            DrawImage image\imageTiles, image\xTiles + (image\frmTiles * image\widthTiles), yTiles,image\frmTiles
            If image\frmTiles < image\numberTiles Then
            image\frmTiles = image\frmTiles + 1
            
            Else
            Exit
            EndIf
      Forever
      image\frmTiles = 0
      
   Next
EndIf       
;End changedchangedchanged
BBP News RSS | Chaos Interactive | Watanien 2 Screens, Infos und Download | Watanien 2 Worklog | PuzzleMasters
http://abgeordnetenwatch.de - http://www.regierungs-beratung.de - Der Regierung auf die Finger schauen
 

snörkl

BeitragMo, Jun 23, 2008 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
So, ich bedank mich nochmal hier bei Dir, dass ist echt ne super Lösung und ich habe sie sogar verstanden!
Vielen Dank Smile

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group