Arrays lokal abändern -> Auswahl
Übersicht

![]() |
M0rgensternBetreff: Arrays lokal abändern -> Auswahl |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute.
Ich hab grade versucht ne Abfrage für die Auswahl meiner Gegner zu schreiben. Undzwar soll das ganze so ablaufen: Die Gegner sollen dem momentanen Level angepasst sein. Also, sagen wir in Level 1 kommen NUR Gegner mit der ID 1. In Level 2 kommen Gegner mit der ID 1 UND 2 In Level 5 kommen Gegner mit der ID 1, 2, 3, 4 und 5. Aber es muss nicht zwangsläufig jede ID dann vertreten sein, weil immer nur höchstens 3 Gegner erstellt werden (rand(1,3)). Jetzt wollte ich keine select case oder if Abfragen einbauen. Das ist unschön und unpraktisch. Meine Lösung sieht so aus: Code: [AUSKLAPPEN] Function SetEnemy(LevelNow)
Local Versuche Local Anzahl = Rand(1,3) Local ZuNah = 0 Local Enemys%[LevelNow] Local AusWahl%[Anzahl] For i = 1 To LevelNow Enemys[i] = LevelNow - (LevelNow-i) Next For i = 1 To Anzahl ;Grundlegendes wie Koordinaten etc AusWahl[i] = Rand(1,Enemy[LevelNow]) For VorlageGegner.TVorlageGegner = Each TVorlageGegner If VorlageGegner\ID = AusWahl[i] Then Gegner\Image = VorlageGegner\Image Gegner\Level = VorlageGegner\Level + (Rand(0, 2)) Gegner\Erfahrung = VorlageGegner\Erfahrung + (Gegner\Level*10) Gegner\Energie# = VorlageGegner\Energie# + Gegner\Level*10 Gegner\Speed# = VorlageGegner\Speed# Gegner\SchussTimer = VorlageGegner\SchussTimer + Rand(100,400) Gegner\ID = VorlageGegner\ID EndIf Aber der Compiler beschwert sich, dass das BlitzArray statisch zu sein hat. Und ein normales Array darf ich ja in ner Funktion nicht erstellen. Kann mir vielleicht jemand aus dem Dillema raushelfen? Wäre echt nett. Lg, m0rgenstern |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deine VorlageGegner sind schon außerhalb der Funktion als TYPES definiert. Ich denke mal, dort hat jeder schon seine ID erhalten. Was spricht dann dagegen in der Auswahlfunktion es einfach so zu machen:
BlitzBasic: [AUSKLAPPEN]
Ich lass übrigens immer eine laufende Nummer als eines der FIELDs in einem Type bei der Erstellung (=NEW) von Elementen mitlaufen. Das ist praktisch, weil Du dann konkret ein Element ansprechen kannst: BlitzBasic: [AUSKLAPPEN] Type TVorlageGegner Das wäre jetzt hierbei der Zufallsauseahl ganz praktisch: BlitzBasic: [AUSKLAPPEN]
|
||
- Zuletzt bearbeitet von Midimaster am Mo, Dez 28, 2009 13:51, insgesamt einmal bearbeitet
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Folgendes spricht dagegen:
Angenommen ich bin in Level 5 und lasse 3 Gegner erstellen. Dann werden folgende Gegnertypen erstellt: Gegner1 mit der ID 1 Gegner2 mit der ID 2 Gegner3 mit der ID 3 weil er die Gegnertypen ja von oben nach unten durchgeht. Dann kommt immer der mit der ID1 zuerst etc. oder hab ich nen Denkfehler drin? Ansonsten wärs echt total einfach. Lg, M0rgenstern |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
hab das obere grad noch mal editiert | ||
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist genial.
Vielen Dank. Warum bin ich nicht auf die Lösung gekommen ![]() ![]() Das NummernFeld ist schnell ingefügt und verarbeitet. Vielen Dank, ich editier das ganze nochmal wenns funktioniert (würde mich wundern wenn nicht), hab jetzt leider keine Zeit mehr. Lg, M0rgenstern |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
die Zufallsliste kann man doch als Type darstellen.
Mir ist dieses 999 Fields erstellen ein Dorn im Auge. Code: [AUSKLAPPEN] Type Zufall
field ID end Type for i=0 to anzahl z.zufall = new zufall z\id = ermittelteId next |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke ihr beiden.
Funktioniert richtig gut. Aber den Type hab ich rausgelassen. Das mit dem Dim Feld funktioniert super, auch wenn ich weiß, dass es nicht die perfekte Lösung ist. Lg, M0rgenstern |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group