variable Gegnerzahl [gelöst]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Vidde

Betreff: variable Gegnerzahl [gelöst]

BeitragFr, Feb 06, 2009 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Feb 06, 2009 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Xeres

Moderator

BeitragFr, Feb 06, 2009 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist "Max" auch Global deklariert?
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)

Vidde

BeitragFr, Feb 06, 2009 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Feb 06, 2009 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Xaymar

ehemals "Cgamer"

BeitragFr, Feb 06, 2009 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
...

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

BeitragFr, Feb 06, 2009 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

Xeres

Moderator

BeitragFr, Feb 06, 2009 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Vidde

BeitragMo, Feb 09, 2009 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Feb 09, 2009 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Feb 09, 2009 17:01
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Feb 09, 2009 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Feb 09, 2009 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
vielen dank robotx Very Happy

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.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group