variable Gegnerzahl [gelöst]
Übersicht

![]() |
ViddeBetreff: variable Gegnerzahl [gelöst] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe schon ein kleines projekt, welches funzt, ist aber mit 2 Gegnern (fix) programmiert.
Nun will ich den Code erweitern und auch die Gegnerzahl variieren lassen (zwischen 2 und max. 5) und schon dabei bin ich mit meinem Anfängerlatein am Ende... Folgende Function fragt die Gegnerzahl ab (klappt auch noch):Code: [AUSKLAPPEN] Function Max() Repeat Max = Input("Wie viele Computergegner?: ") Until Max > 1 And Max < 6 End Function Jedem Gegner wird Anfangs ein Wert von 50 zugewiesen Code: [AUSKLAPPEN] Function ProzentAnfang() For i = 0 To Max Prozent(i) = 50 Next End Function Mit der Funktion "Test" soll der Wert 50 für jeden angezeigt werden...Code: [AUSKLAPPEN] Function Test() If Max = 2 Write " " + Prozent(0) + " " + Prozent(1) + " " + Prozent(2) EndIf If Max = 3 Write " " + Prozent(0) + " " + Prozent(1) + " " + Prozent(2) + " " + Prozent(3) EndIf If Max = 4 Write " " + Prozent(0) + " " + Prozent(1) + " " + Prozent(2) + " " + Prozent(3) + " " + Prozent(4) EndIf If Max = 5 Write " " + Prozent(0) + " " + Prozent(1) + " " + Prozent(2) + " " + Prozent(3) + " " + Prozent(4) + " " + Prozent(5) EndIf End Function ... machts aber nicht - warum nicht? |
||
Gern der Zeiten gedenk ich, als alle Glieder gelenkig - bis auf eins. Diese Zeiten kehren nie wieder, steif sind nun alle Glieder - bis auf eins. |
- Zuletzt bearbeitet von Vidde am Mo, Feb 09, 2009 17:17, insgesamt einmal bearbeitet
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiß jetzt nicht was "write" ist, aber ich würde es so machen:
Code: [AUSKLAPPEN] Function Test() For n = 0 To Max Text 10, 20 * n, Prozent(n) Next End Function |
||
www.botbomb.robotzgames.de
www.robotzgames.de |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist "Max" auch Global![]() |
||
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) |
![]() |
Vidde |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn ich Max vorher "Global" setze meckert er dann, dass Max doppelt vorkommt | ||
Gern der Zeiten gedenk ich, als alle Glieder gelenkig - bis auf eins. Diese Zeiten kehren nie wieder, steif sind nun alle Glieder - bis auf eins. |
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, du hast auch eine Funktion "Max" und eine Variable Max.
Das musst du ändern und die Variable muss Global sein. |
||
www.botbomb.robotzgames.de
www.robotzgames.de |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
...
du kannst eine funktion nicht als global definieren. versuch doch mal deine funktion max in maxx umzubennen und dann zu starten [edit]zu spät |
||
Warbseite |
![]() |
Vidde |
![]() Antworten mit Zitat ![]() |
---|---|---|
das ändert auch nix am ergebnis. es muss doch etwas geben, wie ich die gegneranzahl von spiel zu spiel ändern kann. | ||
Gern der Zeiten gedenk ich, als alle Glieder gelenkig - bis auf eins. Diese Zeiten kehren nie wieder, steif sind nun alle Glieder - bis auf eins. |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du die Gegnerzahl mit Max festgelegt hast, erstellst du ebenso viele Gegner... Die nötigen Informationen entweder in einem Array oder - noch besser - in Types speichern.
Woran genau hapert's denn? |
||
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) |
![]() |
Vidde |
![]() Antworten mit Zitat ![]() |
---|---|---|
also das exakte problem ist, dass anschließend nicht die Prozentwerte aller beteiligten ausgespukt werden, wie von der Funktion "Test" gefordert. er übergeht diese anweisung. ich vermisse quasi bei 5 gegnern folgende zeile:
50 50 50 50 50 50 edit: habe übrigens Prozent wie foldt vereinbart: Dim Prozent(Max) |
||
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Type Gegner
Field prozent% End Type Global maxGegner% Global enemy.Gegner Function anzahlGegner () Repeat maxGegner = Input ("Wie viele Computergegner?: ") Until maxGegner > 1 And maxGegner < 6 End Function Function ProzentAnfang () Local i% For i = 0 To maxGegner enemy.Gegner = New Gegner enemy\prozent = 50 Next End Function Function Test () Local n% For enemy.Gegner = Each Gegner Print enemy\prozent Next End Function anzahlGegner () ProzentAnfang () Test () WaitKey () Ich schreibs noch mal mit Dims. Aber du könntest nochmal deinen jetzigen Code zeigen. |
||
![]() |
Vidde |
![]() Antworten mit Zitat ![]() |
---|---|---|
also in Dim wärs mir tatsächlich lieber...
der anfang sieht wie folgt aus:Code: [AUSKLAPPEN] SeedRnd MilliSecs() Dim Coins(Max) Dim Prozent(Max) Dim E(2) Dim ABCoins(2) Dim X(2) Dim SchlachtC(2) Dim Treffer(2) Dim VL(Max) Dim VR(Max) Dim AL(Max) Dim AR(Max) Dim EGL(Max) Dim EGR(Max) Function Maxx() Repeat Max = Input("Wie viele Computergegner?: ") Until Max > 1 And Max < 6 End Function Function ProzentAnfang() For i = 0 To Max Prozent(i) = 50 Next End Function Function Test() If Max = 2 Write " " + Prozent(0) + " " + Prozent(1) + " " + Prozent(2) EndIf If Max = 3 Write " " + Prozent(0) + " " + Prozent(1) + " " + Prozent(2) + " " + Prozent(3) EndIf If Max = 4 Write " " + Prozent(0) + " " + Prozent(1) + " " + Prozent(2) + " " + Prozent(3) + " " + Prozent(4) EndIf If Max = 5 Write " " + Prozent(0) + " " + Prozent(1) + " " + Prozent(2) + " " + Prozent(3) + " " + Prozent(4) + " " + Prozent(5) EndIf End Function Maxx Print Max ProzentAnfang Print "" Print " Das Dorfzentrum ist Ausgebaut zu (in %):" Test |
||
Gern der Zeiten gedenk ich, als alle Glieder gelenkig - bis auf eins. Diese Zeiten kehren nie wieder, steif sind nun alle Glieder - bis auf eins. |
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Global maxGegner% = anzahlGegner ()
Dim Prozent (maxGegner) Function anzahlGegner% () Local anzahl% Repeat anzahl = Input ("Wie viele Computergegner?: ") Until anzahl > 0 And anzahl < 6 Return anzahl End Function Function ProzentAnfang () Local i% For i = 0 To maxGegner - 1 Prozent (i) = 50 Next End Function Function Test () Local n% For n = 0 To maxGegner - 1 Print Prozent (n) Next End Function ProzentAnfang () Test () WaitKey () Code: [AUSKLAPPEN] SeedRnd MilliSecs()
;Die Globale Variable hat vorher immer noch gefehlt Global Max% Dim Coins(Max) Dim Prozent(Max) Dim E(2) Dim ABCoins(2) Dim X(2) Dim SchlachtC(2) Dim Treffer(2) Dim VL(Max) Dim VR(Max) Dim AL(Max) Dim AR(Max) Dim EGL(Max) Dim EGR(Max) Function Maxx() Repeat Max = Input("Wie viele Computergegner?: ") Until Max > 1 And Max < 6 End Function Function ProzentAnfang() For i = 0 To Max-1 Prozent(i) = 50 Next End Function Function Test() Local n% Text 10, 60, "Das Dorfzentrum ist Ausgebaut zu (in %):" For n = 0 To Max -1 Text 50*n, 100, Prozent (n) Next End Function Maxx () Print Max ProzentAnfang () Test () WaitKey () |
||
![]() |
Vidde |
![]() Antworten mit Zitat ![]() |
---|---|---|
vielen dank robotx ![]() den code versteh sogar ich... sorry, aber bin noch ganz am anfang mit progen und will schon zu viel ergebnis für mein dürftiges basiswissen. die sache mit blabla -1 ist mir auch schon begegnet, hab diese aber nicht als lösung im sinn gehabt. damit dürfte ich sogar das nächste problem "Array index out of bounds" selbst lösen können. nochmals vielen dank an alle |
||
Gern der Zeiten gedenk ich, als alle Glieder gelenkig - bis auf eins. Diese Zeiten kehren nie wieder, steif sind nun alle Glieder - bis auf eins. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group