Shooter problem!
Übersicht

oki02Betreff: Shooter problem! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich möchte dass wenn ein Schuss den gegner berührt er "Kollision" hinschreibt.
Bitte um hilfe. mfg Oki02 Hier mein code: Graphics 640,480,32,2 SetBuffer BackBuffer() Global Player = LoadImage ("Player.bmp") Global Gegner = LoadImage ("Alien.bmp") Global Feuer1 = LoadImage ("123.bmp") Player_x = 300 Player_y = 430 Gegner_x = 200 Gegner_y = 0 Type Feuer Field Feuer_x# Field Feuer_y# Field Test# End Type While Not KeyHit(1) If KeyDown(203) Player_x = Player_x - 5 If Player_x < 0 Then Player_x = 0 Feuer = False EndIf If KeyDown(205) Player_x = Player_x + 5 If Player_x > 600 Then Player_x = 600 Feuer = False EndIf ; Feuer If KeyHit(57) s.Feuer = New Feuer s\Feuer_x = Player_x + 10 s\Feuer_y = Player_y EndIf For s.Feuer = Each Feuer s\Feuer_y = s\Feuer_y - 8 DrawImage Feuer1,s\Feuer_x,s\Feuer_y Next DrawImage Player,Player_x,Player_y DrawImage Gegner,Gegner_x,Gegner_y Gegner_y = Gegner_y + 2 If Gegner_y > 480 Then Gegner_y = 0 If ImagesCollide ( Gegner,Gegner_x,Gegner_y,0,Feuer1,Feuer_x,Feuer_y,0 ) Then Print "Kollision!" End EndIf Flip Cls Wend End |
||
- Zuletzt bearbeitet von oki02 am Sa, Nov 08, 2008 10:49, insgesamt 2-mal bearbeitet
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also erstmal :
Markiere deinen Code un klick dann auf den Button "Code", sieht schöner und übersichtliger aus ![]() Dein Problem ist : Print schreibt zwar was hin bei kollision, aber wird ja durch Cls darauf gelöscht, das heißt, man sieht es für max. 1 schleifendurchgang, also nicht sehr viel ... Kannst ja z.b. Arrays nehmen, die immer eine neue Zeile hinschreibt. mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Vulture |
![]() Antworten mit Zitat ![]() |
---|---|---|
Problem ist einfach und hat mit den Print nichts zu tun .... Fehler liegt in der For Schleife
Und zwar hier : Code: [AUSKLAPPEN] For s.Feuer = Each Feuer
s\Feuer_y = s\Feuer_y - 8 DrawImage Feuer1,s\Feuer_x,s\Feuer_y Next DrawImage Player,Player_x,Player_y DrawImage Gegner,Gegner_x,Gegner_y Gegner_y = Gegner_y + 2 If Gegner_y > 480 Then Gegner_y = 0 If ImagesCollide ( Gegner,Gegner_x,Gegner_y,0,Feuer1,Feuer_x,Feuer_y,0 ) Then Print "Kollision!" End EndIf Muss so aussehen : Code: [AUSKLAPPEN] For s.Feuer = Each Feuer
s\Feuer_y = s\Feuer_y - 8 DrawImage Feuer1,s\Feuer_x,s\Feuer_y If ImagesCollide ( Gegner,Gegner_x,Gegner_y,0,Feuer1,s\Feuer_x,s\Feuer_y,0 ) Then Print "Kollision!" End EndIf Next DrawImage Player,Player_x,Player_y DrawImage Gegner,Gegner_x,Gegner_y Gegner_y = Gegner_y + 2 If Gegner_y > 480 Then Gegner_y = 0 Erklärung ist einfach du hast kein Feuer_X und Feuer_Y in dein code sonder nur in der Schleife als Type so muss es gehen ! |
||
User posted image
Projekte : TerraSE Terranigma - Break Up - Final Round - Survivor Elite - Sequence Basic |
oki02Betreff: Danke |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für die schnellen Antworten.
Ihr habt mir sehr geholfen. mfg Oki02 |
||
oki02Betreff: - |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab noch eine kleine Frage .
warum erstellt er keinen Neuen Gegner auf ein X kordinate die Zufällig ist und löscht den "erschossenen" Gegner. Bitte um Hilfe! Code: [AUSKLAPPEN] Graphics 640,480,32,2 SetBuffer BackBuffer() SeedRnd MilliSecs() Global Player = LoadImage ("Player.bmp") Global Gegner = LoadImage ("Alien.bmp") Global Feuer1 = LoadImage ("123.bmp") Player_x = 300 Player_y = 430 Type Gegner Field Gegner_x# Field Gegner_y# End Type Type Feuer Field Feuer_x# Field Feuer_y# End Type Gegner_x = Rand(0,610) While Not KeyHit(1) Cls a.Gegner = New Gegner a\Gegner_x = Gegner_x a\Gegner_y = Gegner_y If KeyDown(203) Player_x = Player_x - 5 If Player_x < 0 Then Player_x = 0 Feuer = False EndIf If KeyDown(205) Player_x = Player_x + 5 If Player_x > 600 Then Player_x = 600 Feuer = False EndIf If KeyHit(57) s.Feuer = New Feuer s\Feuer_x = Player_x + 10 s\Feuer_y = Player_y EndIf ; Feuer For s.Feuer = Each Feuer s\Feuer_y = s\Feuer_y - 8 DrawImage Feuer1,s\Feuer_x,s\Feuer_y If ImagesCollide ( Gegner,Gegner_x,Gegner_y,0,Feuer1,s\Feuer_x,s\Feuer_y,0 ) Then Delete s Delete a a.Gegner = New Gegner Gegner_x = Gegner_x Gegner_y = Gegner_y EndIf Next DrawImage Player,Player_x,Player_y DrawImage Gegner,a\Gegner_x,a\Gegner_y Gegner_y = Gegner_y +2 If Gegner_y > 480 Then Gegner_y = 0 Flip Cls Wend End mfg Oki02 |
||
da_pollerBetreff: Re: - |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Delete s.feuer Delete a.gegner zuvor aber sichergehen das die passenden objekte ausgewählt sind. |
||
oki02Betreff: - |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab den Code umgeschrieben nur passiert drozdem nicht das wass ich will.
mfg Oki02 |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Könnte daran liegen, dass deine Variablenbenenung z.T. widersprüchlich ist.
Gegner ist ein Bild und ein Type... Types benennt man eindeutig, so das man weiß, womit man gerade hantiert. Die Fields haben auch nicht nochmal irgendwo den Typenamen drin stehen; es ist ja klar das sie zusammen gehören. Code: [AUSKLAPPEN] Type Feuer
Field Feuer_x# Field Feuer_y# End Type ;Besser: Type TFeuer Field x# Field y# End Type und "Gegner_x = Rand(0,610)" wird einmal vor der Hauptschleife ausgeführt und bleibt daher immer gleich. Damit erstellst du jeden Schleifendurchlauf einen neuen Gegner, also vermutlich 60 stk. in der Sekunde. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
oki02 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Durch herumprobieren habe ich es hingekrigt
Aber trozdem Danke für die Antworten. mfg Oki02 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group