Probleme mit Kollision

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Lachener

Betreff: Probleme mit Kollision

BeitragMo, Feb 07, 2005 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute!
Also bin Programmier Anfänger und will mit einem einfachen Pong-game beginnen!!
Ich bin jetzt so weit dass die 2 Balken kommen man sie auch beide steuern kann und der Ball sich bewegt!
Jetzt habe ich aber 2 Probleme:

1. Wie bekomme ich hin das man die Balken nicht über den Bildshirmrand hinaus steuern kann ??

und 2. mein eigentlich hauptproblem:

Wenn der Ball auf den Schläger trifft wird er nicht zurück gechossen sondern hält einfach nur an! Wie kann ich in zurück schießen lassen??

Quelcode:

Code: [AUSKLAPPEN]
Function Ballbewegen()
  Speed = 2

  Balken1 = LoadImage("Balken1.bmp")         ;
   
  Balken2 = LoadImage("Balken1.bmp")         ;      Laden der Daten und in den Graphic Modus wechsseln

  Ball = LoadImage("Ball.bmp")            ;

  Ballpos1 = Ballpos1 + Speed

  Cls
End Function


[moderiert] Code-Tag gesetzt. wunderkind [/moderiert]

Smokie

BeitragMo, Feb 07, 2005 14:48
Antworten mit Zitat
Benutzer-Profile anzeigen
zu 1. Wenn du willst das der ball nicht über den Bildschirmrand fliegt dann mache es ungefär so
Code: [AUSKLAPPEN]
graphics 640,480
setbuffer backbuffer()
ypos=0
bild=loadimage("bild.bmp")
repeat
cls
drawimage bild,0,ypos
if keydown(205) then ypos= ypos + 1 ;der Ball bewegt sich nach unten
if ypos>479 then ypos=479  ;und der ball bewegt sich nicht übers Bild
flip
until keyhit(1)
End



und zu zweitens benutze mal die Suchfunktion da gibt es ein Haufen themen zu "kolision"
Grüße
M-Soft Studios Mit selbst gemachtem Forum!!!
Unbequem lebt's sich schwer.
Musik macht erst Spaß, wenn man sie mit 2,8 facher Geschwindigkeit hört
Zuletzt bearbeitet von Smokie am Fr Jan 01, 1888 51:58 PM, insgesamt 1000-mal bearbeitet

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Feb 07, 2005 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
nach einer Kollision einfach die Speed umdrehen

Code: [AUSKLAPPEN]
If kolli then speed = speed * -1
Ballx= ballx +speed
[BB2D | BB3D | BB+]

SpionAtom

BeitragMo, Feb 07, 2005 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Rallimen hat Folgendes geschrieben:
nach einer Kollision einfach die Speed umdrehen

Code: [AUSKLAPPEN]
If kolli then speed = speed * -1
Ballx= ballx +speed



Das geht auch, da spart man ganze 2 (in Worten ZWEI) Zeichen
Code: [AUSKLAPPEN]
If kolli then speed = -speed
Ballx= ballx +speed



Außerdem würde ich in der FUNCTION BallBewegen nicht ständig die Bilder neu laden. Das ist unnötig und geht auf die Performance (in deinem Fall bei zwei Grafiken wahrscheinlich noch nicht, aber ich würd mir sowas nicht angewöhnen).

Stattdessen kann man die Variablen für die Bilder am Anfang laden und ihre IDs der Function übergeben.

Guckst du hier:

Code: [AUSKLAPPEN]

  Balken1 = LoadImage("Balken1.bmp")
  Balken2 = LoadImage("Balken1.bmp")
  Ball = LoadImage("Ball.bmp")
.
.
Ballbewegen Balken1, Balken2, Ball, 2
 
Function Ballbewegen(pic1, pic2, picBall, speed)

  Ballpos1 = Ballpos1 + Speed
  Cls
  ;und hier alles malen
End Function
 

Lachener

Betreff: Funzt immer noch nicht!

BeitragMo, Feb 07, 2005 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Function Ballbewegen()

Speed = 2

Balken1 = LoadImage("Balken1.bmp") ;

Balken2 = LoadImage("Balken1.bmp") ; Laden der Daten und in den Graphic Modus wechsseln

Ball = LoadImage("Ball.bmp") ;


If ImagesCollide(Balken2, B2pos1, B2pos2, 0, Ball, Ballpos1, Ballpos2, 0) Then speed = -speed

Ballpos1 = Ballpos1 + speed

Cls

End Function


Wenn ich jetzt starte wird der Ball immer noch nicht zurück geschossen sondern bleibt einfach stehen. Der Ball bewget sich nur in die entgegengestetze Richtung wenn der Ball im balken ist und sobald er davor ist hält er an??

Was soll ich jetz amchen´?

kann mir jemand evtl ein Beispiel Code posten??

Thx im Vorraus
Mfg Fabi

Ebola33

BeitragDi, Feb 08, 2005 0:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja auch ganz klar, weil du am anfang deiner function den speed immer auf 2 setzt, das heisst die umkehrung hat keine wirkung.
speed=2 nur 1x am anfang zuweisen.
Mfg Ebola
ansteckend... Wink
verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group