Types abfrage
Übersicht

![]() |
Raiden93Betreff: Types abfrage |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo ich würde gerne wissen wie ich Types abfragen kann ob eine Gruppe von Gegner noch Lebt oder ob alle schon ToT sind.
Sagen wir mal ich habe 5 Zombies und nach den 5 Zombies sollen 10 kommen da muss ich doch erstmal eine abfrage machen ob die 5 Zombies noch Leben oder ob sie alle schon ToT sind. Währe echt cool wenn mir jemand ein Beispiel Posten könnte. MFG: Raiden93 |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schon mal selbst darüber Nachgedacht und dir Befehle angeschaut, die man verwenden könnte? | ||
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) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weis nicht wo die Types befehle sind unter Hilfe kann ich sie nicht finden :/ | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ohne dir zu nahe treten zu wollen: Dann such dir jemanden der für dich programmiert.
Man kann die Englische Standardhilfe mit der OH hier aus dem Portal austauschen und mit einem Druck auf F1 alle Befehle in der IDE nachschlagen - hübsch mit Verwandten Schlüsselworten. Wenn du so was simples wie Suchen in einem bereits exzellenten Nachschlagewerk (in Verbindung mit dem Internet ![]() |
||
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) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
passiert | ||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beschäftige dich erstmal ein weilchen mit der Funktion und Verwendung von Types, und verstehe diesen Code hier:
BlitzBasic: [AUSKLAPPEN] Type Zombie |
||
It's done when it's done. |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe ein kleinen Versuch gemacht aber kläglich dran gescheitert er Löscht zwar die Punkte aber auch nach dem Letzten sagt er mir nicht das alle ToT sind.Was hab ich Falsch gemacht?
Code: [AUSKLAPPEN] ;In diesem Versuch,versuche ich Spieler zu Spawnen und sie abfragen ob sie noch Leben
Type SpielerTyp Field X#, Y#, Speed# ;Bewegung End Type Global Spieler.SpielerTyp AppTitle "Type Abfrage" Graphics 800,600,32,2 SetBuffer BackBuffer() For i=1 To 10 Spieler.SpielerTyp = New SpielerTyp Spieler\X# = Rand(1,800) Spieler\Y# = Rand(1,600) Spieler\Speed# = Rnd(0.1,0.2) Next Repeat Cls Spieler_zeichnen() Flip 0 Until KeyHit(1) Function Alles_ToT() Text 400,300,"ALLES TOOOOOOOOOOOOOOT" End Function Function Spieler_zeichnen() For Spieler.SpielerTyp = Each SpielerTyp If Spieler=Null Alles_ToT End If Rect Spieler\X#,Spieler\Y#,3,3 If MouseHit(1) Delete Spieler End If Next End Function |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN] Function Spieler_zeichnen() Wenn ein Type leer ist, wird die For ![]() ![]() |
||
It's done when it's done. |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die For...Each Schleife wird überhaupt nicht durchlaufen, wenn keine Instanz existiert. | ||
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) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ahh ok gut zu wissen. | ||
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm es klappt soweit alles.Wie sollte ich am besten die Realisierung der verschiedenen Gegnern machen?
Damit meine ich jeden einzelne verschiedene Gegner in eine andere Funktion packen und sie dann einzeln aufrufen? Oder doch ehr anders? |
||
![]() |
Dice of Darkness |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich hab in meinem ersten Spiel die Gegner in verschiedene Types gepackt, aber hinterher festgestellt, dass das ziemlicher Unsinn war. Nimm am besten einen Type "Enemy" (oder wie auch immer du den nennst) und erstelle darin ein Field "Kind" (also Sorte). So mache ich das immer, wenn ich die Gegner unterscheiden will. Also wenn an Stelle x z.B. ein grünes Monster sein soll, erzeuge ein Objekt mit enemy\kind = green, soll es ein rotes sein, nimmst du enemy\kind = red usw. Das musst du natürlich deinen Wünschen und Vorstellungen anpassen ![]() Falls die Monster sich grundlegend unterschiedlich verhalten, dann nimm am besten verschiedene Funktionen, um ihr Verhalten zu steuern. Also nimmst du einen Select-Case-Block und guckst, was für ein Viech das ist. Hier ein ungefährer Beispielcode: Code: [AUSKLAPPEN] Type Enemy
Field kind End Type (...) Function EnemyBehaviour() ; hier wird entschieden, wie das Monster sich verhalten soll For enemy.enemy = Each enemy Select enemy\kind Case "red" : RedEnemy() ; wenn das Monster rot ist, rufe die Funktion für dessen Verhalten auf Case "green" : GreenEnemy() (...) End Select End Function Function RedEnemy() ;hier wird festgelegt, was die roten Monster machen sollen End Function Function GreenEnemy() ;siehe oben... End Function (...) |
||
Gratis Spiele, Musik, Tools |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das mit "alle Monster in ein Type packen" überlege ich mir auch gerade. Ich wollte sonst einzelne Types erstellen. Was sagen denn die Experten dazu?^^ | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das kommt darauf an.
Variationen können gut mit einem Type verwaltet werden. Bei Unterschiedliche Verhaltensweisen/Reaktionen auf die Spielwelt macht sich eine Aufteilung vielleicht schon besser. Je mehr Objekte in einer Type-Kollektion verwaltet werden, desto mehr wird bei For...each durch gezählt und je mehr Bedingungen braucht man für alle Spezialfälle - ist auch eine Sache der Übersichtlichkeit. Am besten wäre es immer, vorher (vor dem coden) eine Aufstellung zu haben, was gebraucht wird, um das intelligent zusammen zu fassen. |
||
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) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist das soweit Richtig weil ich langsam das Gefühl bekomme wenn ich es so mache das ich irgendwo hängen bleibe.Deswegen frag ich lieber mal nach.
Code: [AUSKLAPPEN] ;In diesem Versuch,versuche ich Spieler zu Spawnen und sie abfragen ob sie noch Leben
Type TankGegnerTyp Field X#, Y#, Speed# ;Bewegung End Type Type SpeedGegnerTyp Field X#, Y#, Speed# End Type Global TankGegner.TankGegnerTyp Global SpeedGegner.SpeedGegnerTyp AppTitle "Type Abfrage" Graphics 800,600,32,2 SetBuffer BackBuffer() Global Level = 1 For i=1 To 5 Tank_Gegner_Erstellen() Next For i=1 To 5 Speed_Gegner_Erstellen() Next Repeat Cls Level_System() Gegner_Kollision() Flip 0 Until KeyHit(1) Function Level_System() Select Level Case 1 For TankGegner.TankGegnerTyp = Each TankGegnerTyp Color 255,0,0 Oval TankGegner\X#,TankGegner\Y#,3,3 TankGegner\X# = TankGegner\X# +TankGegner\Speed# Next TankGegner.TankGegnerTyp=First TankGegnerTyp If TankGegner.TankGegnerTyp=Null For i=1 To 5 Tank_Gegner_Erstellen() Next End If For SpeedGegner.SpeedGegnerTyp = Each SpeedGegnerTyp Color 0,0,255 Oval SpeedGegner\X#,SpeedGegner\Y#,3,3 SpeedGegner\X# = SpeedGegner\X# +SpeedGegner\Speed# Next End Select End Function Function Tank_Gegner_Erstellen() TankGegner.TankGegnerTyp = New TankGegnerTyp TankGegner\X# = 0 TankGegner\Y# = Rnd(1,600) TankGegner\Speed# = Rnd(0.01,0.03) End Function Function Speed_Gegner_Erstellen() SpeedGegner.SpeedGegnerTyp = New SpeedGegnerTyp SpeedGegner\X# = 0 SpeedGegner\Y# = Rnd(1,600) SpeedGegner\Speed# = Rnd(0.04,0.06) End Function Function Gegner_Kollision() For TankGegner.TankGegnerTyp = Each TankGegnerTyp If TankGegner\X# => 600 Delete TankGegner End If Next For SpeedGegner.SpeedGegnerTyp = Each SpeedGegnerTyp If SpeedGegner\X# => 600 Delete SpeedGegner End If Next End Function |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kann man so machen. Allein wegen dem Geschwindigkeitsunterschied ein anderen Type zu verwenden ist vielleicht etwas übertrieben - da kann man mit Parametern beim Erstellen eigentlich genug regeln um aussehen/Geschwindigkeit zu varieeren (und ggf. um mehrere Gegner gleichzeitig zu erstellen), aber prinzipiell kann man es auch so machen. | ||
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) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es schein soweit alles zu Funktionieren,nur habe ich das Problem,das z.b der Tank nur 3 die schleife durchlaufen soll.Wie ist sowas eigentlich möglich?
Edit: Ich hab es mal so versucht aber es will nicht 3 mal die Schleife durchlaufen :/ habe ich was übersehen die schleife läuft nur 1 mal durch. Code: [AUSKLAPPEN] ;In diesem Versuch,versuche ich Spieler zu Spawnen und sie abfragen ob sie noch Leben
Type TankGegnerTyp Field X#, Y#, Speed# ;Bewegung End Type Type SpeedGegnerTyp Field X#, Y#, Speed# End Type Global TankGegner.TankGegnerTyp Global SpeedGegner.SpeedGegnerTyp AppTitle "Type Abfrage" Graphics 800,600,32,2 SetBuffer BackBuffer() Global Level = 1 For i=1 To 5 Tank_Gegner_Erstellen() Next For i=1 To 5 Speed_Gegner_Erstellen() Next Repeat Cls Level_System() Gegner_Kollision() Flip 0 Until KeyHit(1) Function Level_System() Select Level Case 1 ;TankGegner Spawnen For TankGegner.TankGegnerTyp = Each TankGegnerTyp Color 255,0,0 Oval TankGegner\X#,TankGegner\Y#,3,3 TankGegner\X# = TankGegner\X# +TankGegner\Speed# Next ;TankGegner nur 3 mal Durchlaufen <------ Hier taucht der Fehler auf Local Durchlauf If Durchlauf > 3 Durchlauf = Durchlauf +1 TankGegner.TankGegnerTyp=First TankGegnerTyp If TankGegner.TankGegnerTyp=Null For i=1 To 5 Tank_Gegner_Erstellen() Next End If End If ;SpeedGegner Spawnen For SpeedGegner.SpeedGegnerTyp = Each SpeedGegnerTyp Color 0,0,255 Oval SpeedGegner\X#,SpeedGegner\Y#,3,3 SpeedGegner\X# = SpeedGegner\X# +SpeedGegner\Speed# Next SpeedGegner.SpeedGegnerTyp = First SpeedGegnerTyp If SpeedGegner.SpeedGegnerTyp=Null For i=1 To 5 Speed_Gegner_Erstellen() Next End If End Select End Function Function Tank_Gegner_Erstellen() TankGegner.TankGegnerTyp = New TankGegnerTyp TankGegner\X# = 0 TankGegner\Y# = Rnd(1,600) TankGegner\Speed# = Rnd(0.08,0.1) End Function Function Speed_Gegner_Erstellen() SpeedGegner.SpeedGegnerTyp = New SpeedGegnerTyp SpeedGegner\X# = 0 SpeedGegner\Y# = Rnd(1,600) SpeedGegner\Speed# = Rnd(0.04,0.06) End Function Function Gegner_Kollision() For TankGegner.TankGegnerTyp = Each TankGegnerTyp If TankGegner\X# => 600 Delete TankGegner End If Next For SpeedGegner.SpeedGegnerTyp = Each SpeedGegnerTyp If SpeedGegner\X# => 600 Delete SpeedGegner End If Next End Function |
||
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe nochmal alles in einem anderen Code ohne Types gemacht da Funktioniert es aber warum bei meinem Code nicht :/ ? | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich verstehe nicht, was du erreichen möchtest.
Code: [AUSKLAPPEN] Local Durchlauf
Die Variable wird mit 0 Initialisiert, weshalb die Bedingung nie Wahr werden kann - so, was ist der Plan?
If Durchlauf > 3 |
||
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) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich wollte eigentlich eine Schleife machen die aber nur 3 mal durchläuft anstatt => hätte ich wohl mal <= machen sollen aber selbst das Funktioniert nicht. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group