Hallo,
ich sitze momentan an einem Anglersystem. Verschiedene Fische gibt es zu verschiedenen Zeiten zu fangen. Das ganze ist in vielen switches verpackt.
case JANUAR:
{
new Karpfen[30];
new Forelle[12];
new Barsch[2];
new Makrele[9];
new Hecht[24];
new Seebarsch[23];
}
Soweit so gut. Die Zellengrößen sind "Fangpunkte". Sie sind Indikatoren für die Wahrscheinlichkeit den jeweiligen Fisch zu fangen. So hat der Karpfen
z.B. 30 Fangpunkte.
Das Fangen soll später so aussehen, dass mit der Eingabe eines CMDs (/angeln) ein sich wiederholdender Timer gestartet wird (3000ms). Alle 3s wird
überprüft, ob man einen Fisch am Haken hat. Weiter gehts also zur Berechnung OB ein Fisch und mit welcher Wahrscheinlichkeit er am haken hängt.
{
new Hecht[24];
for(new i = 0; i < sizeof(Hecht); i++)
{
Hecht[i] = random(500);
for(new j = 0; j < i; j++)
{
if(Hecht[j] == Hecht[i])
{
i--;
break;
}
}
}
//etc...
}
Nehmen wir den Beispielmonat Januar, in dem es z.B. einen Hecht zu fangen gibt. Die Basis-Fangpunkte-Anzahl errechnet sich aus den Fangpunkten aller
in dem Monat verfügbaren Fische (30+12+2+9+24+23 = 100), die dann einfach mit 5 multipliziert wird (= 500). Die Fangpunkte der einzelnen Fische werden
nun zufällig auf die 500 Zellen verteilt, wobei keine Zelle 2x belegt werden kann.
Beispiel:
Barsch belegt 234, 11.
Makrele belegt 0, 14, 499, 222, 123, 122, 11, 67, 89.
Um wieder zurück auf den Timer zu sprechen zu kommen: Alle 3 Sekunden wird also überprüft, ob man einen "Treffer" gelandet hat. Dabei ist es also auch
vorgesehen, dass man mal etwas länger dasitzt um einen Fisch an den Haken zu kriegen.
Frage: Es ist nicht gerade zeilensparend jeder einzelnen Variable die Werte zuweisen, wie ich es im obigen Codeblock gemacht habe. Gibt es da eine
andere Möglichkeit ohne die Variablen umzubenennen?
Und wie berechne ich am besten die Gesamtanzahl an Zellen aller in einem Monat vorkommenden Variablen/Fische? Mit strlen?