Speed für ball,nur wie ?! _-_

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Rob_

Betreff: Speed für ball,nur wie ?! _-_

BeitragSo, Jul 18, 2004 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Hier bin daran so ein kleines spiel zumachen um mein wissen auszupeppen mit types und so, das ist ein kleines noch nicht fertig spiel.
Ich bekomme es nicht hin das sich die bälle nach 10 punkten im score schneller bewegen.

Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()

   Type balls
      Field x
      Field y
      Field nx
      Field ny
      Field speed
      Field r
      Field g
      Field b
   End Type
   
   For b = 1 To 10
      ball.balls = New balls
      ball\x = Rnd(0,640)
      ball\y = Rnd(0,480)
      ball\nx= Rnd(0,640)
      ball\ny= Rnd(0,480)
      ball\speed = 0
      ball\r = Rnd(255)
      ball\g = Rnd(255)
      ball\b = Rnd(255)
   Next
   
   While Not KeyHit(1)
   
   Cls
   
   If MilliSecs () > scoretimer + 500
      score = score +1
      scoretimer = MilliSecs ()
   EndIf
   
      
   For ball = Each balls
   Color ball\r,ball\g,ball\b
   
   
   If ball\nx > ball\x Then ball\x = ball\x +ball\speed
   If ball\nx < ball\x Then ball\x = ball\x -ball\speed
   If ball\ny > ball\y Then ball\y = ball\y +ball\speed
   If ball\ny < ball\y Then ball\y = ball\y -ball\speed
      
   If ball\nx = ball\x Then ball\nx = Rnd(0,640) + ball\speed
   If ball\ny = ball\y Then ball\ny = Rnd(0,480) - ball\speed
   
   If score = 1 Then ball\speed = 1   
   If score = 10 Then ball\speed =+2 
      
      Oval ball\x,ball\y,30,30,1   
   Next
   
   
   Text 10,10,"Score: "+score

   Flip
   Wend
   End


Bei "If score = 1 Then ball\speed = 1" laufen die bälle normal,
aber wenn der ball speed bei 2 ist sind sie schneller, aber bleiben stehen
nach einer kurzen weile.

(könnt ihr mir, die profis unter euch sagen ob der code gut aufgebaut ist?)

Thx

grüsse
Rob_
AMD Athlon 64 3500+ | Infineon 1 GB DDR RAM | nVidia Geforce 7800 GTX

soli

BeitragMo, Jul 19, 2004 2:48
Antworten mit Zitat
Benutzer-Profile anzeigen
ball\nx und ball\ny
sind bei dir keine Aussenbegrenzungen
sondern liegen in der Mitte,
darum wird irgendwann
der Speed zuerst addiert und dann
sofort wieder subrahiert.

soli
solitaire

Rob_

BeitragMo, Jul 19, 2004 7:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, nx sollte die "neue, x" koordinate sein.
Damit sich die punkte random bewegen, das ich doch richtig?
Oder brauche ich nicht extra noch zwei werte dafür ? Confused
Das gibt mir echt zu denken! Question
AMD Athlon 64 3500+ | Infineon 1 GB DDR RAM | nVidia Geforce 7800 GTX
 

Edlothiol

BeitragMo, Jul 19, 2004 8:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
   If score = 10 Then ball\speed =+2 

Ich denk mal du wolltest da sowas wie += machen, das gibts in BB nicht.Code: [AUSKLAPPEN]
If score = 10 Then ball\speed = ball\speed + 2
Oder, wenn du immer alle 10 Punkte die Speederhöhung haben willst:Code: [AUSKLAPPEN]
If score Mod 10 = 0 Then ball\speed = ball\speed + 2

Ansonsten sollte das schon stimmen.

Bigmichi

BeitragMo, Jul 19, 2004 9:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem war an den Ecke gehen du hast ihm +1 und dan direkt -1 gegeben wassen das für sinn ? Smile
Woltl mich nun damit net ärgern un hab so umgeschrieben ddas er direkten weg geht Very Happy falls du immer noch eine Lösung suchst bitte =)

Hab auch geöändert das wenn über 10 imemr ein wenig schneller wird Very Happy
Ab 50 oder so entstehen witzige Bildas Very Happy

Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()

   Type balls
      Field x
      Field y
      Field nx
      Field ny
      Field speed
      Field r
      Field g
      Field b
   End Type

   For b = 1 To 10
      ball.balls = New balls
      ball\x = Rnd(0,640)
      ball\y = Rnd(0,480)
      ball\nx= Rnd(0,640)
      ball\ny= Rnd(0,480)
      ball\speed = 0
      ball\r = Rnd(255)
      ball\g = Rnd(255)
      ball\b = Rnd(255)
   Next

   While Not KeyHit(1)

   Cls




   IF Timer + 500 < MILLISECS() THEN
      score = score +1

      For ball = Each balls

        IF score = 1 Then ball\speed =  1
        IF score > 10 Then ball\speed = ball\speed + 1

      NEXT
     
      Timer = MILLISECS()
   END IF






   For ball = EACH balls
   Color ball\r,ball\g,ball\b


   x2# = Ball\nx
   y2# = Ball\ny

   eckx# = Ball\X
   ecky# = y2#
   schritt# = Sqr((eckx# - x2#)^2+(ecky# - Ball\Y)^2)/Ball\Speed
   IF schritt# < 1 Then schritt# = 1
   schiebx# = (x2# - eckx#)/schritt#
   schieby# = (Ball\Y - ecky#)/schritt#
   Ball\X = Ball\X + schiebx#
   Ball\Y = Ball\Y - schieby#


   If ball\nx = ball\x Then ball\nx = Rnd(0,640) + ball\speed
   If ball\ny = ball\y Then ball\ny = Rnd(0,480) - ball\speed



      Oval ball\x,ball\y,30,30,1
   Next


   Text 10,10,"Score: "+score

   Flip
   Wend
   End

Bob

BeitragMo, Jul 19, 2004 11:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Idea Question
Ist ja eine ähnliche Problematik.
Siehe auch
https://www.blitzforum.de/viewtopic.php?t=4688

Rob_

BeitragMo, Jul 19, 2004 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
hey jau! gut das hilft mir sicher weiter THX

Rob_
AMD Athlon 64 3500+ | Infineon 1 GB DDR RAM | nVidia Geforce 7800 GTX

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group