GTA Steuerung / Map Scrolling (oder so?)

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

ChrisKringel

Betreff: GTA Steuerung / Map Scrolling (oder so?)

BeitragDo, Apr 26, 2007 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

also da ich mich nun ein wenig in Blitz max Eingearbeitet habe, versuche ich mich nun am OOP. Also versuche ich mal ein Auto mit den Pfeiltasten rauf und runterfahren zu lassen.
So jetzt solls aber ned nur rauf und runter sondern auch Links- und Rechts- kurven machen können. Jetzt sieht das mit der Sinus/Cosinus Methode ein wenig komisch aus. Den Quelltext und dei Datein gibt es hier


webspace200.we.funpic.de/Forum_Sachen/


Meine Zweite Frage: wenn ich die Steuerung nun klappt soll man ja auch irgendwo rumfahren können. auf 1024 x 768 Pixeln is dafür ein bisschen zu wenig Platz. Wenn man sich mal so ein 2D Rollenspiel anschaut fährt man da ja mit einem Sichtfeld über eine viel größere Map. Gibts dafür ein Tutorial wie man das macht?

MfG Chris

€dit: So noch eine Frage: Wie macht man einen Ladebalken? Falls eine große Datei geladen wird und das Programm nix macht, damit der Benutzer ned denkt, dass es sich aufgehängt hat?

Rone

BeitragDo, Apr 26, 2007 21:52
Antworten mit Zitat
Benutzer-Profile anzeigen
moin,

zum Thema OO in BlitzMax, gibt es hier im Forum tutorials.
Einfach mal in der Tutorial Sektion von BlitzMax gucken:https://www.blitzforum.de/forum/viewforum.php?f=40

Zitat:
Jetzt sieht das mit der Sinus/Cosinus Methode ein wenig komisch aus. Den Quelltext und dei Datein gibt es hier


Kann kein Sin oder Cos in deinem Source finden. Aber generell geht das so:

Code: [AUSKLAPPEN]
XPos :+ ( Speed*Sin(Winkel) )
YPos :- ( Speed*Cos(Winkel) )


Demnach könnte die Player Klasse folgendermaßen aussehen:

Code: [AUSKLAPPEN]
Type TPlayer

   Field XPos:Float
   Field Ypos:Float
   Field rotation:Float

   Method Create:TPlayer()
      Return Self
   End Method
   
   Method Deatroy()
      'Speicher freigeben
   End Method
   
   Method Move()
   
      If KeyHit (KEY_UP)
         Speed :+1
      ElseIf KeyHit (KEY_DOWN)
         Speed :-1
      EndIf
      
      If KeyDown (KEY_RIGHT)
         Rotation :+1
      ElseIf KeyDown (KEY_LEFT)
         Rotation :-1
      EndIf
      
      If Speed > 10 Then
          Speed = 10
      ElseIf Spped < -10 Then
         Speed = -10
      EndIf
      
      XPos :+ ( Speed*Sin(Rotation) )
      YPos :- ( Speed*Cos(Rotation) )
      
   End Method
   
   Method Render()
   End Method

End Type


Zum Thema Scrolling gibt es glaube ich genug im Forum. Einfach mal die Suche benutzen.
Das mit dem Ladebalken kannst du erstmal knicken, da BlitzMax kein MultiThreading unterstützt. Ein einfacher "Loading" -Text reicht ja erstmal...

mfg Rone

Horst der Biber

BeitragFr, Apr 27, 2007 14:27
Antworten mit Zitat
Benutzer-Profile anzeigen
da hast nen ladebalken

Code: [AUSKLAPPEN]
SuperStrict

Framework BRL.Max2D
Import BRL.GLMax2D
Import BRL.Retro

Type TLadebalken
   Field realpos:Float,realwidth:Float

   Method sync(rpos:Float)
      realpos=rpos
      If realpos>realwidth Then realpos=realwidth
      If realpos<0 Then realpos=0
   End Method

   Method draw()
      Local pos:Float,width:Float

      width=GraphicsWidth()-16
      pos=realpos*(width/realwidth)

      SetColor 255,255,255
      DrawRect 2,GraphicsHeight()*0.5-24+2,width+12,48-4
      SetColor 0,0,0
      DrawRect 5,GraphicsHeight()*0.5-24+5,width+6,48-10
      SetColor 255,255,255
      DrawRect 8,GraphicsHeight()*0.5-24+8,pos,48-16
   End Method

   Function create:TLadebalken(realwidth:Float)
      Local created:TLadebalken=New TLadebalken

      created.realwidth=realwidth

      Return created
   End Function
End Type

Type TLevel
   Field tilemap:Int[1,1]

   Field loading:Byte,stream:TStream
   Field ladebalken:TLadebalken,progress:Int

   Method load(url:String)
      loading=True
      ladebalken=TLadebalken.create(FileSize(url))
      progress=0
      stream=OpenFile(url)
   End Method

   Method update()
      If loading Then
         Print ReadByte(stream)
         progress:+1
         ladebalken.sync(progress)
         If Eof(stream) Then
            CloseFile(stream)
            ladebalken=null
            loading=False
         EndIf
      EndIf
   End Method

   Method draw()
      If loading Then ladebalken.draw()
   End Method
End Type

SetGraphicsDriver GLMax2DDriver()
Graphics 640,480,0,60

Local level:TLevel=New TLevel
level.load("ladebalken.bmx")

Repeat
   level.update()
   Cls
   level.draw()
   Flip 0
Until AppTerminate()
End
 

ChrisKringel

BeitragFr, Apr 27, 2007 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Rone hat Folgendes geschrieben:


Zitat:
Jetzt sieht das mit der Sinus/Cosinus Methode ein wenig komisch aus. Den Quelltext und dei Datein gibt es hier


Kann kein Sin oder Cos in deinem Source finden. Aber generell geht das so:

Code: [AUSKLAPPEN]
XPos :+ ( Speed*Sin(Winkel) )
YPos :- ( Speed*Cos(Winkel) )



^^ upps da hab ich wohl den falschen sourcecode hochgeladen. Embarassed Danke für eure Antworten und den Ladebalken. Jetzt funktioniert alles

MfG Chris

€ zu dem Map zeugs hab ich noch kein Chris geeignetes gefunden Embarassed Das heist doch Tile Map gell?
 

Ticha

BeitragMo, Apr 30, 2007 2:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ladebalken is ja auch nich ganz so grosses Tennis Wink Die Meiste Arbeit die ich damit hatte war zu sehen wie ich ihn baue ob er eher zu gross oder zu klein sei Very Happy

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group