Scrollen bei dieser GTA Steuerung!?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Ironstorm

Erstklassiger Contest-Veranstalter

Betreff: Scrollen bei dieser GTA Steuerung!?

BeitragFr, Apr 01, 2005 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi @ all!
Also Leuts! Hab das hier mal runtergesaugt. Es funkt auch. ganz toll. Aber wie mache ich jetzt das ich noch Scrollen kann? Hier mal den Code.

BlitzBasic: [AUSKLAPPEN]

Graphics 800,600,16,2
Const ESC = 1,Hoch= 200,Runter=208,Links = 203,Rechts=205 , Space = 57
Const Gas#= 0.06, Traegheit#=0.02, Speedmax=3
Const Lenkspeed = 1
Const Grafk_rotate = 5; hier nur durch 360 teilbares ; 1,2,3,4,5,6,8,9,10,12,15,18,usw.
Const debugmode =1
Anzahlblder_Auto = 360/Grafk_rotate
Dim Auto (Anzahlblder_Auto );AutoGrafik_berechnen max 360 Einzelbilder <

;############################################################################################
; Hier wird das Auto gezeichnet und als image gespeichert
Auto(0) = CreateImage (40,20) ; also nur die erstellen die wirklich gebraucht werden!
Color 128,128,128:Rect 0,0,40,20,1 : Color 255,255,128:Oval 33,3,5,5 :Oval 33,12,5,5
GrabImage Auto(0),0,0
; da die meisten ja ein eigenes Bild nehmen wollen welchen als Image auf der Platte ist
; dann die 3 Zeilen entfernen und durch diese eine ersetzten

;Auto(0) = LoadImage (\"AutoBild.bmp\") ; das Auto sollte nach rechts farhen <<<<<<<<<<<<<<<<
;falls das Auto in eine andere Richting zeigt dreht das Bild mit
;RotateImage Auto(0),90 ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;drehen
;############################################################################################


;Hier werden die benötigten Bilder gedreht
For z = 0 To Anzahlblder_Auto
Auto(z) = CopyImage (Auto(0))
RotateImage Auto(z),z* Grafk_rotate
HandleImage Auto(0),10,10 ; je nach Grösse des Bildes anpassen
Next
;AutoGrafik_berechnen max 360 Einzelbilder ......fertig



;startposition
positionX# = 400 : positionY# = 300

SetBuffer BackBuffer()
While Not KeyDown(ESC);#######################################
; tasten abfrage
Grad#=((Grad+(KeyDown(Rechts)-KeyDown(Links))*Lenkspeed* speed#)+360)Mod 360
Speed# = Speed# +(KeyDown( Hoch) - KeyDown(Runter))*Gas#

If (KeyDown(Hoch)+KeyDown(Runter)) = 0 Then
If Speed# > 0 Then Speed# = Speed# - Traegheit# ;langsam werden
If Speed# < 0 Then Speed# = Speed# + Traegheit# ;langsam werden
If Speed# < Traegheit# And Speed# > (Traegheit#*-1) Then Speed# = 0; völliger Stillstand
End If
If speed# > Speedmax Then speed# = Speedmax
If speed# < (Speedmax*-1) Then speed# = (Speedmax*-1)

;Position ändern Auto
positionX# = positionX# + Cos(Grad) * speed#
positionY# = positionY# + Sin(Grad) * speed#

PositionY# = (PositionY#+GraphicsHeight ()) Mod GraphicsHeight()
PositionX# = (PositionX#+GraphicsWidth ()) Mod GraphicsWidth ()

; berechnung welches Bild angezeigt wird
; Beispiel Grafk_rotate = 5 bedeutet das nur 1 Bild für 5 Gradstufen angezeigt wird

Autograd = (grad+Grafk_rotate/2)/Grafk_rotate
DrawImage Auto(Autograd ),Int(positionX#),Int(positionY#)
;####################################################
Gosub Debug
; speedbremse
While MilliSecs()< fx : Wend : fx = MilliSecs()+16 ;
Flip : Cls:
bwx= bwx +1:If MilliSecs() > oltZeit + 999 BW = bwx:bwx = 0: oltZeit= MilliSecs() ;FPS

Wend :End;#################################################
.Debug
Text 10,10 ,\"FPS: \" + BW:
Text 10,30 ,\"Speed: \" + Speed#
Text 10,50 ,\"Lenkspeed: \" + Lenkspeed
Text 10,70 ,\"Grad: \" + Grad
Text 10,90 ,\"Grad des Bildes:\" +Autograd*Grafk_rotate
Return
..:: blackbird design : blackbird photography : Futuro Verde : X-Commander ::..
MacBook | Intel Core 2 Duo 2,1 GHz | 2048 MB RAM | 80 GB HDD | Mac OS X 10.6.2 (Snow Leopard) | Adobe CS4 Design Premium

Tobchen

BeitragFr, Apr 01, 2005 23:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe einfachBlitzBasic: [AUSKLAPPEN]
ScrollX = PositionX-320:ScrollY = PositionY-320
eingefügt. Möglicherweise sollte man die Subtrahenden ändern. Malen tu ich das Bild dann in etwa so:BlitzBasic: [AUSKLAPPEN]
DrawImage  Auto(Autograd ),Int(positionX#)-ScrollX,Int(positionY#)-ScrollY

Meiner Meinung nach ganz einfach. Auch andere Bilder malt man dann mit -ScrollX und -ScrollY. Wie vorhin geschrieben: Wirklich einfach. Vielleicht gibt's bessere Lösungen.

Edit: Damit man sieht, dass das Auto fährt, kanst du ja noch einBlitzBasic: [AUSKLAPPEN]
Rect 200-ScrollX, 200-ScrollY, 20, 20
Quadrat hinsetzen. Sieht ganz toll aus.
Tobchen - die Welt von Tobi!

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Apr 02, 2005 0:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ich denke mal das das Auto in der mitte fahren soll und der Hintergrund sich bewegt!
ganz wichtig ist nicht die Steuerung auf das hintergrund Bild zu übertragen, sondern so wie jetzt den Wagen fahren zu lassen!
mal angenomen du fährst mit dem Auto auf die Pixel 3000,2000
dann sieht man es ja nicht mehr!
Also müstest du den passenden Ausschnitt auf den Monitor anzeigen
also die Koordinaten x = 2600-3400 und 1700-2300 für Y bei einer Auflösung von 800/600.
So jetzt must du die Map nicht bei 0/0 zeichnen sondern bei -2600,-1700

und das wird so berrechnet! ähnlich wie es Tobi geschrieben hat
BlitzBasic: [AUSKLAPPEN]
    ScrollX = PositionX - GraphicsWidth ()/ 2
ScrollY = PositionY - GraphicsHeight() / 2

da das ja normalerweise ein Positiver Wert ist rechnest du diesen immer
beim zeichnen von Sachen die auf der Map sind mit Code: [AUSKLAPPEN]
-Scroll
..
also so wie Tobi es gezeigt hat!
[BB2D | BB3D | BB+]

Ironstorm

Erstklassiger Contest-Veranstalter

BeitragSa, Apr 02, 2005 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ich hab bei meinen anderen Spielen es so gemacht, ich hab einfach anstatt das sich der spieler bewegt einfach das Hintergrundbild bewegt. Aber geht das mit dem Sin und dem Cos???
..:: blackbird design : blackbird photography : Futuro Verde : X-Commander ::..
MacBook | Intel Core 2 Duo 2,1 GHz | 2048 MB RAM | 80 GB HDD | Mac OS X 10.6.2 (Snow Leopard) | Adobe CS4 Design Premium

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Apr 02, 2005 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich geht das
Hier der Beweis:
http://people.freenet.de/ralli...tSpiel.exe
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group