Wenn er nächste Runde keine fähige Einheit da drinn stehen hat, war's egal, welche Felder er belegt hat.![]()
Klassischer Fall von wenn man nur nen Nagel Excel kennt, sieht alles wie ne Tabelle aus. Also mit solchen 'INDEX($C$18:$D$36;$F10;1)"-Monstern um sich werfen und dann gefallen dir die Variablennamen in dem C++ Code nicht
, das muss schon nen schwerer Berufsschaden sein
.
Fuer Code aus Spielen ist das Beispiel wirklich exzellent, fast schon Lehrbuch-Niveau. Sinnvolle Kommentare, selbsterklaerende aber nicht zu lange Variablennamen. Gut, der ist zu tief verschachtelt, sollte in mehrere Funktionen aufgeteilt werden. Aber als monolithisch prozeduarler Code gehts kaum besser. Als Tabelle mit Vermengung von Eingabe, Daten, Ausgabe und Code auch nicht.
Das ist uebrigens nicht der Code, der die Kaempfe berechnet (der wuerfelt wirklich alles aus), sondern der Code der die Kampfchancenanzeige berechnet. Und nein, ich konnte noch keinen Bug darin finden.
Vodka basiert uebrigens dirket auf dem Kampfberechnungscode - den Chancenberechencode koennte man auch problemlos in eine Skriptsprache konvertieren![]()
Achtung Spoiler:
Ich hab auch zuerst den Baum gesehen, und dann festgestellt, das der sich als Tabelle viel besser wiedergeben lässt.Ursprünglich wollt ich den Baum als Baum wiedergeben, das wäre aufwändig geworden.
Und ne Indexfunktion ist nu wirklich kein Monster.
Intellektuell ist sie ungefähr auf der Stufe ner verschachtelten Schleife. Einmal verschachtelt.
Ich hab sie zu schätzen gelernt, als ich mal drauf angewiesen war, in Zellbezügen rumzurechnen. Das geht meines Wissens nur so, oder mit Makros. (klärt mich auf, wenn ich da falsch liege)
In diesem Fall ist sie aber tatsächlich nur nötig, um den Tabellenbezug der Hilfstabelle von vertikal nach horizontal zu konvertieren. Das kommt noch vom Anfang, als ich nicht genau wusste, wo ich die Werte nochmal brauche (inzwischen weiß ich, nirgends) und die sachen formal logisch angeordnet habe, um den Überblick zu behalten.Außerdem kann ich die Wenn-prüfung auslagern, wenn ich das anders anordne.
Hilfreich, danke Zulan.
Ich vergebe mal spontan nen
Ich hab noch so einen, für den, der mir den Unterschied zwischen nem Erstangriff und ner Erstangriffschance erklärt. Und zwar über dem Niveau, Chance ist nur manchmal.
btw, was ich noch fragen wollte... da ich auch schon ne Weile drauf gekommen bin, das Civ die Kampfchancenanzeige und die eigentlichen Kämpfe mit unterschiedlichen Algos zu machen... du sagtest, du hättest keinen Bug gefunden, aber ist der Zufallsgenerator von Civ eigentlich gut genug ... ?
Alice Schwarzer hat sich neulich zu den Corona-Maßnahmen positioniert.
Zitat von Alice Schwarzer
Erstangriffschance ist nur manchmal, nämlich mit einer Wahrscheinlichkeit von 50% -> mit 50% Wahrscheinlichkeit ein zusätzlicher Erstangriff, der wie ein normaler Erstangriff wirkt, ansonsten halt kein zusätzlicher Erstangriff. Wird für alle Erstangriffschancen separat ausgewürfelt, denk ich (wär jedenfalls logisch).
Tausendundein farukanische Nächte: Ein Splittermond-Abenteuer.
Was hab ich getan
Und was kann ich mir damit kaufen?
Ich hoer mal lieber auf mit der Diskussion um Excel versus Programmiersprachen
Nein eben nicht.
Wenn du N Erstschlagschancen hast, wird vor dem Kampf mit einem gleichverteilten N-Seiten Wuerfel ausgewuerfelt wieviele Erstschlage du zusaetzlich zu den festen Erstschlaegen bekommst.
Code:setCombatFirstStrikes((pCombatUnit->immuneToFirstStrikes()) ? 0 : (firstStrikes() + GC.getGameINLINE().getSorenRandNum(chanceFirstStrikes() + 1, "First Strike")));Prinzipiell ist der Pseudozufallszahlengenerator von Civ4 nen ganz normaler LCG mit Standardparametern (1103515245/12345). Der ist nicht besonders gut, die unteren bits sind sehr problematisch, ob die oberen bits nun besonders gut sind konnte ich nicht finden, er ist aber prinzipiell weit verbreitet. Civ nimmt korrekt die oberen 16 bit. Soweit duerfte das fuer den Anwendungszweck (bitte keine Crypto mit sowas machenbtw, was ich noch fragen wollte... da ich auch schon ne Weile drauf gekommen bin, das Civ die Kampfchancenanzeige und die eigentlichen Kämpfe mit unterschiedlichen Algos zu machen... du sagtest, du hättest keinen Bug gefunden, aber ist der Zufallsgenerator von Civ eigentlich gut genug ... ?) akzeptabel sein. Die Berechnung von [0, 2^16[ auf [0, N[ ist ein bisschen tricky nachzuvollziehen. Im allgemeinen geht es ja auch nicht perfekt auf 2^16 Zahlen gleichverteilt auf N abzubilden, aber wenn ich das richtig sehe ist es annaehernd perfekt.
Wenn die 16 bit der Zufallszahl genommen werden sind die [0, 2^16[ = [0, 2^16-1]. Nach der Multiplikation mit N offensichtlichCode:m_ulRandomSeed = ((RANDOM_A * m_ulRandomSeed) + RANDOM_C); unsigned short us = ((unsigned short)((((m_ulRandomSeed >> RANDOM_SHIFT) & MAX_UNSIGNED_SHORT) * ((unsigned long)usNum)) / (MAX_UNSIGNED_SHORT + 1)));
[0, N, ..., N * 2^16 - N].
Teile ich das dann durch 2^16 fallen die (2^16) Zahlen wie folgt in die N Zielintervalle
[0, 2^16 - 1], [2^16, 2 * 2^16 - 1], ..., [(N-1) * 2^16, N * 2^16 - 1]
Bei den vorderen Intervallen ist es klar, dass alle entweder Abrunden(2^16/N) oder Aufrunden(2^16/N) Quell-Zufallszahlen haben. Beim letzten Intervall ist das etwas schwieriger zu sehen, sollte aber trotzdem stimmen.
Der Kampfwuerfel bei Civ hat z.B. 1000 Seiten. Da kommen also fuer jeden Ausgang entweder 655 oder 656 Quellzufallszahlen in Frage. Dieser Bias ist aber nicht schlimm, da mit den Resultaten ja nur Ungleichungen geprueft werden. Da bleibt dann, wenn ich nichts uebersehen habe, im Endeffekt maximal ein Bias von 2^-17 fuer einzelne Kampfrunden. Wenn das jemand statistisch signifikant beim Spielen beobachtet, dann spielt er definitiv zu viel!
Kurz, ich kann keine Schwaeche im Pseudozufallszahlengenerator von Civ4 erkennen.
Achtung Spoiler:
Ich sollte wohl aufhören, Dinge, die ich nur gehört und nie selbst überprüft habe, weiterzuerzählenDanke für die Aufklärung (auch wenn es gar nicht meine Frage war
).
Es wäre aber ein (N+1)-seitiger Würfel, oder?Bei N Erstschlagschancen gibt es ja auch N+1 mögliche Ergebnisse, weil 0 auch eine Möglichkeit ist.
Tausendundein farukanische Nächte: Ein Splittermond-Abenteuer.
Sieht man auch im Code.
Jetzt wird unser Faden endgültig abgefahren
Ich find CCCs Tabellenansatz nett. Die Tabelle stellt den Baum nämlich wirklich sehr hübsch dar
Sollten wir das öfter brauchen (tun wir nicht), kann ich den Code ja mal bei mir in ein kurzes Programm packen. Sollte ja fix in C++ portiert sein (hab im Normalfall kein Python zur Hand)
Der Hauptvorteil von nem Sheet ist hier eindeutig, dass das jeder runterladen und nutzen kann, wenns fertig ist. Wenn ich das mit nem Algo mache, fragen sich einige womit sie den aufmachen sollen. Und wenn ich gleich die Anwendung liefere (was ich nicht kann), dann kann ich da theoretisch sonstwas einschleusen...
Noch ganz kurz eine letzte Frage zu den Erstschlägen: Ein Erstschlag ist ne Kampfrunde in der die Einheit mit dem Erstschlag keinen Schaden nehmen kann wenn sie verliert, oder?
Achso die LPHs (Los Pollos Hermanos) werden unserem RPG natürlich nur bedingt gerecht. Ich schlage deshalb vor, dass wir die als One Picture Acronym bezeichnen. Sprich
Und Zulan hat jetzt 2 davon. Alter...
Kaufen sollte nicht sein. Wer schöne TLAs hat, kann sie immer gerne posten. Die kriegen wir bestimmt unter.![]()
Alice Schwarzer hat sich neulich zu den Corona-Maßnahmen positioniert.
Zitat von Alice Schwarzer
Sooo 2 Sachen stehen an. Abstimmung und Zug 46.
Zur Abstimmung: ich bin ganz klar für Yes to All.
Hat sich ja erledigt.
Für den Zug gib's n paar Sachen zu klären.
Also Karthago: Wenn max eine Einheit in der Stadt stehen, egal was ->
Was machen wir, wenn da wider erwarten doch 2 drin sind (also Krieger zähl ich nich)? Abhaun und Frieden?
Und wenn wir die Stadt abgeraucht haben was dann? Wieder Frieden anbieten, um die Zugreihenfolge aufzuheben, oder wollen wir vielleicht noch nen Blick auf die HS riskieren? Dabei verlieren wir vermutlich die Phalanx.
Restliches MM
Achtung Spoiler:
Eine Sache noch außerhalb des Spoilers.
SPA kann 6 ziehen, und dann vermutlich 9. Oder er heilt erstmal.
Man könnte aber auch den Malinesischen Späher abessen. 7-1 (nicht 7-4(!)) versetzt uns in die Lage den Späher auf KNS einzusacken. Und da wird er ja vermutlich nach dem Zug stehen. Ich muss sagen, sowas juckt mir in den Fingern, einfach, weil die Malis uns damals in der Wüste schnöde im Stich gelassen haben.Strategisch und Taktisch ist so ein Zug aber vermutlich, vor allem im Hinblick auf das Timing von DDD ziemlicher Blödsinn.
![]()
Alice Schwarzer hat sich neulich zu den Corona-Maßnahmen positioniert.
Zitat von Alice Schwarzer
Wir haben es nicht eilig, wir sind Erstzieher bei nem 48h-Timer. Ich würd sagen, heut Abend geht einer rein und macht Bilder und dann diskutieren wir telefonisch drüber. Mit etwas Glück sind die Kinder wieder 20.15 im Bett
Wenn wir (z.B. im Schutz von Wäldern) etwas weiter scouten und stören können, würd ich das aus dem Bauch heraus tun. Späher einsacken würd ich hingegen lassen. Bringt nix und macht schlechte Stimmung. Sollen uns die Mali doch erstmal als neutral oder halbwegs freundlich sehen![]()
Also zu SPA sind wir ja gleicher Meinung.
Direkt hinter Utica (also bei PTA) gibt's keinen Wald mehr. Hab ich schon geschaut, ich seh das nämlich auch so wie du.
Wann ich heute nach Hause komme, kann ich noch nicht sagen. Vor um 9 würde mich aber wundern.
Alice Schwarzer hat sich neulich zu den Corona-Maßnahmen positioniert.
Zitat von Alice Schwarzer
Utica steht immer noch leer...
Und so kommt es, wie es kommen muss:
In der Wüste lauern die Leuen:
Aber der Treck konnte wie geplant sicher die Ufer des Kagera-Nils erreichen und sich erstmal mit Löwenfell betten. Auch WBF und die neue Phalanx haben ihren Befehlen Folge geleistet.
SPA hat sich im Rundenwechsel erfolgreich gegen zwei Tiere zur Wehr gesetzt und konnte seine Expedition fortsetzen. Langsam sollte sie nach Süden abbiegen. Vermutlich 6-3, 2-1.
![]()
Ich habe die Runde noch nicht beendet. Über zwei Dinge sollten wir uns (netterweise) heute noch einigen:
1.) Forschung. Ich habe erstmal TZ eingestellt. Mystik wäre auch eine Variante
2.) Der Krieger wäre jetzt frei und kann nochmal im Süden zu den Streithähnen schauen. 1?
Außerdem können wir PTA immer schön südlich vom Fluss entlang Richtung karthaigsche Edelsteine schicken. Das klingt doch gut, oder?
Find ich ja klasse.Zitat von 73er log
![]()
Alice Schwarzer hat sich neulich zu den Corona-Maßnahmen positioniert.
Zitat von Alice Schwarzer