Gegnerische Schüsse
Übersicht

![]() |
Flori-DBetreff: Gegnerische Schüsse |
![]() Antworten mit Zitat ![]() |
---|---|---|
Halo. Ich hab ein kleines Problem.
Ich weis nicht wie ich es anstelle das meine Gegner zurückschiesen. Das so zu proggen das mein Männchen schiest ist kein prob. aber bei meinen Gegner siehts anders aus. Wie mach ich das,das meine Gegner zurückschiesen? Ich geb euch mal den jetigen Code: Code: [AUSKLAPPEN] Graphics 640,480
SetBuffer BackBuffer() hinter = LoadImage("stars.bmp") schiff = LoadImage("spaceship2.bmp") alienbild = LoadImage("player.bmp") rakete = LoadImage("bullet.bmp") explosion = LoadAnimImage("kaboom.bmp", 60,46, 0,6) schusston = LoadSound("soundfx11.wav") trefferton = LoadSound("soundfx16.wav") Dim Rak(100,2) Dim Alien(5,2) Dim AlienExplodiert(5,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 ; 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 5 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 5 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 ; Alien-Steuerung For I=1 To 5 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 KeyDown(1) |
||
![]() |
Valio |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst z.B. ein zweidimensionales Dimfeld Alienschuss(x,y) machen, wobei x und y so gross wie die Anzahl der Aliens sein muss (5 oder?). Jedes Alien kann auf sein jeweiliges Schussfeld zugreifen (Alien 3 kann also z.B. auf Alienschuss(3,3) zugreifen). Wenn die Werte des Dimfelds Alienschuss ausserhalb des Bildschirms liegen feuert das Alien (evtl. mit gewisser Wahrscheinlichkeit -> Zufallgenerator) einen Schuss ab (die Koordinaten des Schusses werden auf die Koordinaten des Aliens gesetzt). In der Schleife müssen die Werte aller Alienschüsse dann natürlich noch erhöht werden, damit sich der Schuss überhaupt bewegt. Es versteht sich von selbst, dass dann noch jeder Schuss gezeichnet werden muss. Wenn du willst, dass ein Alien mehr als einen Schuss abfeuern kann, kannst du das Dimfeld auch 3dimensional machen: Dim Alienschuss(x,y,z), wobei das Alien 3 dann auf alle Alienschuss(3,3,j) für 0<=j<z zugreifen kann.
Es gibt noch andere Alternativen mit Dimfeldern, aber die hier zu erklären wäre wohl doch ein wenig zu kompliziert... |
||
Programming today is a race between software engineers striving to build better and bigger idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. - Rick Cook
Gegen TCPA || Stoppt RFID || Tux user #361946 || User posted image |
![]() |
Flori-D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Für mich war das gerade chinesisch rückwerts.Kannst du mir einen Code geben?Würde ich nähmlich schneller begreifen. | ||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
im prinzip wie das schiessen deines Schiffes Mach ein Dim Feld für 20 Raketen Dim Feind_Rakete(20) zusätzlich benötigt man die aktuelle Position des schusses Also x und y Die packen wir gleich mit in die Feind_Rakete Dim Feind_Rakete(20,2) bis jetzt haben wir ( x= welche rakete) Feind_Rakete(x,0) ; in ,0 steht drin ob diese Aktiv ist oder nicht Feind_Rakete(x,1) ; in ,1 steht Die aktuelle X position Feind_Rakete(x,2) ; in ,2 steht ie aktuelle Y position so in etwa hast du das ja auch schon gemacht mit deinen du aktiviert einen schuss von deinem Schiff mit der SpaceTaste bei deinem gegnern muß das ja zufällig geschen da gibt es mehrere sachen die mann machen kann eine wäre durch Zufall welche aktivieren schreiben wir auch in das dim Feld For zahl = 0 to 20 Feind_Rakete(x,3) = RAND(100,1000) next jetzt haben wir eine zufallszahl und die zählen wir dann bei jedem durchlauf eins runter wenn diese 0 ist dann schiessen so muß aber jetzt erst weg... sonst hätt ich noch mehr geschrieben Das dim Feld nicht vergessen zu erhöhen |
||
- Zuletzt bearbeitet von Rallimen am Sa, Dez 20, 2003 18:50, insgesamt einmal bearbeitet
![]() |
Flori-D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich werds versuchen! ![]() |
||
![]() |
Valio |
![]() Antworten mit Zitat ![]() |
---|---|---|
Flori-D hat Folgendes geschrieben: Für mich war das gerade chinesisch rückwerts.Kannst du mir einen Code geben?Würde ich nähmlich schneller begreifen.
Schon gut, hier hast du Code: Code: [AUSKLAPPEN] Dim Alienschuss(5,2)
... Repeat ... ; Alien-Schusssteuerung For I=1 To 5 Alienschuss(I,1)=Alienschuss(I,1)+2 Drawimage alienshot,Alienschuss(I,0),Alienschuss(I,1) Next ; Alien-Steuerung For I=1 To 5 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) If Alienschuss(I,1)>480 then If Rand(2)=1 Then Alienschuss(I,0)=Alien(I,1) Alienschuss(I,1)=Alien(I,2)+2 Endif Endif 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 Keydown(1) |
||
Programming today is a race between software engineers striving to build better and bigger idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. - Rick Cook
Gegen TCPA || Stoppt RFID || Tux user #361946 || User posted image |
![]() |
Flori-D |
![]() Antworten mit Zitat ![]() |
---|---|---|
vielen Dank!!!!!!!!!!!!!!!!!!!!!
jetzt gehts. |
||
![]() |
Flori-D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ne,noch nicht soganz. ![]() Probier mal einer den folgenden Code. Irgendwas stimmt da nicht. Code: [AUSKLAPPEN] Graphics 640,480
SetBuffer BackBuffer() hinter = LoadImage("stars.bmp") schiff = LoadImage("spaceship2.bmp") alienbild = LoadImage("player.bmp") rakete = LoadImage("bullet.bmp") explosion = LoadAnimImage("kaboom.bmp", 60,46, 0,6) schusston = LoadSound("soundfx11.wav") trefferton = LoadSound("soundfx16.wav") alienshot = LoadImage("bullet_mask.bmp") Dim Rak(100,2) Dim Alien(5,2) Dim AlienExplodiert(5,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 Text 400,10, "Du hast "+punkte+" Punkte ; 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 5 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 5 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 ; Alien-Steuerung For I=1 To 5 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 Punkte = punkte + 10 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 ;Aliens -Schiesen Dim Alienschuss(5,2) Repeat ; Alien-Schusssteuerung For I=1 To 5 Alienschuss(I,1)=Alienschuss(I,1)+2 DrawImage alienshot,Alienschuss(I,0),Alienschuss(I,1) Next ; Alien-Steuerung For I=1 To 5 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) If Alienschuss(I,1)>480 Then If Rand(2)=1 Then Alienschuss(I,0)=Alien(I,1) Alienschuss(I,1)=Alien(I,2)+2 EndIf EndIf 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 Forever Until KeyHit(1) |
||
graythread |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
und noch so ein "Ich hab jetzt aus Rene's Buch den Shooter Code kopiert, kann mir den einer erweitern?"
Gott, ich bin selbst kein guter Progger, aber mh, versuchts doch mal selbst? |
||
Alu-FolieGast |
![]() Antworten mit Zitat |
|
---|---|---|
GrayThread: Wie proggst du denn? In dem du deinen Code zusammenklauft? ![]() |
||
graythread |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mh, das war ein schlechter Witz, da ich selbst gesagt habe
Zitat: Gott, ich bin selbst kein guter Progger, aber mh, versuchts doch mal selbst? ´
aber nein, ich hab natürlich auch Sachen übernommen, aber dannach es durch meinen eigenen Code ersetzt. |
||
![]() |
Flori-D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab zwar das was drinnstand übernommen aber ich will jetzt ein richtige Game draus machen.Und ich weis nunmal nicht wie ich meine Gegner schiesen lasse.
Auserdem progge ich noch nicht so lange. Man wird doch mal was fragen können,oder? |
||
![]() |
Valio |
![]() Antworten mit Zitat ![]() |
---|---|---|
Flori-D hat Folgendes geschrieben: Ich hab zwar das was drinnstand übernommen aber ich will jetzt ein richtige Game draus machen.Und ich weis nunmal nicht wie ich meine Gegner schiesen lasse.
Auserdem progge ich noch nicht so lange. Man wird doch mal was fragen können,oder? Sicher, aber besser du lernst mit kleinen Sachen mal programmieren und kannst selber Ideen entwickeln und umsetzen anstatt andauernd jemanden zu fragen. Ich möchte dich ja nicht enttäuschen, aber mit "Ich habe das Buch gelesen, jetzt programmier ich gleich ein Game" kommt man nicht weit...probier' doch bitte erst mal ganz kleine Sachen...ein vorgefertigter Code für eine Spieleengine würde ich eher selten vorziehen. |
||
Programming today is a race between software engineers striving to build better and bigger idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. - Rick Cook
Gegen TCPA || Stoppt RFID || Tux user #361946 || User posted image |
René Meyer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, aber so macht das keinen Sinn. :)
"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 |
Alu-FolieGast |
![]() Antworten mit Zitat |
|
---|---|---|
lol, rene :thumbs up: ![]() |
||
![]() |
Flori-D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab schon viele kleine Dinge gemacht.
Ich hab bsp. aus dem Buch abgewandelt,was dazu gemacht,komplett alleine was neues geproggt. . Aber ich weis nicht mit was man am besten anfängt. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group