Types positionieren

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Sereyanne

Betreff: Types positionieren

BeitragFr, März 28, 2008 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo mal wieder,
ich hätte da gerne ein Problem....
Also folgendes: Ich hab mit Hilfe von Tuts und allem Kram Types für mein Spiel erstellt. Weiß nich wie ich sonst Gegenstände zum Einsammeln positionieren soll. Mit den Types ist (hoffentlich) soweit alles okay. Aber die Angaben von x und y wo die Dinger hin sollen ärgern mich noch. Erst sind die Teile vor dem Spieler weggelaufen. Jetzt verschieben sie sich lustig hoch und runter.
Hier mal der Code (der Bewegungscode ist übrigend von BladeRunner):
Code: [AUSKLAPPEN]
;GFX laden und Varaiblen deklarieren
Global Magier = LoadAnimImage ("gfx/Magier5.bmp",32,32,0,12)
MaskImage Magier, 255, 0, 255
Const HOCH = 9, RUNTER = 3, LINKS = 6, RECHTS = 0
Global movetimer = MilliSecs()
Global Score = 0, Lives = -1
Global Item=LoadImage("gfx/tut2.bmp")
MaskImage Item, 255,0,255

;px Variable des Spielers
Global px = 10
;py Variable des Spielers
Global py = 9
;Direckt move = 1 damit die Figur auch am Anfang sichbar ist
move = 1

Repeat
      Lives = 3         ;Lebenszahl auf 3 erhöhen
      score = 0         ;Punkte zurücksetzen
      setuplevel()
SetBuffer BackBuffer()
Cls
;Karte malen (vorher definiert mit dim map)
For y = 0 To 49
For x = 0 To 49
DrawImage tileset,x*32-scrollx,y*32-scrolly,map(x,y)
Next
Next

moving=False ;steht denn der alte holzmichel noch, ja der steht noch... (BladeRunner:DANKE!)

If KeyDown(208) Then
;wenn die position des spielers (px,py+1) mit einem tile kollidiert, dass in der array einen anderen
;wert als 8 hat geht der if-satz nicht weiter und die figur bleibt stehen 
;die 8 ist gleichzeitig das frame des tilesets
If map(px,py+1) = 8 Then
;die figur wird um ein tile bewegt
      py=py+1
        richtung = RUNTER
;die variable scrollx/y wird verändert und beim nächsten mal
;wenn die hauptschleife durchlaufen wird. malt man die karte halt
;an der position x/y-scrollx/y gemalt
;achja und - 32 weil die figur sich auch nur um 32 pixel
;bewegt.
scrolly = scrolly + 32
;überträgt die spielerkoordinaten auf die x und y variablen der map und malt unsere figur
move = 1
moving=True
    EndIf
EndIf
;(analog für die anderen Richtungen)

;ANIMATIONSLOGIK
    If timer <MilliSecs() ;alle 100 ms wird weiteranimiert
        timer = MilliSecs() +100 ;timer resetten
        frame = frame +1 ;frame weiterzählen
        frame = frame Mod 3 ;der modulo sorgt dafür das frame zwischen 0 und 3 bleibt
    EndIf

    If moving = False
        frame = 0 ;und wenn nix gedrückt wird wird auch nichts animiert.
    EndIf
   
   ;BEWEGUNG
   If movetimer < MilliSecs() Then
      movetimer = MilliSecs() +25 ;Bewegung findet nur maximal alle 25 ms statt, sprich: maximal 40 Pixel/Sekunde
      If moving = True Then ;und nur wenn auch noch bewegt werden soll
         Select richtung
            Case HOCH
               If y >0 Then y = y-1
            Case RUNTER
               If y < GraphicsHeight()-32 Then y = y +1
            Case LINKS
               If x >0 Then x = x-1
            Case RECHTS
               If x < GraphicsWidth()-32 Then x = x +1
         End Select
      EndIf
   EndIf

;OUTPUT
 ;wenn move = 1 dann übertrage x auf px*32
If move = 1 Then x = px * 32: y = py * 32:DrawImage Magier,x-scrollx,y-scrolly,richtung+frame: Delay 100

DrawItem()
DrawPoints()

Flip
Forever
FreeImage tileset
FreeImage Magier
End

;Types für die Items
Global anzahl=0
Global info.item

Type item
Field tx
Field ty
End Type

; Die Tüten malen
Function DrawItem()
   For info.item = Each item               ; Alle Items abfragen
      DrawImage Item, info\tx*32-px-scrollx, info\ty*32-py-scrolly ;Items malen
   Next
End Function

Function DrawPoints()   ;Zeichnet den Punktestand und die Leben auf den Bildschirm
   Text 10 ,10, "Lives :"
   Text 80 ,10, Lives
   Text 300,10, "Score :"
   Text 380,10, score
End Function

Function SetupLevel()
;Itemdaten lesen
Restore item_level1
Read anzahl   ;der erste Wert in der Dataschleife gibt die Anzahl der Items an
For i = 1 To anzahl      ;Zählt durch die einzelnen Einträge 
   info.item = New item   ;Neues Item erstellen
   Read x, y            ;Koordinaten lesen
   info\tx = x         ;x und y Werte an dem Typ übergeben
   info\ty = y
Next    
End Function

; Hier sind die Daten abgelegt, die zur Positionierung der Items notwendig sind
.item_level1
Data 18
Data 2,3 ;oben links
Data 3,3
Data 4,3
Data 5,3
Data 12,3 ;oben rechts
Data 13,3
Data 14,3
Data 15,3
Data 16,3
Data 2,10 ;unten links
Data 3,10
Data 4,10
Data 5,10
Data 12,10 ;unten rechts
Data 13,10
Data 14,10
Data 15,10
Data 16,10

Die Items werden dort angezeigt, wo sie sollen. Laufen aber weg. Ich muss wohl irgendwie die scroll-variable mitberechnen, aber wie man oben sieht, habe ich das schon versucht.
Könnte mir da bitte jemand helfen? Ich weiß dass der Code ziemlich lang is... Aber wenn ich ihn verkürze fehlt wieder was was man zum verstehen braucht.
Danke schonmal!

Jan_

Ehemaliger Admin

BeitragFr, Apr 11, 2008 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaube du musst nur:
Code: [AUSKLAPPEN]
DrawImage Item, info\tx*32-px-scrollx, info\ty*32-py-scrolly

zu
[codeDrawImage Item, info\tx*32-scrollx, info\ty*32-scrolly][/code]
ändern
between angels and insects

Sereyanne

BeitragMo, Apr 14, 2008 8:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antwort.
Es funzt leider auch nicht. Ich habe es mit Dim anstatt mit Types probiert, dann geht es...

The_Nici

BeitragMo, Apr 14, 2008 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Sereyanne, vielleicht hast du eine etwas seltsame Blitzversion, aber als ich dir ein beispielcode gepostet habe hättest du von dort ja eigentlich sehen müssen was man für Scrolling machen muss, und du hast es scheinbar nicht begriffen.
Ich hab zwar dort PixelToPixel-Scrolling gemacht, aber ich denk der Unterschied ist kaum relevant.
Schau es dir nochmals an und überlege, was du falsch machst...

Sereyanne

BeitragDi, Apr 15, 2008 8:09
Antworten mit Zitat
Benutzer-Profile anzeigen
hab ich mir schon angesehen. mach ich aber gleich nochmal. danke jedenfalls!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group