3 gegner probleme

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

masterman123

Betreff: 3 gegner probleme

BeitragDi, Jan 19, 2010 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

1.mein gegner soll nicht immer ununterbrochen schießen,sonder nachladen(nichtschießen für 2s)

2.wenn ich mit entitydistance sage das,wenn ich <450 bin dann soll er schießen,aber dann schießen alle gegner

Code: [AUSKLAPPEN]
Function Update_Aliens()

For al.aliens=Each aliens
If EntityDistance(al\obj,cam)<450 And EntityDistance(al\obj,cam)>15 Then
al\timer=al\timer+1
winkel#=DeltaYaw(al\obj,cam)
TurnEntity al\obj,0,winkel#/22,0
If al\timer=9 And leben > 0
Create_AlienBullets()
al\timer=0
EndIf
EndIf

If EntityCollided(al\obj,shotme) Then
al\life=al\life-1
EndIf

If EntityCollided(al\obj,terre)
Else TranslateEntity al\obj,0,-1,0
EndIf

If al\life=0
FreeEntity al\obj
Delete al
AlienCount=AlienCount-1
EndIf
Next

End Function


3.dann soll,wenn der gegner tot ist(gelöscht),ein anderer gegner kommen(der liegt da rum)

wie geht das?

mfg masterman123

ozzi789

BeitragDi, Jan 19, 2010 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
1. if millisecs

2. Begreif deinen Code nicht ganz

3. dann soll,wenn der gegner tot ist(gelöscht),ein anderer gegner kommen(der liegt da rum)

Wer soll da rum liegen?
Wenn du ihn löscht mit Delete einfach einen neuen Erstellen, wo ist da das Problem?

mfg
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

masterman123

BeitragDi, Jan 19, 2010 19:10
Antworten mit Zitat
Benutzer-Profile anzeigen
1.ok ich versuchs/hab nicht hingekriegt

2.naja egal

3.das krieg ich ja nicht hin Embarassed

ozzi789

BeitragDi, Jan 19, 2010 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
1. so in die Richtung muss das ausschauen, falls dus nicht checkst, frag ruhig nach;)
Code: [AUSKLAPPEN]

Type gegner
   Field x
   Field y
   Field rldtime
End Type

Type schuss
   Field x
   Field y
End Type

g.gegner=New gegner
g\x=100
g\y=10
g\rldtime=13

g.gegner=New gegner
g\x=100
g\y=100
g\rldtime=124

g.gegner=New gegner
g\x=100
g\y=200
g\rldtime=86

While Not KeyHit(1)

Cls

   For g.gegner= Each gegner
      Rect g\x,g\y,10,10,1
      g\rldtime=g\rldtime-1
      If g\rldtime=0
         g\rldtime=150
         s.schuss=New schuss
         s\x=g\x
         s\y=g\y
      EndIf
   Next
   
   For s.schuss= Each schuss
   s\x=s\x+1
   Text s\x,s\y,"*",1,1
   If s\x>500 Then Delete s.schuss
   Next
   
Flip 60
   
Wend





3. was willst du denn nun?


,mfg
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Dottakopf

BeitragMi, Jan 20, 2010 9:01
Antworten mit Zitat
Benutzer-Profile anzeigen
zum 3ten Punkt, ein Beispiel ausm Bauch raus.

Code: [AUSKLAPPEN]


for g.TGegner = each Gegner


  If g.TGegner\hp = 0 then
      g2.TLeiche = new Tleiche
      Positionentity g2.Tleiche\handle , g.TGegner\posX , g.TGegner\posY , g.TGegner\posZ
      delete g.TGegner
  end if

next



Wenn der Gegner 0 Hp hat, dann erstelle zuerst die Leiche an dessen Position und lösche erst dann den Gegner.

Ich denke es wäre aber sinnvoller, wenn du "Gegner" und "Leiche" zusammenführst. Also wenn der Gegner verreckt, dann kann er ja tot am boden liegen bleiben und nach einiger zeit gelöscht werden.


~EDIT~

Ach frage 1 wurde auch nicht beantwortet. Naja ich denke das erklärt sich von selbst:

(Lauffähiger code)
Code: [AUSKLAPPEN]

While Not KeyHit(1)

            If MilliSecs() >=time+1000 Then
            
               time=MilliSecs()
               Print "Stinken ist cool ! "
            
            End If

Wend
End



die +1000 sagen aus wieviele Millisekunden gewartet werden soll bis die IF-Abfrage "=True" ist
Time speichert einfach nur die aktuelle millisekunden zeit, und wird zum abgleichen benötigt

Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!
 

masterman123

BeitragMi, Jan 20, 2010 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,
1.ich kriegs nicht in meine function rein

Code: [AUSKLAPPEN]
Function Update_Aliens()

For al.aliens=Each aliens
If EntityDistance(al\obj,cam)<250 And EntityDistance(al\obj,cam)>15 Then
al\timer=al\timer+1
winkel#=DeltaYaw(al\obj,cam)
TurnEntity al\obj,0,winkel#/22,0
 If  al\timer=9 And leben > 0
Create_AlienBullets()
al\timer=0
End If
EndIf

If EntityCollided(al\obj,shotme) Then
al\life=al\life-1
EndIf

If EntityCollided(al\obj,terre)
Else TranslateEntity al\obj,0,-1,0
EndIf

If al\life=0
FreeEntity al\obj
Delete al
AlienCount=AlienCount-1
EndIf
Next

End Function


zu 3. ich habs versucht ratet mal ob ichs hinbekommen habe

Xeres

Moderator

BeitragMi, Jan 20, 2010 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
9 Frames sind nun mal keine 2 Sekunden. Der Einsatz von Millisecs wurde dir ja schon empfohlen.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

masterman123

BeitragMi, Jan 20, 2010 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
ich will ihn nicht langsamer machen sonder das der schuss 2s auf hört und dann weiter geht

Xeres

Moderator

BeitragMi, Jan 20, 2010 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist das selbe Prinzip. Du hast eine bestimmte Anzahl von Schüssen z.B. Magazin und wenn das 0 erreicht speicherst du die Zeit. Wenn 2 Sekunden vorbei sind, wird das Magazin wieder aufgefüllt.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Dottakopf

BeitragMi, Jan 20, 2010 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Boa es ist ziemlich schwer aus deinem Codeschnipsel schlau zu werden, wenn er so unformatiert ist.


also nochmal zu deinem Nachlade-Schuss-Unterbrechungs-Problem-dings-da...
Eigentlich brauchst du ja garnicht denn schuss für 2sek auser betrieb nehmen. Schreib doch lieber eine Abfrage die einfach prüft ob er gerade was im Magazin hat oder nicht. Und mach es abhängig von der Länge der Nachlade animation.(Vorteil: egal was für eine Waffe benützt wird, er lädt auch wirklich erst die waffe "neu" wenn das nachladen fertig ist)


Somit ergibt sich dieses Logische konstrukt: (ausm Bauch)


Code: [AUSKLAPPEN]

Function schuss()

        IF Magazin > 1 and Mousedown(1) Then   animate "Schuss animation"   :  Create_new_shot
     
        IF Magazin < 1 and Nachladen=1 Then   
                 "starte nachlade animation"
                 IF "letzter keyframe der Animation erreicht" then Magazin=10:Nachladen=0
        end if


End Function

Rechtschreibfehler gelten der allgemeinen Belustigung!
 

masterman123

BeitragMi, Jan 20, 2010 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
ok

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group