kollision
Übersicht

![]() |
mr xBetreff: kollision |
![]() Antworten mit Zitat ![]() |
---|---|---|
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-BITGast |
![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
is hier noch einer bereit mir zu helfen, oder wollts ihr mich alle nur loswerden? | ||
besser heimlich schlau, als unheimlich blöd |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst einfach mit ImagesCollide() jede Rakete etc. mit jedem anderen Ding prüfen, das damit kollidieren kann. | ||
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
soweit bin ich schon längst, aber dann unterbricht es immer die repeatschleife ![]() |
||
besser heimlich schlau, als unheimlich blöd |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie, es unterbricht immer die Repeat - Schleife? Poste doch mal den Code. | ||
![]() |
Slayer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
schau dir mal die befehle imagescollide() und imagesoverlap() an. Das sind beispiel code dabei. Pseudo Code ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann steht halt einfach da: until without repeat, oder expecting ")" | ||
besser heimlich schlau, als unheimlich blöd |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dann hast du eben irgendwo ein End If oder eine Klammer vergessen. Poste doch mal den Code. | ||
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
der steht doch da oben | ||
besser heimlich schlau, als unheimlich blöd |
![]() |
Slayer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ne Klammer vergessen ??
oder zuviel ?? |
||
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version |
![]() |
Slayer |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
rofl.. ist das ein spaten ![]() btw: das ist RMs code.. leicht verändert / ergänzt (wie RM sagt..).. also.. selber abgeschrieben ![]() edit: RM hat sich ja schon zu wort gemeldet... ![]() |
||
![]() |
mr x |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group