zu doof für spielersteuerung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Reaper

Betreff: zu doof für spielersteuerung

BeitragSa, Dez 18, 2004 4:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ich denke mal der titel sagt schon alles aus Very Happy
BlitzBasic: [AUSKLAPPEN]
Global x
Global y
Global Spieler
Global Ende
Graphics 640, 480, 16, 1
SetBuffer BackBuffer ()
While Ende = 0
Spieler = LoadImage (\"gfx/playermodel.bmp\")
x = 319
y = 239
DrawBlock Spieler, x, y
If KeyDown(1) Then Ende = 1
If KeyDown(205) Then x = x + 1
Flip
Wend


Das ist der Code, muss ich mich eigentlich immer direkt an die Koordinaten wenden oder wie zum Beispiel in meinem Fall an "Spieler"! [/syntax]
 

fliege

BeitragSa, Dez 18, 2004 7:59
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Du lädst ein Bild in der Schleife (Spieler), dadurch belastest du nur unnötig den rechner...
2. Du setzt ja wieder die x und y - Werte zurück, da kann sich ja dann nichts bewegen... Wink Besser du setzt die Startwerte nur einmal...
3. Wo ist den das Cls??
BlitzBasic: [AUSKLAPPEN]
 
Graphics 640, 480, 16, 1
SetBuffer BackBuffer ()
Global x
Global y
Global Spieler
Global Ende
Spieler = LoadImage (\"gfx/playermodel.bmp\")
x = 319
y = 239
While Ende = 0
Cls
DrawBlock Spieler, x, y
If KeyDown(1) Then Ende = 1
If KeyDown(205) Then x = x + 1
Flip
Wend

Hab's jetzt nur überflogen, aber sollte funktionieren...
Viel glück noch
Fliege

Waveblue

BeitragSa, Dez 18, 2004 11:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Tipp: drück die Tab-Taste, um die Zeilen einzurücken und lass mit Enter ab und zu eine Zeile frei! Das macht den Code übersichtlicher Wink
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
 

Reaper

BeitragSa, Dez 18, 2004 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
thx hat funktioniert!

Jetzt noch eine andere Frage, das spil soll am ende ein 2d-shooter sein, der spieler bewegt sich ich will das aber noch so einstellen das sich der spieler in richtung der Maus dreht und dann auch in diese richtung schießt, geht das vielleicht mit Rotate?
 

Reaper

BeitragSo, Dez 19, 2004 1:17
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry für den doppelpost, aber mit edit wird der thread anscheinend nicht gepinnt, Frage steht im Beitrag über diesen Rolling Eyes

Ok, also Maus anzeigen bring ich jetzt selber zusammen, hof ich halt Laughing
HidePointer hat funktioniert, das andere Problem besteht aber immer noch!

Hubsi

BeitragSo, Dez 19, 2004 12:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Dazu einfach das Bild des Spielers in ein Array (360) laden und das erste Bild in einer Schleife (CopyImage) mit RotateImage drehen. Die gedrehten Bilder natürlich im entsprechenden Index des Arrays speichern. Zum drehen übrigens den Tformfilter ausschalten. Bewegen bzw den entsprechenden Winkel zur Maus herausfinden geht mit Sin(), Cos() und Atan2(). Beispiele gibts dazu im Forum sicher genug. Wenn ich mich recht entsinne gibts sogar ein komplettes Beipspiel im Codearchiv mit einem Auto. Einfach mal danach suchen :D

Edit: Habs schon gefunden (Code von Rallimen):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 <
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
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group