kollision

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen

mr x

Betreff: kollision

BeitragMi, Feb 11, 2004 14:17
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab hier mal ein kleines Spiel zamgeschrieben(diesmal wirklich ich), raff aber die kollision net(laser,humanoid und rakete,alien, mehr geht ja nicht, aßer man will noch die schüsse abfragen)

hier mal der code:
Code: [AUSKLAPPEN]

graphics 640,480
setbuffer backbuffer()
hinter=loadimage("/shooter2/Grafik/Sterne.bmp")
humanoid=loadimage("/shooter2/Grafik/Schiff.bmp")
alien=loadimage("/shooter2/Grafik/Alien.bmp")
rakete=loadimage("/shooter2/Grafik/Rakete.bmp")
laser=loadimage("/shooter2/Grafik/Laser.bmp")

schusston=loadsound("/shooter2/Sound/shoot.wav")
trefferton=LoadSound("/shooter2/Sound/boom.wav")
;
Dim Las(100,2)
Dim Rak(100,2)
;
X=305
Y=420
;
X2=305
Y2=20
;
;Hauptschleife
;
 Repeat
Cls
;
;
If KeyDown(57) Then Delay 30 ;Billigbullettime *lol*
;
;
H=H+1
if H=200 then H=0
tileblock hinter,0,H
drawimage humanoid,X,Y
DrawImage alien,X2,Y2
;
;Schuss-Test (humanoid)
If KeyHit(76) Then
Schuss = Schuss + 1
If Schuss = 101 Then Schuss = 1
Rak(Schuss,0) = 1
Rak(Schuss,1) = X + 9
Rak(Schuss,2) = Y - 25
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) - 6
 EndIf
Next
;Schuss-Test (alien)
If KeyHit(31) Then
Schuss2 = Schuss2 + 1
If Schuss2 = 101 Then Schuss2 = 1
Las(Schuss2,0) = 1
Las(Schuss2,1) = X2 + 9
Las(Schuss2,2) = Y2 + 25
PlaySound (schusston)
EndIf
;ggf. Laser zeichnen
For P = 1 To 100
  If Las(P,0) = 1 Then
   DrawImage laser, Las(P,1),las(P,2)
  Las(P,2) = Las(P,2) + 10
 EndIf
Next
;
;Pfeiltasten für humanoid abfragen
If KeyDown(77)=1 Then X=X + 6
If KeyDown(75)=1 Then X=X - 6
;
;Pfeiltasten für alien abfragen
if keydown(32)=1 then X2=X2 + 2
If KeyDown(30)=1 Then X2=X2 - 2
;
;Randüberschreitung verhindern (humanoid)
if X < 0 then X = 0
If X > 609 Then X = 609
;
;Randüberschreitung verhindern (alien)
If X2 < 0 Then X2 = 0
If X2 > 609 Then X2 = 609

Flip
Until KeyHit(1)


kann mir da vielleicht jemand helfen?
besser heimlich schlau, als unheimlich blöd
 

HOT-BIT

Gast

BeitragMi, Feb 11, 2004 14:47
Antworten mit Zitat
Hi !

rofl....

Wie funktioniert das ?

Schreibst ein Game, und steigst da nicht durch ?

Schön langsam wird es hier kritisch !

Toni

mr x

BeitragMi, Feb 11, 2004 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
is hier noch einer bereit mir zu helfen, oder wollts ihr mich alle nur loswerden?
besser heimlich schlau, als unheimlich blöd
 

Edlothiol

BeitragMi, Feb 11, 2004 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst einfach mit ImagesCollide() jede Rakete etc. mit jedem anderen Ding prüfen, das damit kollidieren kann.

mr x

BeitragMi, Feb 11, 2004 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
soweit bin ich schon längst, aber dann unterbricht es immer die repeatschleife Sad
besser heimlich schlau, als unheimlich blöd
 

Edlothiol

BeitragMi, Feb 11, 2004 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie, es unterbricht immer die Repeat - Schleife? Poste doch mal den Code.

Slayer

BeitragMi, Feb 11, 2004 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
schau dir mal die befehle imagescollide() und imagesoverlap() an.

Das sind beispiel code dabei.


Pseudo Code Wink


if imagesoverlap(gegner_gfx,gegner_x,gegner_y,schuss_gfx,schuss_x,schuss_y)

dann explosion,sound...........
endif
Edit: oopss: war zu langsam
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version

mr x

BeitragMi, Feb 11, 2004 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
dann steht halt einfach da: until without repeat, oder expecting ")"
besser heimlich schlau, als unheimlich blöd
 

Edlothiol

BeitragMi, Feb 11, 2004 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann hast du eben irgendwo ein End If oder eine Klammer vergessen. Poste doch mal den Code.

mr x

BeitragMi, Feb 11, 2004 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
der steht doch da oben
besser heimlich schlau, als unheimlich blöd

Slayer

BeitragMi, Feb 11, 2004 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne Klammer vergessen ??
oder zuviel ??
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version

Slayer

BeitragMi, Feb 11, 2004 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ist aber die Kollision nicht drin, oder bin ich blind.
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version
 

René Meyer

BeitragMi, Feb 11, 2004 18:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Sie sollten mit diesem Kapitel nicht zu früh beginnen. Sammeln Sie erst Erfahrungen mit kleinen Programmen und Beispielen, ehe Sie sich an ein richtiges Projekt wagen. Die auf den folgenden Seiten vorgestellten Spielegerüste sollen Ihnen helfen, ein Verständnis zu erlangen, wie Spiele funktionieren. Sie sollten nicht als Grundlage für Ihre Spiele dienen. Einen vorhandenen Quelltext zu nehmen und leicht abzuändern, das ist kein Programmieren. Arbeiten Sie mit dem Kapitel, ändern Sie getrost Zeilen – und beginnen Sie dann mit einem leeren Editorfenster. So sammeln Sie am besten Erfahrung.
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb

Slayer

BeitragMi, Feb 11, 2004 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier ist mal was falsch.

Code: [AUSKLAPPEN]
If KeyHit(76) Then
Schuss = Schuss + 1


müsste heisen,


Code: [AUSKLAPPEN]
If KeyHit(76) Then Schuss = Schuss + 1


oder

Code: [AUSKLAPPEN]
If KeyHit(76) Then
Schuss = Schuss + 1
endif
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version
 

darkshadow

BeitragMi, Feb 11, 2004 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
rofl.. ist das ein spaten Very Happy
btw: das ist RMs code.. leicht verändert / ergänzt (wie RM sagt..).. also.. selber abgeschrieben Wink

edit: RM hat sich ja schon zu wort gemeldet... Smile

mr x

BeitragMi, Feb 11, 2004 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
kleine anmerkung:
ich habe mit einem lehren editorfenster begonnen und habe den code bis auf das scrollen des hintergrunds nicht abgeschrieben!!!!
ich hatte davor mal den code so genommen wie er is und dann leicht verändert, aber da hatt ich des buch nichmal auf!
aber so brauch ich hier garnich mehr posten, wenn mir eh kener hilft. also, wers kann soll mich löschen!
besser heimlich schlau, als unheimlich blöd
 

darkshadow

BeitragMi, Feb 11, 2004 18:37
Antworten mit Zitat
Benutzer-Profile anzeigen
must deine depris ja nicht an uns auslassen..
hast dir mal die befehle imagescollide() und imagesoverlap() in der deutschen online hilfe von www.blitzbase.de angeschaut??

Slayer

BeitragMi, Feb 11, 2004 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
He mr x,

gib nicht gleich auf.

Hier wird dir immer geholfen, nur musst Du auch mal zeigen das Du Deinen Grips auch angestreng hast Wink

Lade Dir, wenn nicht schon getan, die Deutsch Hilfe von [url]http://www.blitzbase.de [/url] runter.

Die ist echt super.

Und poste mal denn Kompletten Code mit Kollisions abfrage hier rein.
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version

mr x

BeitragMi, Feb 11, 2004 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
so kommt: until without repeat
Code: [AUSKLAPPEN]

graphics 640,480
setbuffer backbuffer()
hinter=loadimage("/shooter2/Grafik/Sterne.bmp")
humanoid=loadimage("/shooter2/Grafik/Schiff.bmp")
alien=loadimage("/shooter2/Grafik/Alien.bmp")
rakete=loadimage("/shooter2/Grafik/Rakete.bmp")
laser=loadimage("/shooter2/Grafik/Laser.bmp")

schusston=loadsound("/shooter2/Sound/shoot.wav")
trefferton=LoadSound("/shooter2/Sound/boom.wav")
;
Dim Las(100,2)
Dim Rak(100,2)
;
X=305
Y=420
;
X2=305
Y2=20
;
;Hauptschleife
;
 Repeat
Cls
;
;
If KeyDown(57) Then Delay 30 ;Billigbullettime *lol*
;
;
H=H+1
if H=200 then H=0
tileblock hinter,0,H
drawimage humanoid,X,Y
DrawImage alien,X2,Y2
;
;Schuss-Test (humanoid)
If KeyHit(76) Then
Schuss = Schuss + 1
If Schuss = 101 Then Schuss = 1
Rak(Schuss,0) = 1
Rak(Schuss,1) = X + 9
Rak(Schuss,2) = Y - 25
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) - 6
 EndIf
Next
;Schuss-Test (alien)
If KeyHit(31) Then
Schuss2 = Schuss2 + 1
If Schuss2 = 101 Then Schuss2 = 1
Las(Schuss2,0) = 1
Las(Schuss2,1) = X2 + 9
Las(Schuss2,2) = Y2 + 25
PlaySound (schusston)
EndIf
;ggf. Laser zeichnen
For P = 1 To 100
  If Las(P,0) = 1 Then
   DrawImage laser, Las(P,1),las(P,2)
  Las(P,2) = Las(P,2) + 10
 EndIf
Next
;kollision
If ImagesOverlap(alien,alien(X2),alien(Y2),rakete,Rak(I,1),Rak(I,2)) Then
PlaySound (trefferton)
;
;Pfeiltasten für humanoid abfragen
If KeyDown(77)=1 Then X=X + 6
If KeyDown(75)=1 Then X=X - 6
;
;Pfeiltasten für alien abfragen
if keydown(32)=1 then X2=X2 + 2
If KeyDown(30)=1 Then X2=X2 - 2
;
;Randüberschreitung verhindern (humanoid)
if X < 0 then X = 0
If X > 609 Then X = 609
;
;Randüberschreitung verhindern (alien)
If X2 < 0 Then X2 = 0
If X2 > 609 Then X2 = 609

Flip
Until KeyHit(1)
besser heimlich schlau, als unheimlich blöd

Mr.Keks

BeitragMi, Feb 11, 2004 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ich denke, den fehler gefunden zu haben =). aber ich wünsche mir, dass du einfach mal den code einrückst... dann findest du ihn ... ganz sicher!
MrKeks.net

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group