08/15 GTA Steuerung Auto

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Rallimen

Sieger des 30-EUR-Wettbewerbs

Betreff: 08/15 GTA Steuerung Auto

BeitragSo, Mai 09, 2004 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Nochmal eine GTA Steuerung, aber diesmal mit AutoBlitzBasic: [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 <
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
For z = 0 To Anzahlblder_Auto
Auto(z) = CopyImage (Auto(0))
RotateImage Auto(z),z* Grafk_rotate
HandleImage Auto(0),10,10
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

EDITZitat:
Hab jetzt noch eine Simple Speedbremse eingebaut!
[BB2D | BB3D | BB+]
  • Zuletzt bearbeitet von Rallimen am So, Mai 09, 2004 20:53, insgesamt einmal bearbeitet

Shadow of the night

BeitragSo, Mai 09, 2004 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hehe 721 fps 8)
ich glaub ich ergänze den code noch mit Vwait
User posted image
 

IonPainter

BeitragSo, Mai 09, 2004 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
1341 Fps... Surprised Surprised Very Happy

rambo256

BeitragMo, Mai 10, 2004 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
wo genau ist die speed-bremse?
damit ich sie ausbauen kann und dann testen kann wieviel fps ich hab
hehehe

hat sich schon erledigt...
 

desperado

BeitragMo, Jul 12, 2004 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
lol irgentwie krieg ich beim verändern -593035264 fps raus Oo mach ich irgentwas falsch? Shocked


http://desperado12.funpic.de/fps.JPG
Hier sollte eigentlich eine Signatur stehen
 

Blitzkrieg Bop

BeitragMo, Jul 12, 2004 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Link geht nicht!..
~ Hey Ho Let's Go ~

Jan_

Ehemaliger Admin

BeitragDi, Jul 13, 2004 8:03
Antworten mit Zitat
Benutzer-Profile anzeigen
*schlägt zu*

was steht dort?
Externes linken verboten?!
dann füge einfach in das verbot fenster den Link nochmal ein!
--> funzt!
Desperado ist arm und kann sich keinen richtigen webspace leisten!
between angels and insects
 

Blitzkrieg Bop

BeitragDi, Jul 13, 2004 12:04
Antworten mit Zitat
Benutzer-Profile anzeigen
lol Very Happy
Naja komisch, heute gehts irgendwie Wink
~ Hey Ho Let's Go ~
 

Lion

BeitragMo, Jul 19, 2004 23:48
Antworten mit Zitat
Benutzer-Profile anzeigen
wer ein wirbelndes Auto will Very Happy Very Happy Smile
Code:

Code: [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 <
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
For z = 0 To Anzahlblder_Auto
Auto(z) = CopyImage (Auto(0))
RotateImage Auto(z),z* Grafk_rotate
HandleImage Auto(0),10,10
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#)+9999)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
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb
AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x
 

x.Force

BeitragDi, Jul 20, 2004 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
jetzt hab ich ein schleuder trauma Rolling Eyes

AMD Athlon XP 2000+ | 1024mb DDR-Ram | Asus Radeon 9600XT | BENQ FP757 17°Zoll TFT

Was kümmert mich mein Geschwätz von gestern? (Konrad Adenauer) -.-
 

desperado

BeitragDi, Jul 20, 2004 10:37
Antworten mit Zitat
Benutzer-Profile anzeigen
ich auch Wink
Hier sollte eigentlich eine Signatur stehen
 

hot-bit

Gast

BeitragDi, Jul 20, 2004 18:09
Antworten mit Zitat
Hööö,

und ich denke, ich sitz in einer Waschmaschine, bei der gerade das Schleuder- Programm abläuft !

Wink

Toni
 

woody

BeitragSa, Jul 24, 2004 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
irgendwie schaff ich es nicht, diese Steuerung auf mein Spiel zu übertragen. Hier wird ja kein Image benutzt, bei meinem Spiel schon. Nur kenn ich mich mit den ganzen Imagebuffern, createimage u.s.w., welche ich dafür brauche, nichts aus. Könnt ihr mir helfen Question Question Question Question Question Question Question
thx im Voraus

MVB

BeitragSa, Jul 24, 2004 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
www.blitzbase.de
aquamonit.de|BlitzMax|MaxGUI
 

woody

BeitragSa, Jul 24, 2004 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
ich weiß aber noch nicht mal, welche Befehle ich brauche, das da oben war nur so aus dem Bauch raus. ich weiß auch nicht, wie ich sie überhaupt einsetzen soll.
 

x.Force

BeitragSa, Jul 24, 2004 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
loadimage
brauchst du statt createimage und setbuffer...

AMD Athlon XP 2000+ | 1024mb DDR-Ram | Asus Radeon 9600XT | BENQ FP757 17°Zoll TFT

Was kümmert mich mein Geschwätz von gestern? (Konrad Adenauer) -.-
 

woody

BeitragSa, Jul 24, 2004 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
so ein n00b bin ich aber auch nicht, ich will meine Figur 360mal um einen Grad drehen und alles in einem Array speichern, aber ich weiß nicht, wie ich das machen soll, mit dem Imagebuffer und createimage, was ich meiner Meinung nach bruache dafür.
 

Apocalyptic

BeitragSo, Jul 25, 2004 11:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Nimm CopyImage und RotateImage

Ungefähr so:

BlitzBasic: [AUSKLAPPEN]
For i=0 To 359
Auto(i)=CopyImage(Auto(0))
RotateImage Auto(i),i
Next


Du brauchst aber nicht jedes einzelne Grad, jedes vierte sollte zum Beispiel auch reichen und das spart Speicher. Und bei RotateImage musst du mit dem 2. Parameter evt etwas rumspielen, je nach Winkel des Autos im Bild und der Verwendung im Spiel. (zB: RotateImage Auto(i),360-i etc)
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]

Wild-Storm

BeitragSo, Jul 25, 2004 11:15
Antworten mit Zitat
Benutzer-Profile anzeigen
lol, ohne speedbremse habe ich 2800 fps Very Happy
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Jul 25, 2004 12:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier hab ich den Code noch erwitert wegen des Imagebildes, hab die Zeilen Markiert die ersetzt bzw geändert werden müssenBlitzBasic: [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
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group