Kollisonsabfrage

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Gast

Betreff: Kollisonsabfrage

BeitragSa, Jul 07, 2007 12:10
Antworten mit Zitat
Ich hab beim suchen kein passenden beitrag gefunden, also post ich das jetzt mal hier:
weinn ich in meinem programm,
laufen lasse, dann gibt es wegen der kollisonsabrage ein Graoses Problem.
Der sound schsson wird ewigschnell und of gespielt, das mein pc beim widergeben von anderen sound komplett abstürtzt.
wenn ich das prog. beende, die sounds neu starte tut es wieder....
hab ich nen fehler im
Code: [AUSKLAPPEN]

Graphics 800, 600
AppTitle "Shooter"
SetBuffer BackBuffer()
;
; Vorbereitungen
;
hinter = LoadImage("wolken.bmp")
schiff = LoadImage("spaceship2.bmp")
alienbild = LoadImage("player.bmp")
rakete = LoadImage("laser.bmp")
schusston = LoadSound("sfx1.wav")
stern = LoadImage("star1.bmp")
musik = LoadSound("haunting.mp3")
oo1 = LoadAnimImage("exploodeC.bmp" ,32,32,0,9)
Dim Rak(20,2)
Dim Alien(5,2)
PlaySound(musik)
X = 400 ; Startposition unseres Schiffes
Y = 300
;
; Hauptschleife
;
Repeat
 Cls
 H = H+1
 TileBlock hinter,0,H
 DrawImage schiff, X,Y
;
; Tastatur Schuß-Test
;
  If KeyDown(57) Then
  Schuss = Schuss + 1
  If Schuss = 21 Then Schuss = 1
  Rak(Schuss,0) = 1
  Rak(Schuss,1) = X+10
  Rak(Schuss,2) = Y-19
  PlaySound(schusston)
 EndIf
;
; Joystick Schuß-Test
;
  If GetJoy() >= 1 Then
  Schuss = Schuss + 1
  If Schuss = 21 Then Schuss = 1
  Rak(Schuss,0) = 1
  Rak(Schuss,1) = X+10
  Rak(Schuss,2) = Y-19
  PlaySound(schusston)
 EndIf
;
; Cheats
;
MOUSE = GetMouse()
If MOUSE = 2 Then Cheat = Input$("Cheat: ")
If Cheat = 9 Then Punkte = Punkte +1000
;
; ggf. Raketen zeichnen
;
 For I=1 To 20
  If Rak(I,0) = 1 Then
   DrawImage rakete, Rak(I,1), Rak(I,2)
   Rak(I,2) = Rak(I,2) - 50
  EndIf
 Next
;
; Pfeiltasten abfragen
;
 If KeyDown(200) = 1 Then Y = Y - 1
 If KeyDown(208) = 1 Then Y = Y + 1
 If KeyDown(205) = 1 Then X = X + 2
 If KeyDown(203) = 1 Then X = X - 2
;
; Analogen Joystick Abfragen
;
 If JoyX() <= -0.1 Then X = X - 2
 If JoyX() >= +0.1 Then X = X + 2
 If JoyY() <= -0.1 Then Y = Y - 1
 If JoyY() >= +0.1 Then Y = Y + 1
 If JoyZ() <= -0.1 Then X = X - 2
 If JoyZ() >= +0.1 Then X = X + 2
;
; Digitalen Joystick Abfragen
;
 If JoyXDir() = -1 Then X = X - 2
 If JoyXDir() = +1 Then X = X + 2
 If JoyYDir() = -1 Then Y = Y - 1
 If JoyYDir() = +1 Then Y = Y + 1

;
; Rand-Überschreitung verhindern
;
 If X < 0 Then X = 0
 If X > 768 Then X = 768
 If Y < 0 Then Y = 0
 If Y > 568 Then Y = 568;
;
; Kollisonsabfrage
;
If ImagesCollide(alienbild,X,Y,0,schiff,X,Y,0) Then PlaySound(schusston)
;
; Fehlende Alien-Schiffe erzeugen
;
 For I=1 To 2
  If Alien(I,0) = 0 Then
   Alien(I,0) = 1
   Alien(I,1) = Rand(580)
   Alien(I,2) = 0
  End If
;
; Neue Koordinaten bestimmen
;
  Waagerecht = Rand(10)
  Select Waagerecht
   Case 1,2
    If Alien(I,1) < X Then
     Alien(I,1) = Alien(I,1) + 1
    Else
     Alien(I,1) = Alien(I,1) - 1
    EndIf
   Case 3
    If Alien(I,1) < X Then
     Alien(I,1) = Alien(I,1) - 1
    Else
     Alien(I,1) = Alien(I,1) + 1
    EndIf
  End Select
  ;
  Senkrecht = Rand(10)
  Select Senkrecht
   Case 8,9,10
    Alien(I,2) = Alien(I,2) + 1
  End Select
  If Alien(I,2) > 480 Then Alien(I,0) = 0
;
; Alien-Schiffe zeichnen
;
 
 ;
 Delay 8
 Flip
If Alien(I,0) = 1 Then
   DrawImage alienbild, Alien(I,1),Alien(I,2)
  EndIf
 Next
Until KeyDown(1)

oder ist mein PC kaputt... Embarassed
was eigentlich nicht seien kann....
ich will(erstmal, das er dan sound abspielt wenn ein "alienbild" mein "schiff"
berührt und eine "rakete" ein alien breührt....
aber, nur 1x . wenn sich 2 alien berühren,soll das nichts machen.....
das proggramm ist noch im aufbau....

Abrexxes

BeitragSa, Jul 07, 2007 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Solange deine Tasten gedrückt sind wird der Sound bei jedem Schleifendurchgang abgespielt. Bei 60fps wären das dann 60 Schüsse pro Sekunde. Wink

cu

DAK

BeitragSa, Jul 07, 2007 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Du must bei einer Kollision eine Variable setzen, die dem Computer sagt, das sie schon kollidiert sind. etwas in der art:
Code: [AUSKLAPPEN]
If ImagesCollide(alienbild,X,Y,0,schiff,X,Y,0) Then
   if collided = 0 then
      PlaySound(schusston)
      collided = 1
   endif
else
   collided = 0
endif
Gewinner der 6. und der 68. BlitzCodeCompo

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group