Kollision haut nicht hin(so langsam wirds dringend)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Flori-D

Betreff: Kollision haut nicht hin(so langsam wirds dringend)

BeitragMo, Dez 22, 2003 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.Was stimmt bei dem Code nicht?
Code: [AUSKLAPPEN]
;Kollision Komet-Spieler
 For I=1 To 50
  If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2), schiff(J,0)) Then
   PlaySound(trefferton)
   Alien(I,0) And schiff(J,0) = -1
  EndIf
 Next
  • Zuletzt bearbeitet von Flori-D am Mo, Dez 22, 2003 19:05, insgesamt 2-mal bearbeitet
 

PsychoMan

BeitragMo, Dez 22, 2003 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaube dass es am "Alien(I,0) And schiff(J,0) = -1" liegt. und hast du eigentlich auch eine schleife für schiff(J,0)? sowas wie:Code: [AUSKLAPPEN]
For J = 0 To 99
    ...
Next
Nokia 3650: Mit Blutooth, GPRS, Java, 4096 Farben, XXL Bildschirm und scheiß Tastatur.

Flori-D

BeitragMo, Dez 22, 2003 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weis nicht so genau wie ich das schiff(schiff(J,0)) bezeichnen soll, denn ich kann doch keine Schleife machen wenn es nur ein Schiff gibt oder?

simi

BeitragMo, Dez 22, 2003 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich das sehe hat ImagesOverlap nur 4 Parameter statt 6.

So wäre es richtig:
ImagesOverlap(alienbild, Alien(I,1), Alien(I,2),schiffbild,schiff(J,1),schiff(J,2))
(Ich weiss ja nicht was die Variablen bedeuten, aber was ist J (Vielleicht I) Question Question Question )

Dann weiter unten, du kannst nicht AND gebrauchen um 2 Variablen den gleichen Wert zuzuweisen.
Arrow Alien(I,0) = -1:schiff(J,0) = -1

cu simi

Flori-D

BeitragMo, Dez 22, 2003 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
probier ich mal(*gespannt sein*)

Flori-D

BeitragMo, Dez 22, 2003 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub mein compiler hat ne make.
Der will bei schiff(J,0) in der Klammer noch anfürungsstriche.
Was kann ich dagegen machen?
Jetziger Code
Code: [AUSKLAPPEN]
;Kollision Komet-Spieler
 For I=1 To 50
 If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2), schiff(J,1),schiff(J,2)) Then
   PlaySound(trefferton);Hier zeigt er immer  Expecting")"
   Alien(I,0) = -1
   schiff(J,0) = -1
 EndIf
Next

So wo is das jetzt bitte der Fehler?
(ich raffs nich ich scheine nur fehler zu machen)
  • Zuletzt bearbeitet von Flori-D am Mo, Dez 22, 2003 14:51, insgesamt einmal bearbeitet

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Dez 22, 2003 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Schick mal code , denn das kann nicht sein! Confused
Ohne code ist es sehr schwierig zu beantworten
wahrscheinlich ne Klammer vergessen oder so...
[BB2D | BB3D | BB+]

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Dez 22, 2003 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
hier liegt der fehler
Code: [AUSKLAPPEN]
 If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2), schiff(J,1),schiff(J,2)) Then
;muß so sein
 If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2),welches bild, schiff(J,1),schiff(J,2)) Then


haste das Bild vergessen!
[BB2D | BB3D | BB+]

Flori-D

BeitragMo, Dez 22, 2003 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
so dann versuch ichs mal

Flori-D

BeitragMo, Dez 22, 2003 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
geht nicht Crying or Very sad
wenn ich starte dann kommt bei schiff(J,0) = -1 Expecting ")"
aber da ust doch kein fehler mehr drinn

Der Code
Code: [AUSKLAPPEN]
;Kollision Komet-Spieler
For I=1 To 50
If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2),  schiff ,schiff(J,1),schiff(J,2)) Then
PlaySound(trefferton)
Alien(I,0) = -1
schiff(J,0) = -1
EndIf
Next

Flori-D

BeitragMo, Dez 22, 2003 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo es läuft,allerdings nur fast!Ich hab das schiff in ein Dim-Feld gespeichert.Jetzt läufts an.Aber ich sehe dann nichts und dann kommt immer die Fehlermeldung "Array Index ot of Bounds".

So siehts jetzt aus
Code: [AUSKLAPPEN]
Dim schi(1,2)
Dim schiExplodiert(1,1)
;Kollision Komet-Spieler
For I=1 To 50
For J=1 To 2
If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2),  schiff ,schi(J,1),schi(J,2)) Then
PlaySound(trefferton)
Alien(I,0) = -1
schi(J,0) = -1
EndIf
Next
Next

Flori-D

BeitragMo, Dez 22, 2003 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
So hab noch was geändert, kann das Schiff jetztFliegen aber jeder Alien explodiert gleich wenn er ins Bild kommt,Hilfeeeeeeeeeee!
Code: [AUSKLAPPEN]
Dim schi(1,2)
Dim schiExplodiert(1,1)
For I=1 To 50
For J=1 To 1
If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2),  schiff ,schi(J,1),schi(J,2)) Then
PlaySound(trefferton)
Alien(I,0) = -1
schi(J,0) = -1
EndIf
Next
Next

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Dez 22, 2003 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
bestimmt eine abrage vergessen, kannste nicht mal den ganzen code
posten?
[BB2D | BB3D | BB+]

Flori-D

BeitragMo, Dez 22, 2003 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
jo, aber nicht lachen.Ich habn nähmlivh nur sem buch mit meinem zeugs abgeändert, hab nicht die Zeit alles neu zuschreiben muss bis nach den ferien fertig sein.
Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()
hinter = LoadImage("stars.bmp")
schiff = LoadImage("R4.bmp")
alienbild = LoadImage("Rock1.bmp")
rakete = LoadImage("bullet.bmp")
explosion = LoadAnimImage("explodeA.bmp", 60,46, 0,6)
schusston = LoadSound("soundfx11.wav")
trefferton = LoadSound("soundfx25.wav")


Dim Rak(100,2)
Dim Alien(50,2)
Dim AlienExplodiert(50,1)
Dim schi(1,2)
Dim schiExplodiert(1,1)
X = 305
Y = 420
;
; Hauptschleife
;

Repeat
 Cls
 H = H+1
 If H=200 Then H=0
 TileBlock hinter,0,H
 DrawImage schiff, X,Y

;Punkte Anzeige
Text 10,10, "Sie haben "+punkte+" Punkte
Punkte = Punkte +1


; Schuß-Test
 If KeyHit(57) Then
 Schuss = Schuss + 1
 If Schuss = 101 Then Schuss = 1
 Rak(Schuss,0) = 1
 Rak(Schuss,1) = X+10
 Rak(Schuss,2) = Y-19
 PlaySound(schusston)
EndIf

; ggf. Raketen zeichnen
 For I=1 To 100
  If Rak(I,0) = 1 Then
   DrawImage rakete, Rak(I,1), Rak(I,2)
   Rak(I,2) = Rak(I,2) - 10
 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


; Rand-Überschreitung verhindern
 If X < 0 Then X = 0
 If X > 609 Then X = 609
 If Y < 0 Then Y = 0
 If Y > 449 Then Y = 449

; Kollision testen
 For I=1 To 100
  If Rak(I,0) <> 0 Then
   For J=1 To 50
    If ImagesOverlap(alienbild, Alien(J,1), Alien(J,2), rakete,Rak(I,1),Rak(I,2)) Then
     PlaySound(trefferton)
     Alien(J,0) = -1
    EndIf
   Next
  EndIf
 Next


; Explosion Alien zeichnen
  For I=1 To 50
   If Alien(I,0) = -1 Then
    If AlienExplodiert(I,1) + 100 < MilliSecs() Then
     AlienExplodiert(I,0) = AlienExplodiert(I,0) + 1
     AlienExplodiert(I,1) = MilliSecs()
     
If AlienExplodiert(I,0) = 6 Then
   AlienExplodiert(I,0) = 0
   AlienExplodiert(I,1) = 0
   Alien(I,0) = 0
  EndIf
 EndIf
 DrawImage explosion, Alien(I,1), Alien(I,2), AlienExplodiert(I,0)
 EndIf
Next


;Kollision Komet-Spieler
For I=1 To 50
For J=1 To 1
If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2), schiff ,schi(J,1),schi(J,2)) Then
PlaySound(trefferton)
Alien(I,0) = -1
schi(J,0) = -1
EndIf
Next
Next






; Alien-Steuerung
 For I=1 To 50
  If Alien(I,0) = 0 Then
   Alien(I,0) = Rand(100,400)
   Alien(I,1) = Rand(-20,640)
   Alien(I,2) = Rand(-100,0)
  EndIf
 
If Alien(I,0) <> -1 Then
  Alien(I,2) = Alien(I,2) + 1
  Alien(I,1) = 320 + Sin( Alien(I,2) ) * Alien(I,0)
EndIf
 
 If Alien(I,2) > 480 Then Alien(I,0) = 0

 If Alien(I,0) <> -1 Then DrawImage alienbild, Alien(I,1), Alien(I,2)
Next

 Flip
Until KeyHit(1)

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Dez 22, 2003 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

;Kollision Komet-Spieler
For I=1 To 50
For J=1 To 1
If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2), schiff ,schi(J,1),schi(J,2)) Then
PlaySound(trefferton)
Alien(I,0) = -1
schi(J,0) = -1
EndIf
Next
Next

da drinne liegt der fehler
mach das mal so
Code: [AUSKLAPPEN]
;Kollision Komet-Spieler
For I=1 To 50
  ;For J=1 To 1 <<< ist absolut über
   If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2), schiff ,X,Y) Then
      PlaySound(trefferton)
      Alien(I,0) = -1
      schi(J,0) = -1 ;<< überflüssig da du den Schiff mit DrawImage schiff, X,Y
   EndIf   ; immer zeichnest
  ;Next <<<und dies dann auch
Next


schi(J,1),schi(J,2) hier sind die werte immer = 0 deswegen explodieren deine feinde immer
[BB2D | BB3D | BB+]

Flori-D

BeitragMo, Dez 22, 2003 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
versuch macht kluch

Flori-D

BeitragMo, Dez 22, 2003 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo,es geeeeeeeeeeeeeeeeht!
Daaaaaaaaaaaanke!

Dachte schon ich bin jetzt total am Ende.
Mss nämlich bis nach die ferien eine GANZE CD voller selbs geprogter Spiele meinem Informatik Lerer geben(wie ich das anstelle weis ich noch nicht, aber naja)

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group