Jetzt lerne ich.....

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

totonak5

Betreff: Jetzt lerne ich.....

BeitragSo, Aug 08, 2004 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Im Buch "Jetzt lerne ich Spiele programmieren mit Blitz Basic" steht auf Seite 215 ein Beispiel mit folgendem Quelltext:

Code: [AUSKLAPPEN]

; KOLLISION1.BB
Graphics 640,480
SetBuffer BackBuffer()
;
; Startdaten für die Bälle
Data 100,100,1,1
Data 200,200,1,-1
Data 300,300,-1,1
Dim Ball(3,4)
; Startdaten einlesen
For I=1 To 3
 For J=1 To 4
  Read Ball(I,J)
 Next
Next
; Hauptschleife
Repeat
 ClsColor 200,200,0
 Cls
 Color 220,220,0
 Rect 50,50,540,380,1

 For I=1 To 3
  ; Randtest
  If Ball(I,1)=50  Then Ball(I,3) = +1
  If Ball(I,1)=555 Then Ball(I,3) = -1
  If Ball(I,2)=50  Then Ball(I,4) = +1
  If Ball(I,2)=395 Then Ball(I,4) = -1
  ; Position ändern
  Ball(I,1) = Ball(I,1) + Ball(I,3)
  Ball(I,2) = Ball(I,2) + Ball(I,4)

  Color 0,0,255
  Oval Ball(I,1),Ball(I,2),36,36,0
 Next
 Flip
 Delay 1
Until KeyHit(1)
WaitKey


Wie kann ich es einstellen, dass sich die Bälle schneller bewegen?

lg Aron

Markus2

BeitragSo, Aug 08, 2004 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
So :
Code: [AUSKLAPPEN]

Graphics 640,480,16,2
SetBuffer BackBuffer()
;
; Startdaten für die Bälle

;Pos XY Geschwindigkeit XY

Data 100,100,5,5
Data 200,200,5,-5
Data 300,300,-5,5
Dim Ball(3,4)
; Startdaten einlesen
For I=1 To 3
For J=1 To 4
Read Ball(I,J)
Next
Next
; Hauptschleife
Repeat
ClsColor 200,200,0
Cls
Color 220,220,0
Rect 50,50,540,380,1

For I=1 To 3
; Randtest
 If Ball(I,1)<50 Then Ball(I,3) = 5 ;< neue Geschwindigkeit bzw. Richtung
 If Ball(I,1)>555 Then Ball(I,3) = -5
 If Ball(I,2)<50 Then Ball(I,4) = 5
 If Ball(I,2)>395 Then Ball(I,4) = -5
 ; Position ändern 
 Ball(I,1) = Ball(I,1) + Ball(I,3)
 Ball(I,2) = Ball(I,2) + Ball(I,4)

  Color 0,0,255
  Oval Ball(I,1),Ball(I,2),36,36,0
 Next
 Flip
 Delay 10
Until KeyHit(1)
End



Und so fände ich schöner
weil man dann nur die Datas bearbeiten braucht .
Code: [AUSKLAPPEN]

 If Ball(I,1)<50 Then Ball(I,3) = Abs(Ball(I,3))
 If Ball(I,1)>555 Then Ball(I,3) = -Abs(Ball(I,3))
 If Ball(I,2)<50 Then Ball(I,4) = Abs(Ball(I,4))
 If Ball(I,2)>395 Then Ball(I,4) = -Abs(Ball(I,4))

Kabelbinder

Sieger des WM-Contest 2006

BeitragSo, Aug 08, 2004 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habe das Beispiel aus dem Buch auch ausprobiert und, das es aber nicht für weiteres ausreicht, da die Kollision nur für sehr schmale Bereiche(linien) gilt. Ich finde, man sollte es so ergänzen:

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

Const speed = 5
;
; Startdaten für die Bälle
Data 100,100,speed,speed
Data 200,200,speed,-speed
Data 300,300,-speed,speed
Dim Ball(3,4)
; Startdaten einlesen
For I=1 To 3
For J=1 To 4
Read Ball(I,J)
Next
Next
; Hauptschleife
Repeat
ClsColor 200,200,0
Cls
Color 220,220,0
Rect 50,50,540,380,1

For I=1 To 3
; Randtest
If Ball(I,1)<=50 Then
Ball(I,1) = 50
Ball(I,3) = +speed
EndIf
If Ball(I,1)>=555 Then
Ball(I,1) = 555
Ball(I,3) = -speed
EndIf
If Ball(I,2)<=50 Then
Ball(I,2) = 50
Ball(I,4) = +speed
EndIf
If Ball(I,2)>=395 Then
Ball(I,2) = 395
Ball(I,4) = -speed
EndIf
; Position ändern
Ball(I,1) = Ball(I,1) + Ball(I,3)
Ball(I,2) = Ball(I,2) + Ball(I,4)

Color 0,0,255
Oval Ball(I,1),Ball(I,2),36,36,0
Next
Flip
Delay 1
Until KeyHit(1)
WaitKey



wenn der ball außerhalb der grenze ist, wird er erst innerhalb der Grenzen platziert und dann seine Richtung geändert.

(In zeile 3 findest du eine Konstante, mit der du das Speed regulieren kannst.)

Es ist nie verkehrt mal ein Beispiel aus dem Buch abzuändern oder zu ergänzen Very Happy .

Viel Erfolg weiterhin!
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Chester

BeitragDi, Aug 10, 2004 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
gibts das buch auch online irgendwo anzuschauen Question
 

Timo

BeitragDi, Aug 10, 2004 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
denk mal nicht, sonst würds ja keiner mehr kaufen!
 

Retro

BeitragMi, Aug 11, 2004 1:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Buch ist ein Pflichtkauf! Ich lese abends immer 10 Seiten in Ruhe durch... und bald bin ich fertig Smile Das heißt dann nicht automatisch, daß ich alles kann, aber ich kann mich garantiert an beschriebene Lösungen oder Befehle erinnern.
 

Dreamora

BeitragMi, Aug 11, 2004 2:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du alle übungen selbst machst und verstanden hast schon, sonst is es reine zeitverschwendung.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Schummelwelt.de

BeitragMi, Aug 11, 2004 8:42
Antworten mit Zitat
Benutzer-Profile anzeigen
@ChEsTer

Bei eBay gibt es das Buch für 9,95€ NEU. Bei Amazon kostet es 25€.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group