ImagesCollide will nicht so wie ich :(

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Akiba

Betreff: ImagesCollide will nicht so wie ich :(

BeitragSo, Sep 14, 2008 23:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab vor'n paar Tagen angefangen BB-2D zu lernen und ich hab zu Testzwecken n kleines Spielchen geschrieben. In dem Spiel ist ein Monster und der Spieler. Das Monster wandert am oberen Bildschirmrand hin und her und verschießt manchmal Laser. Der Spieler, am unteren Bildschirmrand, kann sich durch Tasten auch hin udn her bewegen und Laser verschießen. Der Gesundheitszustand von Spieler und Monster werden außerdem noch angezeigt. Klappt auch alles soweit ganz gut.

Aber: der Spieler verliert Gesundheit, wenn das Monster dem Spieler gegenüber steht, selbst wenn das Monster garnicht angreift. Und dann verliert der Spieler nicht nur 1 mal 10 Punkte (so sollte es eigentlich sein), sondern gleich 4 mal 10 Punkte oder so. Andererseits verliert das Monster zwar nicht ohne Lasereinsatz Gesundheit, aber wenn man angreift, verliert es auch zu viel Gesundheit.

Was mache ich falsch?

Hier der ganze Code:

Code: [AUSKLAPPEN]
Graphics 800, 600
SetBuffer = BackBuffer

; Die Grafiken
Monster = LoadImage("Monster.bmp")
Angriff = LoadImage("Angriff.bmp")
Spieler = LoadImage("Spieler.bmp")
SAngriff = LoadImage("SAngriff.bmp")

; Die Musik
Sound = LoadSound("Musik.mp3")
LoopSound Sound
Kanal = PlaySound(Sound)
ChannelPitch Kanal, 15000

RL = 1
Sx = 375
Sy = 500
Health = 500
SHealth = 100

Repeat
Cls

; Das Monster
If x > 800 - 183 And RL = 1 Then RL = 2
If x = 0 And RL = 2 Then RL = 1
If RL = 1 Then x = x + 3 Else x = x - 3
DrawImage Monster, x, 15

; Der Spieler
If KeyDown(30) And Sx > 100 Then Sx = Sx - 2
If KeyDown(31) And Sx < 650 Then Sx = Sx + 2
DrawImage Spieler, Sx, Sy

; Der Angriff des Spielers
If KeyDown(57) Then
DrawImage SAngriff, Sx + 23, 0
If ImagesCollide(SAngriff, Sx + 23, 0, 0, Monster, x, y, 0) Then Health = Health - 10
EndIf

; Der Angriff des Monsters
Zufall = Rnd(10)
Text 10, 10, Zufall
If Zufall > 9 Then
DrawImage Angriff, x + 85, y + 95
If ImagesCollide(Angriff, x + 85, y + 95, 0, Spieler, Sx, Sy, 0) Then SHealth = SHealth - 10
EndIf

;Gesundheitsanzeigen
Text 0, 580, "Gesundheit: " + SHealth
Text 200, 580, "Monster: " + Health

If KeyHit(5) Then Ende = 1

Flip
Until Ende = 1


End
 

PopUp

BeitragMo, Sep 15, 2008 8:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Zuerst solltest du CreateTimer und WaitTimer einbauen damit das Spiel auf jedem Rechner gleich schnell läuft und dann die Warscheinlichkeit mit dem das Monster schießt verringern.

Das Problem ist das das Monster dich ca 4 mal trifft während es an dir vorbei geht (Man muss auch die breite des Lasers mit einberechnen) und du es durch Dauerfeuer auch ca 4 mal triffst.

Ach ja : Du kannst statt ImagesCollide auch ImagesOverlap nehmen das ist schneller.
.oO(Huch...)

Akiba

BeitragMo, Sep 15, 2008 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke! Klappt jetzt so wie gedacht Smile
Luigi, man wendet sich nich gegen Familie...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group