<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Anfängerfrage zur Berechnung einer prozentualen Chance]]></title><description><![CDATA[<p>Halli Hallo erst einmal an alle hier im Board,</p>
<p>hab hier schon den ein oder anderen nützlichen Thread für Anfänger gefunden und werde euch bestimmt in nächster zeit auch mal öfters mit Fragen löchern.</p>
<p>Nun also zu meinem Problem:</p>
<p>Ich habe angefangen c++ zu lernen um, jetzt kommt was total neues für euch (/Ironie off), später als Hobby ein Spiel zu programmieren. Ich habe mich schon durch unzählige Foren gelesen und weiss, dass ich nicht nächste Woche das Spielgenre neu erfinden werde <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Ich habe mir auch ein &quot;realistischeres&quot; Projekt vorgenommen: Ein 2D Rollenspiel, sowie ein 2D Strategiespiel (beide rundenbasiert) Ich habe mir das ganze wirklich als Hobby für meine Freizeit gesetzt und habe auch kein Geduldsproblem, in 4 Jahren noch alleine daran rumzubasteln <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Nun aber zu meinem Problem:</p>
<p>Da ich ja zurzeit, gerade erst bei den Klassen angekommen bin im c++ buch, kenne ich natürlich auch noch überhaupt nicht das Spektrum oder alle Möglichkeiten der Programmiersprache. Und somit schreibe ich meine Ideen ( solche Sachen wie Setting, Grafik, Item/kampfsystem etc.) für das Spiel erst einmal in Textdateien. Damit ich dann später wenn ich der Meinung bin, die ersten Dinge angehen zu können, mehr oder weniger geordnet das ganze aufsetzen und programmieren kann.</p>
<p>Mein Problem bei einer Überlegung ist nun folgendes: Ich möchte in dem Kampfsystem auch eine % Chance auf kritische Treffer und ausweichen einbauen (Ähnlich wie bei WoW, wenn ihr es kennt oder anderen Rollenspielen, Diablo 2, Sacred etc. )</p>
<p>Jetzt kenne ich zwar schon so funktionen wie srand() und die Grundrechenarten etc. Frage mich aber, wie ich es z.b. umsetze, dass bei einem Angriff die %chance auf einen kritischen Treffer mit einbezogen wird.</p>
<p>Und gestern Nacht, als ich im Bett lag hatte ich aus dem Nichts eine Idee (Ja klingt komisch war aber wirklich so <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )</p>
<p>Nehmen wir einmal an, der aktive Charakter hat eine Chance von 17%, kritisch zu treffen. Dann würde ich diese % Zahl als int speichern (also 17 und es ist auch beabsichtigt, dass es keine nachkomma stelle gibt)</p>
<p>also<br />
int c_chance = 17;</p>
<p>der text ist dann meinetwegen cout &lt;&lt; &quot;Chance auf kritischen Treffer&quot; c_chance &quot;%&quot; endl;</p>
<p>Und die Funktion sollte dann so aussehen: (Natürlich nicht später im fertigen code sondern nur zur veranschaulichung^^)</p>
<p>.....<br />
Funktion, die den gemachten Schaden errechnet und das Ergebnis in der Variable &quot;ks_schaden&quot; speichert.<br />
.....</p>
<p>srand();</p>
<p>critical = rand(100) + (1+c_chance); //Chance auswürfeln von 0-99 dann 1+ crit chance dazurechnen</p>
<p>if (critical =&gt; 100) //Wenn gewürfelte Zahl + Crit Chance über 100 sind schaden verdoppeln<br />
{<br />
ks_schaden *2<br />
}<br />
else<br />
blabla</p>
<p>So ich hoffe ich hab mich nicht zu verwirrend ausgedrückt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Und wollte nun von euch &quot;alten Hasen&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> mal wissen;<br />
-Ist der Ansatz so in Ordnung?<br />
-Habe ich einen extrem starken Denkfehler in der Formel?<br />
-Gibt es eine Funktion, die mir das ganze erleichtern kann?</p>
<p>Ich danke euch schon einmal im Vorraus (edit: Is mir grad Rätselhaft, wieso V o r r a u s zensiert wird^^) für eure Mühe das ganze zu lesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/260624/anfängerfrage-zur-berechnung-einer-prozentualen-chance</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 23:44:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/260624.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 07 Feb 2010 21:44:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerfrage zur Berechnung einer prozentualen Chance on Sun, 07 Feb 2010 21:54:03 GMT]]></title><description><![CDATA[<p>Halli Hallo erst einmal an alle hier im Board,</p>
<p>hab hier schon den ein oder anderen nützlichen Thread für Anfänger gefunden und werde euch bestimmt in nächster zeit auch mal öfters mit Fragen löchern.</p>
<p>Nun also zu meinem Problem:</p>
<p>Ich habe angefangen c++ zu lernen um, jetzt kommt was total neues für euch (/Ironie off), später als Hobby ein Spiel zu programmieren. Ich habe mich schon durch unzählige Foren gelesen und weiss, dass ich nicht nächste Woche das Spielgenre neu erfinden werde <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Ich habe mir auch ein &quot;realistischeres&quot; Projekt vorgenommen: Ein 2D Rollenspiel, sowie ein 2D Strategiespiel (beide rundenbasiert) Ich habe mir das ganze wirklich als Hobby für meine Freizeit gesetzt und habe auch kein Geduldsproblem, in 4 Jahren noch alleine daran rumzubasteln <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Nun aber zu meinem Problem:</p>
<p>Da ich ja zurzeit, gerade erst bei den Klassen angekommen bin im c++ buch, kenne ich natürlich auch noch überhaupt nicht das Spektrum oder alle Möglichkeiten der Programmiersprache. Und somit schreibe ich meine Ideen ( solche Sachen wie Setting, Grafik, Item/kampfsystem etc.) für das Spiel erst einmal in Textdateien. Damit ich dann später wenn ich der Meinung bin, die ersten Dinge angehen zu können, mehr oder weniger geordnet das ganze aufsetzen und programmieren kann.</p>
<p>Mein Problem bei einer Überlegung ist nun folgendes: Ich möchte in dem Kampfsystem auch eine % Chance auf kritische Treffer und ausweichen einbauen (Ähnlich wie bei WoW, wenn ihr es kennt oder anderen Rollenspielen, Diablo 2, Sacred etc. )</p>
<p>Jetzt kenne ich zwar schon so funktionen wie srand() und die Grundrechenarten etc. Frage mich aber, wie ich es z.b. umsetze, dass bei einem Angriff die %chance auf einen kritischen Treffer mit einbezogen wird.</p>
<p>Und gestern Nacht, als ich im Bett lag hatte ich aus dem Nichts eine Idee (Ja klingt komisch war aber wirklich so <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )</p>
<p>Nehmen wir einmal an, der aktive Charakter hat eine Chance von 17%, kritisch zu treffen. Dann würde ich diese % Zahl als int speichern (also 17 und es ist auch beabsichtigt, dass es keine nachkomma stelle gibt)</p>
<p>also<br />
int c_chance = 17;</p>
<p>der text ist dann meinetwegen cout &lt;&lt; &quot;Chance auf kritischen Treffer&quot; c_chance &quot;%&quot; endl;</p>
<p>Und die Funktion sollte dann so aussehen: (Natürlich nicht später im fertigen code sondern nur zur veranschaulichung^^)</p>
<p>.....<br />
Funktion, die den gemachten Schaden errechnet und das Ergebnis in der Variable &quot;ks_schaden&quot; speichert.<br />
.....</p>
<p>srand();</p>
<p>critical = rand(100) + (1+c_chance); //Chance auswürfeln von 0-99 dann 1+ crit chance dazurechnen</p>
<p>if (critical =&gt; 100) //Wenn gewürfelte Zahl + Crit Chance über 100 sind schaden verdoppeln<br />
{<br />
ks_schaden *2<br />
}<br />
else<br />
blabla</p>
<p>So ich hoffe ich hab mich nicht zu verwirrend ausgedrückt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Und wollte nun von euch &quot;alten Hasen&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> mal wissen;<br />
-Ist der Ansatz so in Ordnung?<br />
-Habe ich einen extrem starken Denkfehler in der Formel?<br />
-Gibt es eine Funktion, die mir das ganze erleichtern kann?</p>
<p>Ich danke euch schon einmal im Vorraus (edit: Is mir grad Rätselhaft, wieso V o r r a u s zensiert wird^^) für eure Mühe das ganze zu lesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852088</guid><dc:creator><![CDATA[Fkscorpion]]></dc:creator><pubDate>Sun, 07 Feb 2010 21:54:03 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Berechnung einer prozentualen Chance on Sun, 07 Feb 2010 21:54:15 GMT]]></title><description><![CDATA[<p><a href="http://www.cplusplus.com/reference/clibrary/cstdlib/rand/" rel="nofollow">rand()</a> nimmt keine Parameter. Außerdem geht das ganze einfacher:</p>
<pre><code class="language-cpp">if(rand() % 100 &lt; c_chance)
{
   schaden *= 2;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1852093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852093</guid><dc:creator><![CDATA[wx++]]></dc:creator><pubDate>Sun, 07 Feb 2010 21:54:15 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Berechnung einer prozentualen Chance on Sun, 07 Feb 2010 21:54:46 GMT]]></title><description><![CDATA[<p>also</p>
<pre><code class="language-cpp">if (c_crit &gt; rand()%100)
  ks_schaden *=2;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1852094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852094</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 07 Feb 2010 21:54:46 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Berechnung einer prozentualen Chance on Sun, 07 Feb 2010 21:56:33 GMT]]></title><description><![CDATA[<p>Ich bring hier mal mein Snippet ein, aber keine Ahnung ob das gut so ist, das Ergebnis (die Verteilungen) sieht aber jedenfalls danach aus:</p>
<pre><code class="language-cpp">#include &quot;MersenneTwister.h&quot;

MTRand mtRand;

bool GetChance(float percent)
{
	if(percent * 1000 &lt;= mtRand.randInt(100000))
		return false;

	return true;
}

// Testen
int c1 = 0, c2 = 0, c3 = 0, c4 = 0, c5 = 0;

for(int i = 0; i &lt; 100000; ++i)
	if(GetChance(0.1f))
		++c1;

for(int i = 0; i &lt; 100000; ++i)
	if(GetChance(1.0f))
		++c2;

for(int i = 0; i &lt; 100000; ++i)
	if(GetChance(5.0f))
		++c3;

for(int i = 0; i &lt; 100000; ++i)
	if(GetChance(50.0f))
		++c4;

for(int i = 0; i &lt; 100000; ++i)
	if(GetChance(100.0f))
		++c5;

cout &lt;&lt; &quot;0.1%: &quot; &lt;&lt; c1 &lt;&lt; &quot; / 100&quot; &lt;&lt; endl;
cout &lt;&lt; &quot;1%: &quot; &lt;&lt; c2 &lt;&lt; &quot; / 1000&quot; &lt;&lt; endl;
cout &lt;&lt; &quot;5%: &quot; &lt;&lt; c3 &lt;&lt; &quot; / 5000&quot; &lt;&lt; endl;
cout &lt;&lt; &quot;50%: &quot; &lt;&lt; c4 &lt;&lt; &quot; / 50000&quot; &lt;&lt; endl;
cout &lt;&lt; &quot;100%: &quot; &lt;&lt; c5 &lt;&lt; &quot; / 100000&quot; &lt;&lt; endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1852097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852097</guid><dc:creator><![CDATA[Snipp0r]]></dc:creator><pubDate>Sun, 07 Feb 2010 21:56:33 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Berechnung einer prozentualen Chance on Sun, 07 Feb 2010 21:57:06 GMT]]></title><description><![CDATA[<p>Fkscorpion schrieb:</p>
<blockquote>
<p>(edit: Is mir grad Rätselhaft, wieso V o r r a u s zensiert wird^^)</p>
</blockquote>
<p>Siehe <a href="http://www.googlefight.com/index.php?lang=en_GB&amp;word1=voraus&amp;word2=vorraus" rel="nofollow">http://www.googlefight.com/index.php?lang=en_GB&amp;word1=voraus&amp;word2=vorraus</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852098</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 07 Feb 2010 21:57:06 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Berechnung einer prozentualen Chance on Sun, 07 Feb 2010 22:00:39 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Fkscorpion schrieb:</p>
<blockquote>
<p>(edit: Is mir grad Rätselhaft, wieso V o r r a u s zensiert wird^^)</p>
</blockquote>
<p>Siehe <a href="http://www.googlefight.com/index.php?lang=en_GB&amp;word1=voraus&amp;word2=v******" rel="nofollow">http://www.googlefight.com/index.php?lang=en_GB&amp;word1=voraus&amp;word2=v******</a></p>
</blockquote>
<p>Ach okay... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Schreiben sollte man noch können. Danke</p>
<p>Zu den anderen:</p>
<p>Ich danke euch für eure code schnipsel. Auf so eine einfache Variante bin ich natürlich garnicht gekommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> und das rand() keine parameter annimmt, hab ich auch gerade nochmal gesehen ; /</p>
<p>Ich werd's mal mit eurer Variante probieren.<br />
Vielen lieben Dank.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852100</guid><dc:creator><![CDATA[Fkscorpion]]></dc:creator><pubDate>Sun, 07 Feb 2010 22:00:39 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Berechnung einer prozentualen Chance on Sun, 07 Feb 2010 22:21:15 GMT]]></title><description><![CDATA[<p>Fkscorpion schrieb:</p>
<blockquote>
<p>Und gestern Nacht, als ich im Bett lag hatte ich aus dem Nichts eine Idee (Ja klingt komisch war aber wirklich so <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )</p>
</blockquote>
<p>Och, so komisch ist das gar nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Fkscorpion schrieb:</p>
<blockquote>
<p>und das rand() keine parameter annimmt, hab ich auch gerade nochmal gesehen ; /</p>
</blockquote>
<p>Eine nützliche Referenz zum Nachschlagen von Funktionen und Klassen aus der Standardbibliothek: <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852112</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 07 Feb 2010 22:21:15 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zur Berechnung einer prozentualen Chance on Tue, 09 Feb 2010 00:30:40 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Eine nützliche Referenz zum Nachschlagen von Funktionen und Klassen aus der Standardbibliothek: <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a></p>
</blockquote>
<p>In Favoriten aufgenommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Danke dir.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852153</guid><dc:creator><![CDATA[Fkscorpion]]></dc:creator><pubDate>Tue, 09 Feb 2010 00:30:40 GMT</pubDate></item></channel></rss>