Zufällige Bewgungen (Anfänger)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Gero

Betreff: Zufällige Bewgungen (Anfänger)

BeitragFr, Dez 17, 2010 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute brauche dringend Hilfe......
Ich bin völliger Neuling und brauch desswegen auch eine ausfühliche Erklärungen und einfache Anfänger-Befehle.....

Also mein Problem:
Ich möchte das die Kanone unten sich zufällig nach links oder rechts Bewegt...
Dabei sollte meine Spielfigur sich normal Bewegen können...
Da die Kanone später auch noch schießen soll, muss sie sich wirklich Pixel für Pixel bewgen

Aber sie ist viel zu schnell!

Ein Delay kann ich nicht einbauen da dann auch meine Spielfigur hackt....
Die Kanone soll sich beispielsweise rein zufällig mal ein gutes Stück nach links gleiten danch ein kleiners nach rechts und dann noch ein mittleres nach rechts..

Danke schonmal im Voraus für Hilfe....

PS:Haltet es bitte einfach!!






Der Code:







Graphics (1300,800)

hintergrund=LoadImage("Lava Hintergrund gerade.bmp")

gameover=LoadImage("Gameover.bmp")

gegner=LoadImage("gegner.bmp")
ScaleImage gegner,2.0,2.0

smiley=LoadImage("Smiley.bmp")
MaskImage smiley,255,255,255
ScaleImage smiley,0.36,0.36

Kanone1=LoadImage ("Kanone.bmp")
MaskImage Kanone1,255,255,255

Global techno=LoadSound ("techno.mp3")
Global fail=LoadSound ("fail.mp3")





x=600 ;Mein Spawnpoint
y=350



SeedRnd MilliSecs()



xk1=Rand(100,1050) ;Spawnpoint Kanone 1
yk1=550


anfangszeit=MilliSecs()

levelmusik = PlayMusic ("techno.mp3")

SetBuffer BackBuffer()
While Not KeyHit(1)


DrawBlock hintergrund,0,0
endzeit=MilliSecs()


If KeyDown (205) x=x+7
If KeyDown (203) x=x-7
If KeyDown (208) y=y+7 ;Bewegung
If KeyDown (200) y=y-7

If x=>1142 Then x=x-7
If y=>642 Then y=y-7 ;Begrenzungen
If x=<100 Then x=x+7
If y=<100 Then y=y+7


DrawImage (smiley,x,y,0) ;Smiley



timer(anfangszeit,endzeit,zeit)


zufall1 = Rand(1,2)


If zufall1=1 Then
For i=0 To Rand (10,40)
xk1=xk1+1
DrawImage Kanone1 ,xk1,yk1
Next


Else
For i=0 To Rand (10,40)
xk1=xk1-1
DrawImage Kanone1 ,xk1,yk1
Next
EndIf




Flip
Wend
End







Function timer(endzeit,anfangszeit,zeit)
zeit=anfangszeit-endzeit
zeit=zeit/1000
Locate (650,0)
font = LoadFont ("Arial,15,1")
SetFont font
Print zeit
End Function

Xeres

Moderator

BeitragFr, Dez 17, 2010 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du Anfänger bist, poste doch in Zukunft in den "Beginners-Corner".
Wenn du Code postest, dann bitte mit den Code Tags.
Speziell zu dem Problem würde ich nach "Timer" & Millisecs im Forum suchen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

BladeRunner

Moderator

BeitragFr, Dez 17, 2010 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Ana

BeitragSa, Dez 18, 2010 1:41
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würde es wie folgt lösen
BlitzBasic: [AUSKLAPPEN]
Type Tkanone
Field x ; Aktuelle x koordinate
Field y ; Aktuelle Y Koordinate
Field image ; enthält das image
Field zx ; Ziel X Koordiante
Field zy ; Ziel Y Koordinate
End Type

Function Kanone_draw(k.tkanone)
;Beweget die Kanone falls sich die aktuelle position von der ziel position unterscheidet
If k\zx < k\x Then
k\x = k\x - 1
ElseIf k\zx > k\x
k\x = k\x + 1
Else
Kanone_Set_move(k,Rand(0,Breite),0) ; setzt ein neues Ziel, falls die Ziel position erreicht wurde.
EndIf

DrawImage k\image,k\x,k\y ; Zeichnet die Kanone an der Aktuellen Position
End Function

Function Kanone_Set_move(k,x,y)
k\zx = x
k\zy = y
End Function

;Teil der in der Main loop sein sollte

For k.tkanone = Each tKanone
kanone_draw(k)
Next




Falls du noch nicht mit Types vertraut bist, kannst du alle fields mit globalen variablen ersetzen und alle k\ und die for schleifen weglassen. Dann kannst du natürlich aber nur eine kanone haben und nicht beliebig viele.

Falls noch irgendwas unklar sein sollte, schreib mir einfach.

Ich konnte den code leider nicht testen aber der ist ja eh nicht zum abschreiben sondern zum verstehen Wink
Don't only practice your art,
but force your way into its secrets,
for it and knowledge
can raise human to divine
 

Gero

Betreff: Danke

BeitragSa, Dez 18, 2010 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Anna ich habs jetzt zwar ein wenig anders gemacht, aber die Idee mit der Zielposition war echt klasse...

Vielen Dank nochmal.....

Ana

BeitragSa, Dez 18, 2010 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Das freut mich, ist auch viel besser wenn du es selbst machst Smile
Don't only practice your art,
but force your way into its secrets,
for it and knowledge
can raise human to divine

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group