Kollisonsabfrage
Übersicht

GastBetreff: Kollisonsabfrage |
![]() 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... ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Solange deine Tasten gedrückt sind wird der Sound bei jedem Schleifendurchgang abgespielt. Bei 60fps wären das dann 60 Schüsse pro Sekunde. ![]() cu |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group