Schuss Funktion?

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

ZAiMoN

Betreff: Schuss Funktion?

BeitragDo, Jan 08, 2004 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Brauche hilfe bei einer schuss funktion:


-Kugel soll so lange fliegen bis sie gegen eine wand oder einen spieler trifft
-Man soll die Kugeln einzeln sehen und nicht in strichen
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
  • Zuletzt bearbeitet von ZAiMoN am Sa, Jan 10, 2004 0:27, insgesamt einmal bearbeitet

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, Jan 08, 2004 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Function schiessen()
ziel = Player_pos_x + 250
For x = player_pos_y To ziel
  If hero = dude_m4 And KeyDown(schiessen) Then
   DrawImage kugel,x,player_pos_y
  end if
next
End Function

erst mal das zur Fehlermeldung, das andere später...
[BB2D | BB3D | BB+]

Triton

BeitragDo, Jan 08, 2004 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
ausgehend davon, dass der Spieler nur nach rechts schießt, fehlt da nur ein Next vor End function und das endif ..


Zu dem zeichnet diese Function die Kugel denke ich nicht so, wie du willst, aber das bekommst du vermutlich noch selber raus Smile
 

ZAiMoN

BeitragDo, Jan 08, 2004 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
und wie kann ich das machen das er auch nach links schiesst?
wäre sehr nett dann bin ich nähmlich schon einen ganzen schritt weiter Smile

und danke für die hilfe waren wohl 2 sehr dumme flüchtigkeitsfehler Very Happy
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
 

ZAiMoN

BeitragDo, Jan 08, 2004 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mal etwas hier im forum rumgesucht und dabei eine Schussfunktion gefunden wenn sie mir jemand erklärt dann kann ich sie vielleicht so umbauen das sie in mein game reinpasst.
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
  • Zuletzt bearbeitet von ZAiMoN am Fr, Jan 09, 2004 19:31, insgesamt einmal bearbeitet
 

ZAiMoN

BeitragFr, Jan 09, 2004 0:23
Antworten mit Zitat
Benutzer-Profile anzeigen
EDIT:// Codes die Flasch waren hab ich gelöscht damit sie kein anderer hier falsch kopiert
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
  • Zuletzt bearbeitet von ZAiMoN am Sa, Jan 10, 2004 0:28, insgesamt einmal bearbeitet

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Jan 09, 2004 0:34
Antworten mit Zitat
Benutzer-Profile anzeigen
der iss nicht so ganz gut,
wenn du basic etwas kannst und den folgenden Code einigermassen vestehst , dann besser dieses
der läßt sich natürlich auch nmoch in jede Richtung anpassen
mit einer Select Schleife beim zeichnen
wenn noch fragen dann Frag und wenn ich noch zeit habe kann ich dir das auch noch einbauen
Code: [AUSKLAPPEN]
 Graphics 800,600,16,2 ;
SetBuffer BackBuffer()
Const ESC = 1, Bildwiederholung = 50
Const Hoch= 200,Runter=208,Links = 203,Rechts=205
Const Links_Alt= 56,Space = 57
frameTimer=CreateTimer(Bildwiederholung)
Dim Schuss(30,3); in 0 aktiv, in 1 x, in 2 y,  in 3 art, in 4 Richtung   kann nach belieben erweitert werden
;Hauptschleife
While Not KeyDown(ESC)
   If KeyDown(Hoch)      Then    Y=Y -2
   If KeyDown(Runter)   Then   Y=Y +2
   If KeyDown(Links)      Then   x= x -2
   If KeyDown(Rechts)   Then   x= x +2
        Rect x,y,20,50,1 ; Super raumschiff Malen

   ; schussabgabe >>>>>>>    schuss_starten(X,Y,Art )
   If KeyHit(Space) Then  schuss_starten(   x+10,   y-25,   0 )
   If KeyHit(Links_Alt) Then  schuss_starten(   x+10,   y-25, 1)
   Schuss_malen() ; alle malen die aktiv sind

   WaitTimer(frameTimer)
   Flip
   Cls
Wend ;Hauptschleife Ende
End

Function  schuss_starten  (x_pos,y_pos,Art= 0)
 For t= 0 To 30
  If Schuss(t,0)= 0 Then ; freien Schuss gefunden ;bzw Leere variable
    Schuss(t,0) = 1  ; schuss aktivieren
    Schuss(t,1) = x_pos ; positionen übergeben
    Schuss(t,2) =y_pos
   Schuss(t,3) = Art ;welche Waffe es ist
    Exit ;schleife verlassen da eine gefunden wurde
 End If
Next
End Function

Function    Schuss_malen() ; alle malen
For t= 0 To 30
  If Schuss(t,0) = 1 Then ; Wenn aktiver Schuss dann malen
   Select Schuss(t,3) ; je nach art der waffe
     Case 0  ; hier evt. standard laser
       Schuss(t,2) =Schuss(t,2) - 5 ;Schuss weiter nach oben
      If  Schuss(t,2) <    - 50 Then  ; -50 <<Je nach Größe des bildes
          Schuss(t,0) = 0 ;Abschalten
      End If
      Rect Schuss(t,1),    Schuss(t,2) ,1,30,1
       ;DrawImage    Laserbild,     Schuss(t,1),    Schuss(t,2)
     Case 1  ; Vieleicht rakete usw.
           Schuss(t,2) =Schuss(t,2) - 3 ;Schuss weiter nach oben
      If  Schuss(t,2) <    - 50 Then  ;Je nach Größe des bildes
          Schuss(t,0) = 0 ;Abschalten
      End If
      Rect Schuss(t,1),    Schuss(t,2) ,3,8,1
       ;DrawImage    Laserbild,     Schuss(t,1),    Schuss(t,2)
     Case 3
     ; Vieleicht ne Mine usw.
     End Select
  End If
Next
End Function

Erläuterung:
deine Figur gibt einenschuss ab
an dieser stelle soll jetzt der schuss starten und du ruft die erste function auf die die Werte gleich mit übergibt
x und y ist deine figur und je nach Taste dann eine Rakete oder mine oder tomaten
schuss_starten (x_pos,y_pos,Art)
diese function übergibt die Werte in das DimFeld Schuss
es wird eine nicht aktive rausgesucht und Werte werden übergeben
die zweite Funcktion ,steht in der Hauptschleife,verschiebt die Bilder und zeichnet sie
ggf. werden diese dan gelöscht wenn sie aus dem bild verschwinden
2 waffen habe ich eingebaut space und linke altTaste
einfach in den editor und starten
[BB2D | BB3D | BB+]

Julz

BeitragFr, Jan 09, 2004 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Die erste schussfunktion war von mir, aber damit kann man in alle richtungen schießen, und da sind noch bewegungen drin für mein char, dass der während des schusses auch die waffe hält und so en schnick schnack

Wenn du willst kann ich sie dir erklären oder so für deine zwecke umbauen Very Happy
 

ZAiMoN

BeitragFr, Jan 09, 2004 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
ja wäre nett Smile
aber ich muss nur nach links oder rechts schiessen können öhm und ne waffen animation wollte ich mir auch schon einbauen
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill

Julz

BeitragFr, Jan 09, 2004 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
So hab die funktion mal aufs wichtigste gesetzt kanns dir ja mal anschauen, bei fragen einfach mich kontakten Wink

Function schiessen()

If Keydown(strg)
shoot = shoot + 1
if shoot = 40 then shoot = 0
schuss(0,shoot,0) = 1
schuss(0,shoot,1) = x
schuss(0,shoot,2) = y
Endif

If Keydown(strg)
shoot = shoot + 1
if shoot = 40 then shoot = 0
schuss(1,shoot,0) = 1
schuss(1,shoot,1) = x
schuss(1,shoot,2) = y
Endif

End Function

function schussmalen()

for l = 0 to 40
if schuss(0,l,0) = 1 then
drawimage boom, schuss(0,l,1), schuss(0,l,2)
schuss(0,l,1) = schuss(0,l,1) - 10
endif
next

for l = 0 to 40
if schuss(3,l,0) = 1 then
drawimage boom, schuss(3,l,1), schuss(3,l,2)
schuss(3,l,1) = schuss(3,l,1) + 10
endif
next

end function

Mit dieser funktion kannst du jetzt nach links und rechts schießen
 

ZAiMoN

BeitragFr, Jan 09, 2004 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
ich lösch mal die langen codes damit es net unübersichtlich wird
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
  • Zuletzt bearbeitet von ZAiMoN am Fr, Jan 09, 2004 19:33, insgesamt einmal bearbeitet
 

ZAiMoN

BeitragFr, Jan 09, 2004 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
hab doch noch eine sehr wichtige frage.
man sollte die schuesse sehen können und zwar nicht als linie sonder als Kugeln.
Also müsste die For schleife langsamer ablaufen damit man jede kugel sehen kann und keine linie entsteht.
Irgent wie bekomme ich das nicht hin Sad


Code: [AUSKLAPPEN]

Function schiessen() 

If KeyDown(schiessen) And taste = 2 And hero = dude_m4  Then 
schussx = Player_pos_x + 3
schussy = Player_pos_y + 15
ziel = schussx - 250
For x = schussx To ziel Step -1
If MilliSecs() - warten   > 100 Then
warten = MilliSecs()
DrawImage kugel,x,schussy
EndIf
Next 
EndIf

If KeyDown(schiessen) And taste = 1 And hero = dude_m4 Then 
schussx = Player_pos_x + 5
schussy = Player_pos_y + 15
ziel = schussx + 250
For x = schussx To ziel
If MilliSecs() - warten  > 100 Then
warten = MilliSecs()
DrawImage kugel,x,schussy
EndIf
Next 
EndIf

End Function
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill

Julz

BeitragFr, Jan 09, 2004 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann die schussroutine nicht testen ist der code drum rum sehr viel oder geheim Wink oder so oder könntest du den mal posten dann kann ich das ganze testen und anschauen und gegebenen falls helfen Very Happy
 

ZAiMoN

BeitragFr, Jan 09, 2004 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
wozu brauchst du den ganzen code?

ich wollte eigentlich nur wissen was ich machen muss damit die kugeln nicht so schnell gezeichnet werden also ob Millisecs richtig eingesetzt worden ist.
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Jan 09, 2004 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
hi das erste was mir auffällt, ist das du eine Function hast
>>>>schiessen()
und eine Variable
>>>>If KeyDown(schiessen)
das könnte zu Problemen führen

dann ist mir das noch ein Rätsel mit der Abfrage
so wie das aussieht wird die Kugel dann so oft gezeichnet das du wahrscheinlich einen Strich sieht wenn du Flip machst
aber durch das millisecs könnte es sein das garnichts davon zu sehen ist

wenn du den Code so weiter machst, dann bekommst du unweigerlich Probleme beim Abfragen der Kolloisionen vor allem wenn nicht nur ein schuss vorhanden ist

Das Prinzip
mit 2 Functionen

>erstellen eines Schusses
beim drücken der Schusstaste die Position festhalten in variablen und in die Schussliste einfügen


die 2. Function
alle schüsse malen

alles in einem wird kaum gehen!
[BB2D | BB3D | BB+]
 

ZAiMoN

BeitragSa, Jan 10, 2004 0:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Edit: falschen code gelöscht damit ihn keiner falsch übernimmt...
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
  • Zuletzt bearbeitet von ZAiMoN am Sa, Jan 10, 2004 1:07, insgesamt einmal bearbeitet
 

konstantin

BeitragSa, Jan 10, 2004 0:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Easy, du benutzt ja auch Keydown, das heißt du feuerst sehr schnell deine Kugeln hintereinander ab. Wenn du KeyHit() benutzt, schiesst man immer nur eine Kugel ab, sone Art Pistole oder Gewehr. Oder du baust halt nen Timer ein.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Jan 10, 2004 0:48
Antworten mit Zitat
Benutzer-Profile anzeigen
der fehler liegt darin das du in einer schleife den einen schuss komplett zeichnest ( also x malzeichnest) und dan erst geflipt wird

ein schuss anzeigen geht so
hier mal ganz groooob

hauptschleife
repeat
...
...
Function
tastenabfragen und ggf schuss aktivieren und daten übergeben

function Schuss malen hier keine tastenabfrage sonst geht es nur solange du keydown hast

flip
until keyhit(1)
end

function Schuss malen
position schuss = position schuss +1 also nur eins weitersetzten
Schuss eimal malen und dann zurück zur hauptschleife Bild anzeigen
endfunktion

so sollte es in etwa sein
[BB2D | BB3D | BB+]

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Jan 10, 2004 0:57
Antworten mit Zitat
Benutzer-Profile anzeigen
@Alu
er hat die die xposition der kugel als schleifenzähler benutzt, deswegen die Striche, das bedeutet das auch bei Keyhit ein strich gemalt wird aber der wird wohl kaum zu sehen sein da dieser dannnur eimal gezeichnet wird
[BB2D | BB3D | BB+]
 

ZAiMoN

BeitragSa, Jan 10, 2004 1:07
Antworten mit Zitat
Benutzer-Profile anzeigen
langsam glaub ich das ich diese funktion nie richtig hinbekommen werde.
versuche es schon seit stunden

Code: [AUSKLAPPEN]

;<---- SCHIESSEN ---->
Function Schuss() 
If KeyDown(schiessen) And taste = 1 And hero = dude_m4 Then 
schussx = Player_pos_x + 5  ;schuss start position wird ermittelt
schussy = Player_pos_y + 15
schussdaten = 1
EndIf
If KeyDown(schiessen) And taste = 2 And hero = dude_m4  Then 
schussx = Player_pos_x + 3  ;schuss start position wird ermittelt
schussy = Player_pos_y + 15
schussdaten=2
EndIf
End Function

Function DrawSchuss()
If schussdaten = 1 = 3 And hero = dude_m4  Then  ;Daten werden übertragen
schussx = schussx+1
DrawImage kugel,schussx,schussy
EndIf
If schussdaten = 2 = 3 And hero = dude_m4  Then ;Daten werden 
schussx = schussx-1
DrawImage kugel,schussx,schussy
EndIf
End Function


und was ist hier falsch??
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
  • Zuletzt bearbeitet von ZAiMoN am Sa, Jan 10, 2004 1:15, insgesamt einmal bearbeitet

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group