<?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[Variablen aktuallisieren?]]></title><description><![CDATA[<p>Hey liebe Community,</p>
<p>ich erstelle grade ein kleines Anwendungsbeispiel in Form von Blackjack in SDL.<br />
Ich habe aber ein Problem, was eigentlich ziemlich unabhängig davon auftrit.</p>
<p>Und zwar geht es um diesen kleinen Teil hier:</p>
<pre><code>stringstream anzeige;
			anzeige &lt;&lt; &quot;Kartensumme: &quot; &lt;&lt; iKartenWert;

			punkte	= TTF_RenderText_Solid( schrift, anzeige.str().c_str(), textColor );     

			myButton1.handle_events( &amp;iKartenWert );
</code></pre>
<p>Sinn der ganzen Sache ist halt ich will die aktuelle Kartensumme ausgeben. Dafür benutze ich den stringstream. Dieser gibt die Variable <em>iKartenWert</em> aus, welche am anfang Null ist. Außerdem habe ich einen Zeiger erstellt der die Adresse von iKartenWert beinhaltet und in der Funktion <em>myButton1</em>... benutzt wird. Dort wird dann z.B gesagt wird die Herz 2 gezogen, iKartenWert = 2 usw.</p>
<p>In der Praxis sieht es dann so aus:</p>
<p>Oben in der Ecke steht: &quot;Deine KartenSumme: 0&quot;<br />
Man zieht eine Karte.. Herz 2 kommt.<br />
&quot;Deine KartenSumme: 0&quot;...ABER der neue Wert also die &quot;2&quot; in dem Fall steht in der &quot;0&quot;. Ich will aber das die Null verschwindet.<br />
Ich hoffe man versteht was ich meine xD</p>
<p>Ich hab schon paar Varianten probiert, wie einen 2. Stringstream oder halt am anfang nach &quot;Kartensumme : &quot;; zu enden und nach dem Aufruf der Funktion den Wert dranhängen. Klappt aber nicht.</p>
<p>Bitte um Hilfe,</p>
<p>mfg ElGreco</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/320777/variablen-aktuallisieren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 23 Jul 2026 18:37:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320777.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 Oct 2013 16:07:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Variablen aktuallisieren? on Fri, 11 Oct 2013 16:07:27 GMT]]></title><description><![CDATA[<p>Hey liebe Community,</p>
<p>ich erstelle grade ein kleines Anwendungsbeispiel in Form von Blackjack in SDL.<br />
Ich habe aber ein Problem, was eigentlich ziemlich unabhängig davon auftrit.</p>
<p>Und zwar geht es um diesen kleinen Teil hier:</p>
<pre><code>stringstream anzeige;
			anzeige &lt;&lt; &quot;Kartensumme: &quot; &lt;&lt; iKartenWert;

			punkte	= TTF_RenderText_Solid( schrift, anzeige.str().c_str(), textColor );     

			myButton1.handle_events( &amp;iKartenWert );
</code></pre>
<p>Sinn der ganzen Sache ist halt ich will die aktuelle Kartensumme ausgeben. Dafür benutze ich den stringstream. Dieser gibt die Variable <em>iKartenWert</em> aus, welche am anfang Null ist. Außerdem habe ich einen Zeiger erstellt der die Adresse von iKartenWert beinhaltet und in der Funktion <em>myButton1</em>... benutzt wird. Dort wird dann z.B gesagt wird die Herz 2 gezogen, iKartenWert = 2 usw.</p>
<p>In der Praxis sieht es dann so aus:</p>
<p>Oben in der Ecke steht: &quot;Deine KartenSumme: 0&quot;<br />
Man zieht eine Karte.. Herz 2 kommt.<br />
&quot;Deine KartenSumme: 0&quot;...ABER der neue Wert also die &quot;2&quot; in dem Fall steht in der &quot;0&quot;. Ich will aber das die Null verschwindet.<br />
Ich hoffe man versteht was ich meine xD</p>
<p>Ich hab schon paar Varianten probiert, wie einen 2. Stringstream oder halt am anfang nach &quot;Kartensumme : &quot;; zu enden und nach dem Aufruf der Funktion den Wert dranhängen. Klappt aber nicht.</p>
<p>Bitte um Hilfe,</p>
<p>mfg ElGreco</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359708</guid><dc:creator><![CDATA[ElGreco97]]></dc:creator><pubDate>Fri, 11 Oct 2013 16:07:27 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Fri, 11 Oct 2013 16:11:14 GMT]]></title><description><![CDATA[<blockquote>
<p>&quot;Deine KartenSumme: 0&quot;...ABER der neue Wert also die &quot;2&quot; in dem Fall steht in der &quot;0&quot;. Ich will aber das die Null verschwindet.</p>
</blockquote>
<p>Und was hat das mit C++ zu tun?</p>
<p>Anscheinend wird der Bildpuffer nicht geleert o.ä., daher wird die zwei über die null geschrieben.</p>
<p>P.S.: <code>anzeige.str().c_str()</code> solltest du dir schnell abgewöhnen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359711</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Fri, 11 Oct 2013 16:11:14 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Fri, 11 Oct 2013 16:28:00 GMT]]></title><description><![CDATA[<p>Ja sowas dacht ich mir halt auch schon, weis aber echt nicht wie ich das machen kann. Es gibt in SDL ja die Funktion &quot;SDL_FreeSurface&quot;. Da könnte ich ja dann &quot;punkte&quot; reintun. Dann wird die Funktion MyButton aufgerufen und dann &quot;punkte&quot;<br />
neu definiert, so startet aber das Programm nicht mehr</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359712</guid><dc:creator><![CDATA[ElGreco]]></dc:creator><pubDate>Fri, 11 Oct 2013 16:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Fri, 11 Oct 2013 17:47:14 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>P.S.: <code>anzeige.str().c_str()</code> solltest du dir schnell abgewöhnen!</p>
</blockquote>
<p>was ist daran schlecht?<br />
angenommen TTF_RenderText_Solid ist eine Funktion einer Lib, die einen C String erwartet. Dann programmiere ich ja trotzdem mit string und stringstream, und wenn ich eine Lib Funktion aufrufen muss, dann konvertier ich halt stringstream-&gt;string-&gt;char*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359722</guid><dc:creator><![CDATA[dddddffffffff]]></dc:creator><pubDate>Fri, 11 Oct 2013 17:47:14 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Fri, 11 Oct 2013 18:45:37 GMT]]></title><description><![CDATA[<p>Also...noch jemand ne Idee wie ich das machen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359730</guid><dc:creator><![CDATA[ElGreco]]></dc:creator><pubDate>Fri, 11 Oct 2013 18:45:37 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Fri, 11 Oct 2013 18:58:30 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Du musst auf jeden fall iKartenWert immer um den Wert der gezogenen Karte inkrementieren. Danach in deiner &quot;Game Loop&quot; aktualisierst du den (wieso eigentlich nicht einfach std::string?) stringstream. Anschließen lässt du das Ding wieder zeichnen (wie auch immer das bei SDL gemacht wird)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359735</guid><dc:creator><![CDATA[hardware]]></dc:creator><pubDate>Fri, 11 Oct 2013 18:58:30 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Fri, 11 Oct 2013 19:13:14 GMT]]></title><description><![CDATA[<p>Genau, es geht mir aber ja darum wie ich den Wert richtig aktualisiere</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359739</guid><dc:creator><![CDATA[ElGreco]]></dc:creator><pubDate>Fri, 11 Oct 2013 19:13:14 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sat, 12 Oct 2013 07:41:07 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Ich denke nicht, dass dir jemand helfen kann wenn du nicht den code zeigst, mit dem du iKartenWert aktualisieren möchtest...</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359764</guid><dc:creator><![CDATA[hardware]]></dc:creator><pubDate>Sat, 12 Oct 2013 07:41:07 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sat, 12 Oct 2013 09:29:21 GMT]]></title><description><![CDATA[<p>Ok, ich weiß nicht ob es das ist was gemeint ist aber ich habe halt diese Funktion:</p>
<pre><code>int Button::handle_events( int *iZeiger )
</code></pre>
<p>dadrin ist</p>
<pre><code>*iZeiger = 0;
</code></pre>
<p>und ich habe dann halt if-else Verzweigungen á la</p>
<pre><code>if( rand() %52 == 1 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610,  512, card_Heart, screen, &amp;clipOpen[ 0 ] );
					bGeklickt = true;
				   *iZeiger = 2;               //Das wäre dann ja die akutallisierung
				}
</code></pre>
<p>so läuft das dann halt weiter. Am ende der Funktion ist *iZeiger halt der Rückgabewert.<br />
In der main-Funktion hab ich dann die Variable für den Kartenwert und den Zeiger:</p>
<pre><code>int iKartenWert = 0;
int *ipZeiger = &amp;iKartenWert;
</code></pre>
<p>Dann in der Programmschleife halt solange ein Ereignis da ist wird das hier gemacht:</p>
<pre><code>stringstream anzeige;
anzeige &lt;&lt; &quot;Kartensumme: &quot; &lt;&lt; iKartenWert;
punkte	= TTF_RenderText_Solid( schrift, anzeige.str().c_str(), textColor );
myButton1.handle_events( &amp;iKartenWert );
myButton2.handle_events2();
apply_Surface( 1500, 0, punkte, screen );        //Liegt hier vielleicht das Problem?
SDL_Flip( screen ); //UpdateFunktion
</code></pre>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359774</guid><dc:creator><![CDATA[ElGreco]]></dc:creator><pubDate>Sat, 12 Oct 2013 09:29:21 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sat, 12 Oct 2013 09:32:57 GMT]]></title><description><![CDATA[<p>ElGreco schrieb:</p>
<blockquote>
<p>Genau, es geht mir aber ja darum wie ich den Wert richtig aktualisiere</p>
</blockquote>
<p>Ich dachte der richtige Wert steht da, nur über dem alten?<br />
Du musst in deinem Programm eine Schleife haben, die immer wieder den Bildpuffer ganz (oder teilweise leert) - vllt. fehlt das bei dir - und dann alles (oder das, was sich verändert hat) neu zeichnet, nachdem du Events wie Karten ziehen etc. verarbeitet hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359775</guid><dc:creator><![CDATA[philipp2100]]></dc:creator><pubDate>Sat, 12 Oct 2013 09:32:57 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sat, 12 Oct 2013 09:37:45 GMT]]></title><description><![CDATA[<p>Ja genau das meinte ich ja mit &quot;aktualisieren&quot;.</p>
<p>Also ich könnte ja einen Boolean einbauen z.b &quot;bAktualisiert&quot; der in den if else Verzweigungen dann auf true gesetzt wird und das der Buffer geleert wird wenn der true ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359777</guid><dc:creator><![CDATA[ElGreco]]></dc:creator><pubDate>Sat, 12 Oct 2013 09:37:45 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sat, 12 Oct 2013 09:41:06 GMT]]></title><description><![CDATA[<p>Ja, z.B. Und auch, dass das Zeichnen nur dann passiert, denn das kostet die meiste Zeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359779</guid><dc:creator><![CDATA[philipp2100]]></dc:creator><pubDate>Sat, 12 Oct 2013 09:41:06 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sat, 12 Oct 2013 10:01:54 GMT]]></title><description><![CDATA[<p>Das Problem ist ich kenne keine Funktion die den Buffer löscht, weil die Surface, also &quot;punkte&quot; kann ich zwar leeren oder füllen, aber das ändert nichts am Variablen Wert. D.h wenn ich nach dem Aufruf der myButton Funktion die Surface leere und dann neu zeichne, wird der alte Wert gezeichnet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359780</guid><dc:creator><![CDATA[ElGreco]]></dc:creator><pubDate>Sat, 12 Oct 2013 10:01:54 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sat, 12 Oct 2013 10:32:12 GMT]]></title><description><![CDATA[<p>Ok ok... ich hab jetzt eine Idee... Ich hab rausgefunden wie man die Surface überspielt... Der Plan ist halt: var 1 beinhaltet kartenwert und &quot;punkte&quot; rendert das. Dann erfolgt aufruf der Funktion myButton...der neue Wert wird übergeben, dann wird die alte &quot;punkte&quot; surface geleert und neu definiert.</p>
<p>Zur besseren übersicht hab ich gemacht das var 1 nur &quot;Kartenwert: &quot; ausgibt und beim 2. mal &quot;Kartenwert: &quot; &lt;&lt; iKartenwert; und &quot;punkte&quot; neu angewandt wird.<br />
Jetzt gibt er aber sofort die 2. variante aus, daraus folgt das ich idiot ja sagen muss &quot;mach die 2. variante nur wenn myButton... gemacht wurde&quot;. Nur wie würde ich das kontrollieren? if( blablabla == true) ABER die Funktion ist ja ein integer und kein boolean, weil die muss ja den Zeiger zurück geben...was ist wenn ich dann sage if( blablabla == 1 ) und als Rückgabewert in der Funktion &quot;1&quot; in allen Verzweigungen mache? Aber die Idee ist doch gut oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359783</guid><dc:creator><![CDATA[ElGreco]]></dc:creator><pubDate>Sat, 12 Oct 2013 10:32:12 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sat, 12 Oct 2013 11:44:09 GMT]]></title><description><![CDATA[<p>Wie mein Vorredner schon sagte, poste doch mal mehr von dem Code.<br />
So wie du das beschreibst, verstehe ich im Moment nicht so richtig, was du meinst. Mein Verdacht ist aber, dass der Code an einigen Stellen noch unnötig kompliziert und &quot;um die Ecke gedacht&quot; ist.<br />
Vorab als Tip schonmal: if (b) statt if (b == true) und if (!b) statt if (b == false). Das macht es wesentlich leserlicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359791</guid><dc:creator><![CDATA[philipp2100]]></dc:creator><pubDate>Sat, 12 Oct 2013 11:44:09 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sat, 12 Oct 2013 11:52:46 GMT]]></title><description><![CDATA[<p>ElGreco schrieb:</p>
<blockquote>
<p>Der Plan ist halt: var 1 beinhaltet kartenwert und &quot;punkte&quot; rendert das.</p>
</blockquote>
<p>Was ist var1 (das hast du wohl gemeint). Eine neue Variable? Warum, du hast doch iKartenwert?</p>
<p>ElGreco schrieb:</p>
<blockquote>
<p>die Funktion ist ja ein integer und kein boolean, weil die muss ja den Zeiger zurück geben...</p>
</blockquote>
<p>Was gibt sie jetzt zurück, einen Zeiger oder einen int?</p>
<p>ElGreco schrieb:</p>
<blockquote>
<p>was ist wenn ich dann sage if( blablabla == 1 ) und als Rückgabewert in der Funktion &quot;1&quot; in allen Verzweigungen mache?</p>
</blockquote>
<p>Verstehe ich nicht (wo steht das if ( blablabla == 1 ))? Von welcher Funktion redest du? Wenn du eh in &quot;allen Verweigungen&quot; 1 zurückgibst, warum dann überhaupt der Rückgabewert? Bisher habe ich das so verstanden, dass da der Kartenwert zurückgegeben werden soll.<br />
Du schreibst, wie als würden wir alle hier den Code und das Problem sehr gut kennen und genau wissen was du meinst, aber dem ist nicht so. Versuch dich mal in uns reinzuversetzen und mehr und genauere Informationen zu geben.<br />
Ja du kannst Vergleiche wie if ( i == 1 ), if ( i &gt;= 1 ) oder if ( i &gt; 1 ) machen, klar.</p>
<p>ElGreco schrieb:</p>
<blockquote>
<p>Aber die Idee ist doch gut oder?</p>
</blockquote>
<p>Hört sich wie gesagt unnötig kompliziert an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359793</guid><dc:creator><![CDATA[philipp2100]]></dc:creator><pubDate>Sat, 12 Oct 2013 11:52:46 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sat, 12 Oct 2013 12:47:27 GMT]]></title><description><![CDATA[<p>ElGreco schrieb:</p>
<blockquote>
<p>Ok, ich weiß nicht ob es das ist was gemeint ist aber ich habe halt diese Funktion:</p>
<pre><code>int Button::handle_events( int *iZeiger )
</code></pre>
<p>dadrin ist</p>
<pre><code>*iZeiger = 0;
</code></pre>
<p>und ich habe dann halt if-else Verzweigungen á la</p>
<pre><code>if( rand() %52 == 1 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610,  512, card_Heart, screen, &amp;clipOpen[ 0 ] );
					bGeklickt = true;
				   *iZeiger = 2;               //Das wäre dann ja die akutallisierung
				}
</code></pre>
</blockquote>
<p>Ist das die komplette Funktion?</p>
<p>Ich würde mal an verschiednen Stellen Testausgaben in die Konsole machen, mit den Werten deiner Variablen und an welchen Stellen etc. und dann kommst du vielleicht auch selbst drauf, wo etwas nicht nach Plan läuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359805</guid><dc:creator><![CDATA[hardware]]></dc:creator><pubDate>Sat, 12 Oct 2013 12:47:27 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sat, 12 Oct 2013 20:09:45 GMT]]></title><description><![CDATA[<p>Ok ich hab wohl bisschen für unklarheiten gesorgt, das wollt ich nicht sorry^^</p>
<p>Also es gibt keine var 1 und die Funktion &quot;blablabla&quot; ist &quot;Mybutton&quot;, hatte nur keine Lust alles zu schreiben. Die hält halt auch die Kartenkoordinaten der Karten und teilt den sprite sheet der karten. Aber die if else sachen sind so wie beschrieben. Als Rückgabewert ist &quot;int *Zeiger1&quot; Aber wie gesagt ich bin mir 99% sicher, wo das Problem ist. Die neue loop ist jetzt ( vielleicht unnötige Code verschwendung ) so:</p>
<pre><code>if( SDL_PollEvent( &amp;event ) )
		{
			myButton1.handle_events( &amp;iKartenWert );
			if( myButton1.handle_events( &amp;iKartenWert ) == 0 )
			{
			stringstream anzeige;
			anzeige &lt;&lt; &quot;Kartensumme: &quot;;
			punkte	= TTF_RenderText_Solid( schrift, anzeige.str().c_str(), textColor );
			myButton1.handle_events( &amp;iKartenWert );
			myButton2.handle_events2();
			apply_Surface( 1500, 0, punkte, screen );
			apply_Surface( 100, 750, text[0], screen );
			apply_Surface( 0, 0, text[1], screen );
			apply_Surface( 1325, 50, text[2], screen );

			SDL_Flip( screen );
			}

			else if( myButton1.handle_events( &amp;iKartenWert ) == 1 )
			{
			SDL_FillRect(punkte, NULL, 0x000000);
			stringstream anzeige2;
			anzeige2 &lt;&lt; &quot;Kartensumme: &quot; &lt;&lt; iKartenWert;
			punkte	= TTF_RenderText_Solid( schrift, anzeige2.str().c_str(), textColor );
			myButton2.handle_events2();
			apply_Surface( 1500, 0, punkte, screen );
			apply_Surface( 100, 750, text[0], screen );
			apply_Surface( 0, 0, text[1], screen );
			apply_Surface( 1325, 50, text[2], screen );

			SDL_Flip( screen );
			}

		}
</code></pre>
<p>Ich hab nämlich in den if else Verzweigungen noch gemacht das der Rückgabewert &quot;1&quot; ist und als normaler Rückgabewert &quot;0&quot;.<br />
Das Problem ist halt, ich will dass solange der normale Kartenwert, also 0 ausgegeben wird, bis die Funktion myButton1..., welche auch für dafür sorgt das die Karten sich umdrehen und generiert werden, aktiviert ist, also == 1, da ja dann eine der if-else Verzweigungen der Funktion aktiv ist. Dann wird erstmal die alte Surface geleert und die neue wird ausgegeben! So der Plan, nur kennt der so die 2. if-else Verzweigung nicht.</p>
<p>PS: Danke für die Ratschläge <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359844</guid><dc:creator><![CDATA[ElGreco]]></dc:creator><pubDate>Sat, 12 Oct 2013 20:09:45 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sat, 12 Oct 2013 21:51:41 GMT]]></title><description><![CDATA[<p>ElGreco schrieb:</p>
<blockquote>
<p>die Funktion &quot;blablabla&quot; ist &quot;Mybutton&quot;</p>
</blockquote>
<p>Mybutton ist keine Funktion, sondern ein Objekt.</p>
<p>ElGreco schrieb:</p>
<blockquote>
<p>hatte nur keine Lust alles zu schreiben.</p>
</blockquote>
<p>Das würde ich dir aber empfehlen, wenn du willst dass wir dir helfen.</p>
<p>ElGreco schrieb:</p>
<blockquote>
<p>Aber die if else sachen sind so wie beschrieben.</p>
</blockquote>
<p>Deine Beschreibung war sehr unklar, ich denke das geht nicht nur mir so. Wie wärs wenn du uns jetzt endlich mal die Funktion postest?</p>
<p>ElGreco schrieb:</p>
<blockquote>
<p>Als Rückgabewert ist &quot;int *Zeiger1&quot;</p>
</blockquote>
<p>Die einzige Funktion, die du hier aufgeführt hast, hat den Rückgabetyp <strong>int</strong> und nicht <strong>int</strong>*.</p>
<p>ElGreco schrieb:</p>
<blockquote>
<p>Aber wie gesagt ich bin mir 99% sicher, wo das Problem ist.</p>
</blockquote>
<p>Dann sag uns doch deine Vermutung! <strong>Mitsamt dem ganzen Code der Funktion, in der der Fehler vermutlich ist</strong> und allem, was zum Verständnis notwendig ist.</p>
<p>ElGreco schrieb:</p>
<blockquote>
<p>Die neue loop ist jetzt ( vielleicht unnötige Code verschwendung ) so:</p>
</blockquote>
<p>Das ist kein Loop, das ist eine Verzweigung.</p>
<p>ElGreco schrieb:</p>
<blockquote>
<p>Das Problem ist halt, ich will dass solange der normale Kartenwert, also 0 ausgegeben wird, bis die Funktion myButton1..., welche auch für dafür sorgt das die Karten sich umdrehen und generiert werden, aktiviert ist, also == 1, da ja dann eine der if-else Verzweigungen der Funktion aktiv ist.</p>
</blockquote>
<p>Das ist kein Problem. Was ist das Problem? Immer noch, das der neue Kartenwert über den alten drübergerendert wird? Ist die SDL_FillRect() Funktion so überhaupt richtig verwendet; müsste da nicht eher screen gefüllt werden?</p>
<p>ElGreco schrieb:</p>
<blockquote>
<p>Dann wird erstmal die alte Surface geleert und die neue wird ausgegeben! So der Plan, nur kennt der so die 2. if-else Verzweigung nicht.</p>
</blockquote>
<p>Was soll das denn heißen, &quot;er kennt sie nicht&quot;???! Das er nie in den Teil mit == 1 reingeht? Test das mal, indem du da ein <code>std::cout &lt;&lt; &quot;handleEvents() == 1&quot; &lt;&lt; std::endl;</code> o.Ä. reinschreibst.</p>
<p>ElGreco schrieb:</p>
<blockquote>
<p>Ok ich hab wohl bisschen für unklarheiten gesorgt, das wollt ich nicht sorry^^</p>
</blockquote>
<p>Sorry, aber jetzt ist es immer noch nicht klarer. Halte dir mal vor Augen, dass wir überhaupt keine Ahnung von deinem Programm haben und wie es funktioniert. Dafür, dass wir Außenstehende sind, drückst du dich immer noch extrem unklar aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359865</guid><dc:creator><![CDATA[philipp2100]]></dc:creator><pubDate>Sat, 12 Oct 2013 21:51:41 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sat, 12 Oct 2013 22:30:45 GMT]]></title><description><![CDATA[<p>Aber das Problem liegt doch nicht in der Funktion, das Problem liegt am Ablauf der Schleife in der main, das wett ich drauf und ich weis nicht was das soll jetzt hier eine ellenlange funktion zu posten aber bitte:</p>
<pre><code>int Button::handle_events( int *iZeiger )
{
    //Die Maus-Koordinaten
    int x = 0, y = 0;

	*iZeiger = 0;

	//Herz_Sheet...das wird kein Spaß:

	clipOpen[0].x = 0;
	clipOpen[0].y = 0;
	clipOpen[0].w = 300;
	clipOpen[0].h = 500;

	clipOpen[1].x = 300;
	clipOpen[1].y = 0;
	clipOpen[1].w = 300;
	clipOpen[1].h = 500;

	clipOpen[2].x = 600;
	clipOpen[2].y = 0;
	clipOpen[2].w = 300;
	clipOpen[2].h = 500;

	clipOpen[3].x = 900;
	clipOpen[3].y = 0;
	clipOpen[3].w = 300;
	clipOpen[3].h = 500;

	clipOpen[4].x = 1200;
	clipOpen[4].y = 0;
	clipOpen[4].w = 300;
	clipOpen[4].h = 500;

	clipOpen[5].x = 1500;
	clipOpen[5].y = 0;
	clipOpen[5].w = 300;
	clipOpen[5].h = 500;

	clipOpen[6].x = 0;
	clipOpen[6].y = 500;
	clipOpen[6].w = 300;
	clipOpen[6].h = 500;

	clipOpen[7].x = 300;
	clipOpen[7].y = 500;
	clipOpen[7].w = 300;
	clipOpen[7].h = 500;

	clipOpen[8].x = 600;
	clipOpen[8].y = 500;
	clipOpen[8].w = 300;
	clipOpen[8].h = 500;

	clipOpen[9].x = 900;
	clipOpen[9].y = 500;
	clipOpen[9].w = 300;
	clipOpen[9].h = 500;

	clipOpen[10].x = 1200;
	clipOpen[10].y = 500;
	clipOpen[10].w = 300;
	clipOpen[10].h = 500;

	clipOpen[11].x = 1500;
	clipOpen[11].y = 500;
	clipOpen[11].w = 300;
	clipOpen[11].h = 500;

	clipOpen[12].x = 1800;
	clipOpen[12].y = 500;
	clipOpen[12].w = 300;
	clipOpen[12].h = 500;

	//Herz Ende//

	if( event.type == SDL_MOUSEBUTTONDOWN )																									
    {
        //If the left mouse button was pressed
        if( event.button.button == SDL_BUTTON_LEFT )
        {
            //Get the mouse offsets
            x = event.button.x;
            y = event.button.y;

            //If the mouse is over the button
            if( ( x &gt; box.x ) &amp;&amp; ( x &lt; box.x + box.w ) &amp;&amp; ( y &gt; box.y ) &amp;&amp; ( y &lt; box.y + box.h ) )
            {

                //Set the button sprite
                if( rand() %52 == 1 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610,  512, card_Heart, screen, &amp;clipOpen[ 0 ] );
					bGeklickt = true;
				    *iZeiger  = 2;
					return 1;
				}
				else if( rand() %52 == 2 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Heart, screen, &amp;clipOpen[ 1 ] );
					bGeklickt = true;
					*iZeiger  = 3;
					return 1;
				}
				else if( rand() %52 == 3 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610,  512, card_Heart, screen, &amp;clipOpen[ 2 ] );
					bGeklickt = true;
					*iZeiger = 4;
					return 1;
				}
				else if( rand() %52 == 4 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Heart, screen, &amp;clipOpen[ 3 ] );
					bGeklickt = true;
					*iZeiger = 5;
					return 1;
				}
				else if( rand() %52 == 5 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Heart, screen, &amp;clipOpen[ 4 ] );
					bGeklickt = true;
					*iZeiger = 6;
					return 1;
				}
				else if( rand() %52 == 6 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Heart, screen, &amp;clipOpen[ 5 ] );
					bGeklickt = true;
					*iZeiger = 7;
					return 1;
				}
				else if( rand() %52 == 7 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Heart, screen, &amp;clipOpen[ 6 ] );
					bGeklickt = true;
					*iZeiger = 8;
					return 1;
				}
				else if( rand() %52 == 8 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Heart, screen, &amp;clipOpen[ 7 ] );
					bGeklickt = true;
					*iZeiger = 9;
					return 1;
				}
				else if( rand() %52 == 9 &amp;&amp; bGeklickt == false)
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Heart, screen, &amp;clipOpen[ 8 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 10 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Heart, screen, &amp;clipOpen[ 9 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 11 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Heart, screen, &amp;clipOpen[ 10 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 12 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Heart, screen, &amp;clipOpen[ 11 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 13 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Heart, screen, &amp;clipOpen[ 12 ] );
					bGeklickt = true;
					*iZeiger = 11;
					return 1;
				}

				else if( rand() %52 == 14 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610,  512, card_Caro, screen, &amp;clipOpen[ 0 ] );
					bGeklickt = true;
					*iZeiger = 2;
					return 1;
				}
				else if( rand() %52 == 15 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Caro, screen, &amp;clipOpen[ 1 ] );
					bGeklickt = true;
					*iZeiger = 3;
					return 1;
				}
				else if( rand() %52 == 16 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Caro, screen, &amp;clipOpen[ 2 ] );
					bGeklickt = true;
					*iZeiger = 4;
					return 1;
				}
				else if( rand() %52 == 17 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Caro, screen, &amp;clipOpen[ 3 ] );
					bGeklickt = true;
					*iZeiger = 5;
					return 1;
				}
				else if( rand() %52 == 18 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Caro, screen, &amp;clipOpen[ 4 ] );
					bGeklickt = true;
					*iZeiger = 6;
					return 1;
				}
				else if( rand() %52 == 19 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Caro, screen, &amp;clipOpen[ 5 ] );
					bGeklickt = true;
					*iZeiger = 7;
					return 1;
				}
				else if( rand() %52 == 20 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Caro, screen, &amp;clipOpen[ 6 ] );
					bGeklickt = true;
					*iZeiger = 8;
					return 1;
				}
				else if( rand() %52 == 21 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Caro, screen, &amp;clipOpen[ 7 ] );
					bGeklickt = true;
					*iZeiger = 9;
					return 1;
				}
				else if( rand() %52 == 22 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Caro, screen, &amp;clipOpen[ 8 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 23 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Caro, screen, &amp;clipOpen[ 9 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 24 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Caro, screen, &amp;clipOpen[ 10 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 25 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Caro, screen, &amp;clipOpen[ 11 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 26 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Caro, screen, &amp;clipOpen[ 12 ] );
					bGeklickt = true;
					*iZeiger = 11;
					return 1;
				}

				// KARO_ENDE //

				else if( rand() %52 == 27 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 0 ] );
					bGeklickt = true;
					*iZeiger = 2;
					return 1;
				}
				else if( rand() %52 == 28 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 1 ] );
					bGeklickt = true;
					*iZeiger = 3;
					return 1;
				}
				else if( rand() %52 == 29 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 2 ] );
					bGeklickt = true;
					*iZeiger = 4;
					return 1;
				}
				else if( rand() %52 == 30 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 3 ] );
					bGeklickt = true;
					*iZeiger = 5;
					return 1;
				}
				else if( rand() %52 == 31 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 4 ] );
					bGeklickt = true;
					*iZeiger = 6;
					return 1;
				}
				else if( rand() %52 == 32 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 5 ] );
					bGeklickt = true;
					*iZeiger = 7;
					return 1;

				}
				else if( rand() %52 == 33 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 6 ] );
					bGeklickt = true;
					*iZeiger = 8;
					return 1;
				}
				else if( rand() %52 == 34 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 7 ] );
					bGeklickt = true;
					*iZeiger = 9;
					return 1;
				}
				else if( rand() %52 == 35 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 8 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 36 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 9 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 37 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 10 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 38 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 11 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 39 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 12 ] );
					bGeklickt = true;
					*iZeiger = 11;
					return 1;
				}

				//Kreuz:

				else if( rand() %52 == 40 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Kreuz, screen, &amp;clipOpen[ 0 ] );
					bGeklickt = true;
					*iZeiger = 2;
					return 1;
				}
				else if( rand() %52 == 41 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Kreuz, screen, &amp;clipOpen[ 1 ] );
					bGeklickt = true;
					*iZeiger = 3;
					return 1;
				}
				else if( rand() %52 == 42 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Kreuz, screen, &amp;clipOpen[ 2 ] );
					bGeklickt = true;
					*iZeiger = 4;
					return 1;
				}
				else if( rand() %52 == 43 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Kreuz, screen, &amp;clipOpen[ 3 ] );
					bGeklickt = true;
					*iZeiger = 5;
					return 1;
				}
				else if( rand() %52 == 44 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Kreuz, screen, &amp;clipOpen[ 4 ] );
					bGeklickt = true;
					*iZeiger = 6;
					return 1;
				}
				else if( rand() %52 == 45 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Kreuz, screen, &amp;clipOpen[ 5 ] );
					bGeklickt = true;
					*iZeiger = 7;
					return 1;
				}
				else if( rand() %52 == 46 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Pik, screen, &amp;clipOpen[ 6 ] );
					bGeklickt = true;
					*iZeiger = 8;
					return 1;
				}
				else if( rand() %52 == 47 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Kreuz, screen, &amp;clipOpen[ 7 ] );
					bGeklickt = true;
					*iZeiger = 9;
					return 1;
				}
				else if( rand() %52 == 48 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Kreuz, screen, &amp;clipOpen[ 8 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 49 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Kreuz, screen, &amp;clipOpen[ 9 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 50 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Kreuz, screen, &amp;clipOpen[ 10 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 51 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Kreuz, screen, &amp;clipOpen[ 11 ] );
					bGeklickt = true;
					*iZeiger = 10;
					return 1;
				}
				else if( rand() %52 == 52 &amp;&amp; bGeklickt == false )
				{
					Button myButton1( 610, 512, 300, 500 );
					apply_Surface( 610, 512, card_Kreuz, screen, &amp;clipOpen[ 12 ] );
					bGeklickt = true;
					*iZeiger = 11;
					return 1;
				}

				//Kreuz_Ende

				if( Mix_PlayChannel( -1, cardFlip, 0 ) == -1 )
				{
					return 1;
				}
         }
      }
   }
   return *iZeiger, 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2359873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359873</guid><dc:creator><![CDATA[ElGreco]]></dc:creator><pubDate>Sat, 12 Oct 2013 22:30:45 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sun, 13 Oct 2013 06:54:26 GMT]]></title><description><![CDATA[<p>ElGreco schrieb:</p>
<blockquote>
<p>ich weis nicht was das soll jetzt hier eine ellenlange funktion zu posten aber bitte:</p>
</blockquote>
<p>Zum Beispiel, damit ich dir sagen kann, dass da 1. doch ein Fehler drin ist und 2. du die Funktion viel kürzer und fehlerunanfälliger schreiben kannst.</p>
<p>Zu 1.: rand() gibt Zahlen zwischen <strong>0</strong> und <strong>RAND_MAX</strong> (typischerweise sehr groß) zurück. Wenn du das modulo 52 nimmst (mit dem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f635.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--dizzy_face"
      title="%)"
      alt="😵"
    /> kommen Zahlen zwischen <strong>0</strong> und <strong>51</strong> raus, nicht zwischen 1 und 52. Modulo ist der Teilerrest beim ganzzahligen Teilen, in dem Fall durch 52, der kann nie 52 werden.</p>
<p>Zu 2.: Codewiederholungen sind schlechter Stil, da schlecht lesbar und fehleranfällig, das sollte man immer vermeiden! Ich würde den Körper des if-Blocks mit <code>//If the mouse is over the button</code> , also alles zwischen Z. 89 und Z. 524 einschl. folgendermaßen umschreiben (Bereich der Zufallszahlen sind schon angepasst (siehe 1.)):</p>
<pre><code>if ( ! bGeklickt ) {
    int rand = rand() % 52;
    &lt;Typ für Karten&gt; card;
    if ( rand &gt;= 39 ) card = card_Kreuz;
    else if (rand &gt;= 26) card = card_Pik;
    else if (rand &gt;= 13) card = card_Caro;
    else card = card_Heart;
    if ( (rand + 1) % 13 == 0 ) *iZeiger = 11;
    else if ( (rand + 1) % 13 &gt;= 9 &amp;&amp; (rand + 1) % 13 &lt;= 12 ) *iZeiger = 10;
    else *iZeiger = rand % 13 + 2;

    Button myButton1(610, 512, 300, 500);
    apply_Surface(610, 512, card, screen, &amp;clipOpen[rand % 13]);
    bGeklickt = true;
    return 1;
}

if(Mix_PlayChannel(-1, cardFlip, 0) == -1) {
    return 1;
}
</code></pre>
<p>416 Zeilen Code gespart - nicht schlecht oder? Und der Code ist vermutlich auch schneller, weil er sich bei hohen Zufallszahlen nicht durch die ganzen if-else-Zweife hangeln muss.</p>
<p>Auf das andere, was ich geschrieben habe, gehst du gar nicht ein. Und den Code von der <strong>ganzen</strong> Funktion, wo du den Fehler vermutest (der main()-Funktion, wenn ich das richtig verstanden habe), hast du auch nicht gepostet.</p>
<p>edit: Und was sollt eigentlich das <code>Button myButton1(610, 512, 300, 500);</code> ?<br />
Das ist eine lokale Variable, die ist nur innerhalb dieses if-Blocks gültig, und da wird sie nicht benutzt.. Ist das so beabsichtigt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359891</guid><dc:creator><![CDATA[philipp2100]]></dc:creator><pubDate>Sun, 13 Oct 2013 06:54:26 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sun, 13 Oct 2013 09:16:39 GMT]]></title><description><![CDATA[<p>Mir fällt gerade noch ein, dass das Vergleichen der Zufallszahl bei dir auch nicht richtig ist. Denn anstatt einmal eine Zufallszahl zu generieren und diese dann zu verwenden (siehe mein Code, Z. 2), rufst du in jeder if- bzw. else-if-Abfrage rand() neu auf. Somit wird in jeder Abfrage eine neue Zufallszahl mit dem entsprechenden Wert verglichen. Evtl. liegt da sogar der Fehler, denn wenn bei keiner der Abfragen zufällig der passende Wert von rand() zurückgegeben wird, sodass die Bedingung erfüllt ist, wird dein ganzes Konstrukt erfolglos durchlaufen und am Schluss 0 zurückgegeben.</p>
<p>Wenn du dann noch den Zufallsgenerator nicht geseedet hast (am Anfang musst du einmalig srand(time(NULL)) aufrufen, sonst kommen immer die gleichen Zufallszahlen) tritt das Problem bei jedem Programmdurchlauf in gleicher Weise auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359903</guid><dc:creator><![CDATA[philipp2100]]></dc:creator><pubDate>Sun, 13 Oct 2013 09:16:39 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen aktuallisieren? on Sun, 13 Oct 2013 13:35:25 GMT]]></title><description><![CDATA[<p>Ok, vielen vielen Dank schonmal für die Sache mit der code Gestaltung und der Sache mit dem Modulo Operator...man merkt ich bin Anfänger.</p>
<p>Also das mit dem Zufallsgenerator kann gut möglich sein, wenn der jetzt fehlerhaft ist und desshalb 0 zurück gibt, kein Wunder, dass dann nicht die if Anweisung für &quot; == 1 &quot; durchlaufen wird. Ich überarbeite den Code mal und melde mich nochmal.</p>
<p>Mfg ElGreco</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359952</guid><dc:creator><![CDATA[ElGreco]]></dc:creator><pubDate>Sun, 13 Oct 2013 13:35:25 GMT</pubDate></item></channel></rss>