<?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[Bug in der Tic Tac Toe implementierung]]></title><description><![CDATA[<p>Ich habe einen bug in der Tic Tac Toe implementierung der wie folgt aus sieht,<br />
wenn ich an bestimmten stellen den Spielstein setze, werde statt nur 1 Spielstein 2 gesetzt.</p>
<pre><code>1.  #include&lt;iostream&gt;
   2. #include&lt;iomanip&gt;
   3. using namespace std;
   4.  
   5. class tic_tac_toe
   6. {
   7. private:
   8.     char Spielfeld[2][2];
   9. public:
  10.     void Spieler1_zug();
  11.     void Spieler2_zug();
  12.     void anzeigen();
  13.     void gewonnen_s1();
  14.     void gewonnen_s2();
  15.     tic_tac_toe();
  16. };
  17.  
  18. tic_tac_toe::tic_tac_toe()
  19. {
  20.     Spielfeld[0][0]='.';
  21.     Spielfeld[0][1]='.';
  22.     Spielfeld[0][2]='.';
  23.     Spielfeld[1][0]='.';
  24.     Spielfeld[1][1]='.';
  25.     Spielfeld[1][2]='.';
  26.     Spielfeld[2][0]='.';
  27.     Spielfeld[2][1]='.';
  28.     Spielfeld[2][2]='.';
  29. }
  30.  
  31.  
  32. void tic_tac_toe::Spieler1_zug()
  33. {
  34.     int reihe=0;
  35.     int    spalte=0;
  36.     cout&lt;&lt;&quot;Reihe: &quot;;
  37.     cin&gt;&gt;reihe;
  38.     cout&lt;&lt;&quot;Spalte: &quot;;
  39.     cin&gt;&gt;spalte;
  40.     Spielfeld[reihe-1][spalte-1]='x';
  41. }
  42.  
  43. void tic_tac_toe::Spieler2_zug()
  44. {
  45.     int reihe=0;
  46.     int spalte=0;
  47.     cout&lt;&lt;&quot;Reihe: &quot;;
  48.     cin&gt;&gt;reihe;
  49.     cout&lt;&lt;&quot;Spalte: &quot;;
  50.     cin&gt;&gt;spalte;
  51.     Spielfeld[reihe-1][spalte-1]='o';
  52. }
  53.  
  54. void tic_tac_toe::anzeigen()
  55. {
  56.     int i;
  57.     int y;
  58.     for(i=0;i&lt;3;i++)
  59.     {
  60.         for(y=0;y&lt;3;y++)
  61.         {
  62.             cout&lt;&lt;setw(2)&lt;&lt;Spielfeld[y][i];
  63.         }
  64.         cout&lt;&lt;&quot;\n\n&quot;;
  65.     }
  66. }
  67.  
  68. void tic_tac_toe::gewonnen_s2()
  69. {
  70.     if(Spielfeld[0][0]=='o' &amp;&amp; Spielfeld[0][1]=='o' &amp;&amp; Spielfeld[0][2]=='o')
  71.     {
  72.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
  73.         void anzeigen();
  74.         exit(0);
  75.     }
  76.     if(Spielfeld[1][0]=='o' &amp;&amp; Spielfeld[1][1]=='o' &amp;&amp; Spielfeld[1][2]=='o')
  77.     {
  78.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
  79.         void anzeigen();
  80.         exit(0);
  81.     }
  82.     if(Spielfeld[2][0]=='o' &amp;&amp; Spielfeld[2][1]=='o' &amp;&amp; Spielfeld[2][2]=='o')
  83.     {
  84.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
  85.         void anzeigen();
  86.         exit(0);
  87.     }
  88.     if(Spielfeld[0][1]=='o' &amp;&amp; Spielfeld[1][1]=='o' &amp;&amp; Spielfeld[2][1]=='o')
  89.     {
  90.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
  91.         void anzeigen();
  92.         exit(0);
  93.     }
  94.     if(Spielfeld[0][0]=='o' &amp;&amp; Spielfeld[1][0]=='o' &amp;&amp; Spielfeld[2][0]=='o')
  95.     {
  96.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
  97.         void anzeigen();
  98.         exit(0);
  99.     }
 100.     if(Spielfeld[0][2]=='o' &amp;&amp; Spielfeld[1][2]=='o' &amp;&amp; Spielfeld[2][2]=='o')
 101.     {
 102.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
 103.         void anzeigen();
 104.         exit(0);
 105.     }
 106.     if(Spielfeld[0][0]=='o' &amp;&amp; Spielfeld[1][1]=='o' &amp;&amp; Spielfeld[2][2]=='o')
 107.     {
 108.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
 109.         void anzeigen();
 110.         exit(0);
 111.     }
 112.     if(Spielfeld[0][2]=='o' &amp;&amp; Spielfeld[1][1]=='o' &amp;&amp; Spielfeld[2][0]=='o')
 113.     {
 114.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
 115.         void anzeigen();
 116.         exit(0);
 117.     }
 118. }
 119.  
 120. void tic_tac_toe::gewonnen_s1()
 121. {
 122.     if(Spielfeld[0][0]=='x' &amp;&amp; Spielfeld[0][1]=='x' &amp;&amp; Spielfeld[0][2]=='x')
 123.     {
 124.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 125.         void anzeigen();
 126.         exit(0);
 127.     }
 128.     if(Spielfeld[1][0]=='x' &amp;&amp; Spielfeld[1][1]=='x' &amp;&amp; Spielfeld[1][2]=='x')
 129.     {
 130.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 131.         void anzeigen();
 132.         exit(0);
 133.     }
 134.     if(Spielfeld[2][0]=='x' &amp;&amp; Spielfeld[2][1]=='x' &amp;&amp; Spielfeld[2][2]=='x')
 135.     {
 136.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 137.         void anzeigen();
 138.         exit(0);
 139.     }
 140.     if(Spielfeld[0][1]=='x' &amp;&amp; Spielfeld[1][1]=='x' &amp;&amp; Spielfeld[2][1]=='x')
 141.     {
 142.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 143.         void anzeigen();
 144.         exit(0);
 145.     }
 146.     if(Spielfeld[0][0]=='x' &amp;&amp; Spielfeld[1][0]=='x' &amp;&amp; Spielfeld[2][0]=='x')
 147.     {
 148.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 149.         void anzeigen();
 150.         exit(0);
 151.     }
 152.     if(Spielfeld[0][2]=='x' &amp;&amp; Spielfeld[1][2]=='x' &amp;&amp; Spielfeld[2][2]=='x')
 153.     {
 154.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 155.         void anzeigen();
 156.         exit(0);
 157.     }
 158.     if(Spielfeld[0][0]=='x' &amp;&amp; Spielfeld[1][1]=='x' &amp;&amp; Spielfeld[2][2]=='x')
 159.     {
 160.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 161.         void anzeigen();
 162.         exit(0);
 163.     }
 164.     if(Spielfeld[0][2]=='x' &amp;&amp; Spielfeld[1][1]=='x' &amp;&amp; Spielfeld[2][0]=='x')
 165.     {
 166.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 167.         void anzeigen();
 168.         exit(0);
 169.     }
 170. }
 171.  
 172. int main()
 173. {
 174.     tic_tac_toe tic;
 175.     while(1)
 176.     {
 177.         tic.anzeigen();
 178.         tic.Spieler1_zug();
 179.         tic.gewonnen_s1();
 180.         tic.anzeigen();
 181.         tic.Spieler2_zug();
 182.         tic.gewonnen_s2();
 183.     }
 184. }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/156388/bug-in-der-tic-tac-toe-implementierung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 20:24:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156388.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Aug 2006 11:43:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:12:59 GMT]]></title><description><![CDATA[<p>Ich habe einen bug in der Tic Tac Toe implementierung der wie folgt aus sieht,<br />
wenn ich an bestimmten stellen den Spielstein setze, werde statt nur 1 Spielstein 2 gesetzt.</p>
<pre><code>1.  #include&lt;iostream&gt;
   2. #include&lt;iomanip&gt;
   3. using namespace std;
   4.  
   5. class tic_tac_toe
   6. {
   7. private:
   8.     char Spielfeld[2][2];
   9. public:
  10.     void Spieler1_zug();
  11.     void Spieler2_zug();
  12.     void anzeigen();
  13.     void gewonnen_s1();
  14.     void gewonnen_s2();
  15.     tic_tac_toe();
  16. };
  17.  
  18. tic_tac_toe::tic_tac_toe()
  19. {
  20.     Spielfeld[0][0]='.';
  21.     Spielfeld[0][1]='.';
  22.     Spielfeld[0][2]='.';
  23.     Spielfeld[1][0]='.';
  24.     Spielfeld[1][1]='.';
  25.     Spielfeld[1][2]='.';
  26.     Spielfeld[2][0]='.';
  27.     Spielfeld[2][1]='.';
  28.     Spielfeld[2][2]='.';
  29. }
  30.  
  31.  
  32. void tic_tac_toe::Spieler1_zug()
  33. {
  34.     int reihe=0;
  35.     int    spalte=0;
  36.     cout&lt;&lt;&quot;Reihe: &quot;;
  37.     cin&gt;&gt;reihe;
  38.     cout&lt;&lt;&quot;Spalte: &quot;;
  39.     cin&gt;&gt;spalte;
  40.     Spielfeld[reihe-1][spalte-1]='x';
  41. }
  42.  
  43. void tic_tac_toe::Spieler2_zug()
  44. {
  45.     int reihe=0;
  46.     int spalte=0;
  47.     cout&lt;&lt;&quot;Reihe: &quot;;
  48.     cin&gt;&gt;reihe;
  49.     cout&lt;&lt;&quot;Spalte: &quot;;
  50.     cin&gt;&gt;spalte;
  51.     Spielfeld[reihe-1][spalte-1]='o';
  52. }
  53.  
  54. void tic_tac_toe::anzeigen()
  55. {
  56.     int i;
  57.     int y;
  58.     for(i=0;i&lt;3;i++)
  59.     {
  60.         for(y=0;y&lt;3;y++)
  61.         {
  62.             cout&lt;&lt;setw(2)&lt;&lt;Spielfeld[y][i];
  63.         }
  64.         cout&lt;&lt;&quot;\n\n&quot;;
  65.     }
  66. }
  67.  
  68. void tic_tac_toe::gewonnen_s2()
  69. {
  70.     if(Spielfeld[0][0]=='o' &amp;&amp; Spielfeld[0][1]=='o' &amp;&amp; Spielfeld[0][2]=='o')
  71.     {
  72.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
  73.         void anzeigen();
  74.         exit(0);
  75.     }
  76.     if(Spielfeld[1][0]=='o' &amp;&amp; Spielfeld[1][1]=='o' &amp;&amp; Spielfeld[1][2]=='o')
  77.     {
  78.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
  79.         void anzeigen();
  80.         exit(0);
  81.     }
  82.     if(Spielfeld[2][0]=='o' &amp;&amp; Spielfeld[2][1]=='o' &amp;&amp; Spielfeld[2][2]=='o')
  83.     {
  84.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
  85.         void anzeigen();
  86.         exit(0);
  87.     }
  88.     if(Spielfeld[0][1]=='o' &amp;&amp; Spielfeld[1][1]=='o' &amp;&amp; Spielfeld[2][1]=='o')
  89.     {
  90.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
  91.         void anzeigen();
  92.         exit(0);
  93.     }
  94.     if(Spielfeld[0][0]=='o' &amp;&amp; Spielfeld[1][0]=='o' &amp;&amp; Spielfeld[2][0]=='o')
  95.     {
  96.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
  97.         void anzeigen();
  98.         exit(0);
  99.     }
 100.     if(Spielfeld[0][2]=='o' &amp;&amp; Spielfeld[1][2]=='o' &amp;&amp; Spielfeld[2][2]=='o')
 101.     {
 102.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
 103.         void anzeigen();
 104.         exit(0);
 105.     }
 106.     if(Spielfeld[0][0]=='o' &amp;&amp; Spielfeld[1][1]=='o' &amp;&amp; Spielfeld[2][2]=='o')
 107.     {
 108.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
 109.         void anzeigen();
 110.         exit(0);
 111.     }
 112.     if(Spielfeld[0][2]=='o' &amp;&amp; Spielfeld[1][1]=='o' &amp;&amp; Spielfeld[2][0]=='o')
 113.     {
 114.         cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
 115.         void anzeigen();
 116.         exit(0);
 117.     }
 118. }
 119.  
 120. void tic_tac_toe::gewonnen_s1()
 121. {
 122.     if(Spielfeld[0][0]=='x' &amp;&amp; Spielfeld[0][1]=='x' &amp;&amp; Spielfeld[0][2]=='x')
 123.     {
 124.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 125.         void anzeigen();
 126.         exit(0);
 127.     }
 128.     if(Spielfeld[1][0]=='x' &amp;&amp; Spielfeld[1][1]=='x' &amp;&amp; Spielfeld[1][2]=='x')
 129.     {
 130.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 131.         void anzeigen();
 132.         exit(0);
 133.     }
 134.     if(Spielfeld[2][0]=='x' &amp;&amp; Spielfeld[2][1]=='x' &amp;&amp; Spielfeld[2][2]=='x')
 135.     {
 136.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 137.         void anzeigen();
 138.         exit(0);
 139.     }
 140.     if(Spielfeld[0][1]=='x' &amp;&amp; Spielfeld[1][1]=='x' &amp;&amp; Spielfeld[2][1]=='x')
 141.     {
 142.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 143.         void anzeigen();
 144.         exit(0);
 145.     }
 146.     if(Spielfeld[0][0]=='x' &amp;&amp; Spielfeld[1][0]=='x' &amp;&amp; Spielfeld[2][0]=='x')
 147.     {
 148.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 149.         void anzeigen();
 150.         exit(0);
 151.     }
 152.     if(Spielfeld[0][2]=='x' &amp;&amp; Spielfeld[1][2]=='x' &amp;&amp; Spielfeld[2][2]=='x')
 153.     {
 154.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 155.         void anzeigen();
 156.         exit(0);
 157.     }
 158.     if(Spielfeld[0][0]=='x' &amp;&amp; Spielfeld[1][1]=='x' &amp;&amp; Spielfeld[2][2]=='x')
 159.     {
 160.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 161.         void anzeigen();
 162.         exit(0);
 163.     }
 164.     if(Spielfeld[0][2]=='x' &amp;&amp; Spielfeld[1][1]=='x' &amp;&amp; Spielfeld[2][0]=='x')
 165.     {
 166.         cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
 167.         void anzeigen();
 168.         exit(0);
 169.     }
 170. }
 171.  
 172. int main()
 173. {
 174.     tic_tac_toe tic;
 175.     while(1)
 176.     {
 177.         tic.anzeigen();
 178.         tic.Spieler1_zug();
 179.         tic.gewonnen_s1();
 180.         tic.anzeigen();
 181.         tic.Spieler2_zug();
 182.         tic.gewonnen_s2();
 183.     }
 184. }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1118261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118261</guid><dc:creator><![CDATA[ReALITY5]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:12:59 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:03:50 GMT]]></title><description><![CDATA[<p>Gib mal Beispiele wo das passiert. Noch was:</p>
<ol>
<li>Bitte das nächste mal die Zeilenzahlen entfernen....<br />
2)Das Programm hat noch mehr Bugs: überschreitung der Zeilen und Spaltengrenzen wird nicht überprüft; man kann die felder so oft wie man will belegen</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/1118278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118278</guid><dc:creator><![CDATA[Karldin]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:03:50 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:07:36 GMT]]></title><description><![CDATA[<p>und<br />
void anzeigen();<br />
statt<br />
anzeigen();<br />
bei der benutzung von anzeigen.</p>
<p>und exit(0) muss auch irgendwann weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118283</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:07:36 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:08:30 GMT]]></title><description><![CDATA[<p>Der Bug mit dem 2fach Zug Passiert, wenn man folgende felder belegt</p>
<p>. x x<br />
. . .<br />
x x .</p>
<p>x steht für die bug felder</p>
<p>Das mit der Prüfung auf Feldüberschreitung und Feldbelegung will ich danach machen, wenn ich weiss, das es funktioniert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118285</guid><dc:creator><![CDATA[ReALITY5]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:08:30 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:14:16 GMT]]></title><description><![CDATA[<p>ReALITY5 schrieb:</p>
<blockquote>
<p>Das mit der Prüfung auf Feldüberschreitung und Feldbelegung will ich danach machen, wenn ich weiss, das es funktioniert</p>
</blockquote>
<p>machs kleich. feldgrenzenüberschreitung kann nähmlich dran schult sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118291</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:14:16 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:15:11 GMT]]></title><description><![CDATA[<p>He ich will ja nix sagen aba wäre es nicht sinvoller anstatt der ganzen if-clauses lieber zu checken ob ne lineare Funktion möglich is bzw.:</p>
<p>wenn 1 1 besetzt is und 2 3 auch (also vom Gegner) dann die differenz, (1/2),zum zweiten Vektor dazuaddieren und schauen ob das Feld besetzt ist, wenn nicht dann einen drauf setzen.</p>
<p>und immer alle Punkte so überprüfen.</p>
<p>mfg, hoffe ich habs gut genug erklärt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118292</guid><dc:creator><![CDATA[user89]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:15:11 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:16:42 GMT]]></title><description><![CDATA[<p>ahaja und eben auch checken ob das feld zu den neun erlaubten Feldern gehört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118295</guid><dc:creator><![CDATA[user89]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:16:42 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:21:25 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char Spielfeld[2][2];
</code></pre>
<p>das sind 2x2 Felder, Du brauchst aber 3x3</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118297</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:21:25 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:25:48 GMT]]></title><description><![CDATA[<p>Airdamn schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char Spielfeld[2][2];
</code></pre>
<p>das sind 2x2 Felder, Du brauchst aber 3x3</p>
</blockquote>
<p>Das nullte array element wird doch mit gezählt, oder?</p>
<p>Stimmt ja, bei einem char array wird das letze element für die binäre 0 verwendet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118299</guid><dc:creator><![CDATA[ReALITY5]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:25:48 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:25:22 GMT]]></title><description><![CDATA[<p>ReALITY5 schrieb:</p>
<blockquote>
<p>Airdamn schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char Spielfeld[2][2];
</code></pre>
<p>das sind 2x2 Felder, Du brauchst aber 3x3</p>
</blockquote>
<p>Das nullte array element wird doch mit gezählt, oder?</p>
</blockquote>
<p>ja, aber nicht das mit index 2.<br />
Airdamn hat den fehler gefunden, wüde ich sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118302</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:25:22 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:26:42 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char feld[2]; // sind 2 chars
// Zugriff
feld[0] = 'x';
feld[1] = 'o';
</code></pre>
<p>beim anlegen von Arrays gibst Du die Größe des Arrays an.<br />
Beim Zugriff beginnt der Index bei 0 und endet bei n-1, wobei n die Größe des Arrays ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118305</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:26:42 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:27:15 GMT]]></title><description><![CDATA[<p>ReALITY5 schrieb:</p>
<blockquote>
<p>Airdamn schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char Spielfeld[2][2];
</code></pre>
<p>das sind 2x2 Felder, Du brauchst aber 3x3</p>
</blockquote>
<p>Das nullte array element wird doch mit gezählt, oder?</p>
</blockquote>
<p>es gibt kein 'nulltes' element, wohl aber eines mit dem index 0 (das wäre das erste element). umgekehrt wird der index aber nur bis 1 - die dimensionsangaben bei der deklaration bestimmen die anzahl der elemente, nicht den höchsten index.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118307</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:27:15 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:44:14 GMT]]></title><description><![CDATA[<p>Wenn ich jetzt eine abfrage machen will, ob das feld belegt ist, verfängt sich das in einer endlosschleife, die funktion folgt:</p>
<pre><code>void tic_tac_toe::Spieler2_zug()
{
	int reihe=0;
	int spalte=0;
	while(Spielfeld[reihe-1][spalte-1]=='x')
	{
	cout&lt;&lt;&quot;Reihe: &quot;;
	cin&gt;&gt;reihe;
	cout&lt;&lt;&quot;Spalte: &quot;;
	cin&gt;&gt;spalte;
	}
	Spielfeld[reihe-1][spalte-1]=='y';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1118323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118323</guid><dc:creator><![CDATA[ReALITY5]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:44:14 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:47:32 GMT]]></title><description><![CDATA[<p>ich denke eher an</p>
<pre><code class="language-cpp">void tic_tac_toe::Spieler2_zug()
{
	int reihe=0;
	int spalte=0;
	do	{
	cout&lt;&lt;&quot;Reihe: &quot;;
	cin&gt;&gt;reihe;
	cout&lt;&lt;&quot;Spalte: &quot;;
	cin&gt;&gt;spalte;
	}while(reihe&gt;=1 &amp;&amp; reihe&lt;=3 &amp;&amp; spalte&gt;=1 &amp;&amp; spalte &lt;=3 &amp;&amp; Spielfeld[reihe-1][spalte-1]!='y')
	Spielfeld[reihe-1][spalte-1]=='y';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1118335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118335</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:47:32 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 12:56:24 GMT]]></title><description><![CDATA[<p>@ReALITY:</p>
<pre><code class="language-cpp">Spielfeld[reihe-1][spalte-1]=='y';
</code></pre>
<p>ist ein Vergleich, keine Zuweisung...vielleicht solltest Du Deinen Code mal genauer angucken :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118348</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Wed, 16 Aug 2006 12:56:24 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 13:07:40 GMT]]></title><description><![CDATA[<p>Der will jetzt immer noch net, jetzt is die ganze Zeit Spieler 1 am Zug</p>
<pre><code>void tic_tac_toe::Spieler1_zug()
{
    int reihe=0;
    int spalte=0;
    while(Spielfeld[reihe-1][spalte-1]=='o')
    {
    cout&lt;&lt;&quot;Reihe: &quot;;
    cin&gt;&gt;reihe;
    cout&lt;&lt;&quot;Spalte: &quot;;
    cin&gt;&gt;spalte;
    }
    Spielfeld[reihe-1][spalte-1]='x';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1118364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118364</guid><dc:creator><![CDATA[ReALITY5]]></dc:creator><pubDate>Wed, 16 Aug 2006 13:07:40 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Wed, 16 Aug 2006 15:13:54 GMT]]></title><description><![CDATA[<p>Ich habe das Problem gelöst mit der mehrfachbelegung und dem abfragen ob das feld schon belegt ist bzw ob das feld überhapt in der aaray grenze ist. Für alle die auch ein tic tac toe implementieren wollen hier meine implementierung</p>
<pre><code>#include&lt;iostream&gt;
#include&lt;iomanip&gt;
using namespace std;

class tic_tac_toe
{
private:
	char Spielfeld[3][3];
public:
	void Spieler1_zug();
	void Spieler2_zug();
	void anzeigen();
	void gewonnen_s1();
	void gewonnen_s2();
	int check2(int reihe,int spalte);
	int check1(int reihe,int spalte);
	tic_tac_toe();
};

tic_tac_toe::tic_tac_toe()
{
	Spielfeld[0][0]='.';
	Spielfeld[0][1]='.';
	Spielfeld[0][2]='.';
	Spielfeld[1][0]='.';
	Spielfeld[1][1]='.';
	Spielfeld[1][2]='.';
	Spielfeld[2][0]='.';
	Spielfeld[2][1]='.';
	Spielfeld[2][2]='.';
}

void tic_tac_toe::Spieler1_zug()
{
    int reihe=0;
    int spalte=0;
    while(reihe&lt;1 || reihe&gt;3 || spalte&lt;1 || spalte&gt;3 || Spielfeld[reihe-1][spalte-1]=='o' || Spielfeld[reihe-1][spalte-1]=='x')
    {
    cout&lt;&lt;&quot;Reihe: &quot;;
    cin&gt;&gt;reihe;
    cout&lt;&lt;&quot;Spalte: &quot;;
    cin&gt;&gt;spalte;
    }
    Spielfeld[reihe-1][spalte-1]='x';
}

void tic_tac_toe::Spieler2_zug()
{
    int reihe=0;
    int spalte=0;
    while(reihe&lt;1 || reihe&gt;3 || spalte&lt;1 || spalte&gt;3 || Spielfeld[reihe-1][spalte-1]=='o' || Spielfeld[reihe-1][spalte-1]=='x')
    {
    cout&lt;&lt;&quot;Reihe: &quot;;
    cin&gt;&gt;reihe;
    cout&lt;&lt;&quot;Spalte: &quot;;
    cin&gt;&gt;spalte;
    }
    Spielfeld[reihe-1][spalte-1]='o';
}

void tic_tac_toe::anzeigen()
{
	int i;
	int y;
	for(i=0;i&lt;3;i++)
	{
		for(y=0;y&lt;3;y++)
		{
			cout&lt;&lt;setw(2)&lt;&lt;Spielfeld[y][i];
		}
		cout&lt;&lt;&quot;\n\n&quot;;
	}
}

void tic_tac_toe::gewonnen_s2()
{
	if(Spielfeld[0][0]=='o' &amp;&amp; Spielfeld[0][1]=='o' &amp;&amp; Spielfeld[0][2]=='o')
	{
		cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[1][0]=='o' &amp;&amp; Spielfeld[1][1]=='o' &amp;&amp; Spielfeld[1][2]=='o')
	{
		cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[2][0]=='o' &amp;&amp; Spielfeld[2][1]=='o' &amp;&amp; Spielfeld[2][2]=='o')
	{
		cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[0][1]=='o' &amp;&amp; Spielfeld[1][1]=='o' &amp;&amp; Spielfeld[2][1]=='o')
	{
		cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[0][0]=='o' &amp;&amp; Spielfeld[1][0]=='o' &amp;&amp; Spielfeld[2][0]=='o')
	{
		cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[0][2]=='o' &amp;&amp; Spielfeld[1][2]=='o' &amp;&amp; Spielfeld[2][2]=='o')
	{
		cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[0][0]=='o' &amp;&amp; Spielfeld[1][1]=='o' &amp;&amp; Spielfeld[2][2]=='o')
	{
		cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[0][2]=='o' &amp;&amp; Spielfeld[1][1]=='o' &amp;&amp; Spielfeld[2][0]=='o')
	{
		cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
}

void tic_tac_toe::gewonnen_s1()
{
	if(Spielfeld[0][0]=='x' &amp;&amp; Spielfeld[0][1]=='x' &amp;&amp; Spielfeld[0][2]=='x')
	{
		cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[1][0]=='x' &amp;&amp; Spielfeld[1][1]=='x' &amp;&amp; Spielfeld[1][2]=='x')
	{
		cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[2][0]=='x' &amp;&amp; Spielfeld[2][1]=='x' &amp;&amp; Spielfeld[2][2]=='x')
	{
		cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[0][1]=='x' &amp;&amp; Spielfeld[1][1]=='x' &amp;&amp; Spielfeld[2][1]=='x')
	{
		cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[0][0]=='x' &amp;&amp; Spielfeld[1][0]=='x' &amp;&amp; Spielfeld[2][0]=='x')
	{
		cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[0][2]=='x' &amp;&amp; Spielfeld[1][2]=='x' &amp;&amp; Spielfeld[2][2]=='x')
	{
		cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[0][0]=='x' &amp;&amp; Spielfeld[1][1]=='x' &amp;&amp; Spielfeld[2][2]=='x')
	{
		cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
	if(Spielfeld[0][2]=='x' &amp;&amp; Spielfeld[1][1]=='x' &amp;&amp; Spielfeld[2][0]=='x')
	{
		cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
		void anzeigen();
		exit(0);
	}
}

int main()
{
        int i;
	tic_tac_toe tic;
	while(i=0;i&lt;5;i++)
	{
		tic.anzeigen();
		tic.Spieler1_zug();
		tic.gewonnen_s1();
		tic.anzeigen();
		tic.Spieler2_zug();
		tic.gewonnen_s2();
	}
}
</code></pre>
<p>Verbesserungsvorschläge nehm ich gerne an <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1118459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118459</guid><dc:creator><![CDATA[ReALITY5]]></dc:creator><pubDate>Wed, 16 Aug 2006 15:13:54 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Thu, 17 Aug 2006 09:52:11 GMT]]></title><description><![CDATA[<p>Ob aus dem Prog noch was wird.... <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="😃"
    /></p>
<p>1)Plz for(i=0;i&lt;5;i++) statt while(i=0;i&lt;5;i++) und du könntest das i auch im schleifenkopf deklarieren: for(int i=0;i&lt;5;i++)</p>
<p>2)Ich würde das Reihen Spalten ändern: Reihe ist Vertical Spalte Horizontal</p>
<p>3)es gibt kein Unentschieden</p>
<p>4)gebt mal statt ner zahl zB g+ ein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119022</guid><dc:creator><![CDATA[Karldin]]></dc:creator><pubDate>Thu, 17 Aug 2006 09:52:11 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Thu, 17 Aug 2006 10:19:52 GMT]]></title><description><![CDATA[<p>ich würde ein array mit 10 elementen nehmen, und das element ann der stelle 0 ungenutzt lassen.<br />
und zwar in folgender bedeutung:<br />
789<br />
456<br />
123<br />
das ist zufällig absichtlich auch die anordnung auf dem ziffernblock der tastatur und damit recht benutzerfreundlich.<br />
linien kann man definieren mit startpunkt und richtung.<br />
123= 1 1<br />
456= 4 1<br />
789= 7 1<br />
147= 1 3<br />
258= 2 3<br />
369= 3 3<br />
159= 1 4<br />
357= 3 2<br />
klingt nach</p>
<pre><code class="language-cpp">bool testeReihe(int farbe,int start,int richtung){
   return feld[start]==farbe &amp;&amp; feld[start+richtung]==farbe &amp;&amp; feld[start+2*richtung]==farbe;
}
bool testeSPielfeld(int farbe){
   if(testeReihe(farbe,4,1)) return true;
...
   if(testeReihe(farbe,3,2)) return true;
   return false;
}
</code></pre>
<p>man kann auch die 8 reihendefinitionen in ein array tun und durch das array laufen.</p>
<pre><code class="language-cpp">bool testeReihe(int farbe,int start,int richtung){
   return feld[start]==farbe &amp;&amp; feld[start+richtung]==farbe &amp;&amp; feld[start+2*richtung]==farbe;
}
bool testeSPielfeld(int farbe){
   int start[8]={1,4,7,1,2,3,1,3};
   int richtung[8]={1,1,1,3,3,3,4,2};
   for(int i=0;i&lt;8;++i)
      if(testeReihe(farbe,start[i],richtung[i]) return true;
   return false;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1119046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119046</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 17 Aug 2006 10:19:52 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Thu, 17 Aug 2006 10:38:23 GMT]]></title><description><![CDATA[<p>Gute Idee Volkard. Hab aber keine Zeit gehabt das in meine Version einzubauen...</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;iomanip&gt;

using namespace std;

struct feld
{
   feld(){isEmpty=true;}
   char ch;//Zeichen
   bool isEmpty;
};

class tic_tac_toe
{
private:
    feld Spielfeld[3][3];
public:
    void zug(char ch);
    void anzeigen();
    bool gewonnen(char ch);
    tic_tac_toe();
    bool unentschieden();
};

bool tic_tac_toe::unentschieden()
{
   for(int i=0;i&lt;3;i++)
   {
      for(int j=0;j&lt;3;j++)
      {
         if(Spielfeld[i][j].isEmpty) return false;
      }
   }
   return true;
}

tic_tac_toe::tic_tac_toe()
{
    Spielfeld[0][0].ch='.';
    Spielfeld[0][1].ch='.';
    Spielfeld[0][2].ch='.';
    Spielfeld[1][0].ch='.';
    Spielfeld[1][1].ch='.';
    Spielfeld[1][2].ch='.';
    Spielfeld[2][0].ch='.';
    Spielfeld[2][1].ch='.';
    Spielfeld[2][2].ch='.';
}

void tic_tac_toe::zug(char ch)
{
    int reihe=0;
    int spalte=0;
    do
    {
       cout&lt;&lt;&quot;Spalte: &quot;;
       cin&gt;&gt;spalte;
       cout&lt;&lt;&quot;Reihe: &quot;;
       cin&gt;&gt;reihe;
    }while(reihe&lt;1 || reihe&gt;3 || spalte&lt;1 || spalte&gt;3 || !Spielfeld[spalte-1][reihe-1].isEmpty);
    Spielfeld[spalte-1][reihe-1].ch=ch;
    Spielfeld[spalte-1][reihe-1].isEmpty=false;
}

void tic_tac_toe::anzeigen()
{
    int i;
    int y;
    for(i=0;i&lt;3;i++)
    {
        for(y=0;y&lt;3;y++)
        {
            cout&lt;&lt;setw(2)&lt;&lt;Spielfeld[y][i].ch;
        }
        cout&lt;&lt;&quot;\n\n&quot;;
    }
}

bool tic_tac_toe::gewonnen(char ch)
{
    if(Spielfeld[0][0].ch==ch &amp;&amp; Spielfeld[0][1].ch==ch &amp;&amp; Spielfeld[0][2].ch==ch)
    {
        return true;
    }
    if(Spielfeld[1][0].ch==ch &amp;&amp; Spielfeld[1][1].ch==ch &amp;&amp; Spielfeld[1][2].ch==ch)
    {
        return true;        
    }
    if(Spielfeld[2][0].ch==ch &amp;&amp; Spielfeld[2][1].ch==ch &amp;&amp; Spielfeld[2][2].ch==ch)
    {
        return true;        
    }
    if(Spielfeld[0][1].ch==ch &amp;&amp; Spielfeld[1][1].ch==ch &amp;&amp; Spielfeld[2][1].ch==ch)
    {
        return true;       
    }
    if(Spielfeld[0][0].ch==ch &amp;&amp; Spielfeld[1][0].ch==ch &amp;&amp; Spielfeld[2][0].ch==ch)
    {
        return true;        
    }
    if(Spielfeld[0][2].ch==ch &amp;&amp; Spielfeld[1][2].ch==ch &amp;&amp; Spielfeld[2][2].ch==ch)
    {
       return true;       
    }
    if(Spielfeld[0][0].ch==ch &amp;&amp; Spielfeld[1][1].ch==ch &amp;&amp; Spielfeld[2][2].ch==ch)
    {
       return true;        
    }
    if(Spielfeld[0][2].ch==ch &amp;&amp; Spielfeld[1][1].ch==ch &amp;&amp; Spielfeld[2][0].ch==ch)
    {
       return true;        
    }
    return false;
}

int main()
{
    tic_tac_toe tic;
    while(true)
    {
        tic.anzeigen();
        tic.zug('x');
        if(tic.gewonnen('x'))
        {
            cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
            void anzeigen();
            break;
        }
        if(tic.unentschieden())
        {
            cout&lt;&lt;&quot;Unentschieden!&quot;&lt;&lt;endl;
            void anzeigen();
            break;
        }

        tic.anzeigen();
        tic.zug('o');
        if(tic.gewonnen('o'))
        {
            cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
            void anzeigen();
            break;
        }
        if(tic.unentschieden())
        {
            cout&lt;&lt;&quot;Unentschieden!&quot;&lt;&lt;endl;
            void anzeigen();
            break;
        }

    }
    cin.ignore();
    getchar();
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1119055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119055</guid><dc:creator><![CDATA[Karldin]]></dc:creator><pubDate>Thu, 17 Aug 2006 10:38:23 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Thu, 17 Aug 2006 11:15:55 GMT]]></title><description><![CDATA[<p>ein paar gedanken dazu, die meisten sicherlich schlecht. es geht nur ums ausloten.</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;iomanip&gt;

using namespace std;

struct feld
{
   feld(){isEmpty=true;}
   char ch;//Zeichen
   bool isEmpty;
};
//ch überladen und dreiwertig machen
/*struct feld
{
   feld(){ch='.';)
   char ch;
};*/

class tic_tac_toe
{
private:
    feld Spielfeld[3][3];//andere anordnung, wie bereits gesagt
//    int anzahl;
public:
    void zug(char ch);
    void anzeigen();
    bool gewonnen(char ch);
    tic_tac_toe();
    bool unentschieden();
};

bool tic_tac_toe::unentschieden()
{
   //return anzahl==9
   for(int i=0;i&lt;3;i++)
   {
      for(int j=0;j&lt;3;j++)
      {
         if(Spielfeld[i][j].isEmpty) return false;
      }
   }
   return true;
}

tic_tac_toe::tic_tac_toe()
{
//passiert schon im ctor von feld
    Spielfeld[0][0].ch='.';
    Spielfeld[0][1].ch='.';
    Spielfeld[0][2].ch='.';
    Spielfeld[1][0].ch='.';
    Spielfeld[1][1].ch='.';
    Spielfeld[1][2].ch='.';
    Spielfeld[2][0].ch='.';
    Spielfeld[2][1].ch='.';
    Spielfeld[2][2].ch='.';
}

//bool range(int min,int x,int max){return min&lt;=x &amp;&amp; x&lt;=max)

void tic_tac_toe::zug(char ch)
{
    int reihe=0;
    int spalte=0;
    do
    {
       cout&lt;&lt;&quot;Spalte: &quot;;
       cin&gt;&gt;spalte;
       cout&lt;&lt;&quot;Reihe: &quot;;
       cin&gt;&gt;reihe;
    }while(reihe&lt;1 || reihe&gt;3 || spalte&lt;1 || spalte&gt;3 || !Spielfeld[spalte-1][reihe-1].isEmpty);
//while(range(1,reihe,3) || range(1,spalte,3) || Spielfeld[spalte-1][reihe-1]!='.');
    Spielfeld[spalte-1][reihe-1].ch=ch;
//weg    Spielfeld[spalte-1][reihe-1].isEmpty=false;
//++anzahl
}

void tic_tac_toe::anzeigen()
{
//    int i;
//    int y;
    for(/*int */i=0;i&lt;3;i++)//besser x?
    {
        for(/*int */y=0;y&lt;3;y++)
        {
            cout&lt;&lt;setw(2)&lt;&lt;Spielfeld[y][i].ch;
        }
        cout&lt;&lt;&quot;\n\n&quot;;
    }
}

bool tic_tac_toe::gewonnen(char ch)
{//einfacher machen, das return ist viel guter als exit
    if(Spielfeld[0][0].ch==ch &amp;&amp; Spielfeld[0][1].ch==ch &amp;&amp; Spielfeld[0][2].ch==ch)
    {
        return true;
    }
    if(Spielfeld[1][0].ch==ch &amp;&amp; Spielfeld[1][1].ch==ch &amp;&amp; Spielfeld[1][2].ch==ch)
    {
        return true;        
    }
    if(Spielfeld[2][0].ch==ch &amp;&amp; Spielfeld[2][1].ch==ch &amp;&amp; Spielfeld[2][2].ch==ch)
    {
        return true;        
    }
    if(Spielfeld[0][1].ch==ch &amp;&amp; Spielfeld[1][1].ch==ch &amp;&amp; Spielfeld[2][1].ch==ch)
    {
        return true;       
    }
    if(Spielfeld[0][0].ch==ch &amp;&amp; Spielfeld[1][0].ch==ch &amp;&amp; Spielfeld[2][0].ch==ch)
    {
        return true;        
    }
    if(Spielfeld[0][2].ch==ch &amp;&amp; Spielfeld[1][2].ch==ch &amp;&amp; Spielfeld[2][2].ch==ch)
    {
       return true;       
    }
    if(Spielfeld[0][0].ch==ch &amp;&amp; Spielfeld[1][1].ch==ch &amp;&amp; Spielfeld[2][2].ch==ch)
    {
       return true;        
    }
    if(Spielfeld[0][2].ch==ch &amp;&amp; Spielfeld[1][1].ch==ch &amp;&amp; Spielfeld[2][0].ch==ch)
    {
       return true;        
    }
    return false;
}

int main()
{
    tic_tac_toe tic;
    while(true)//for(;;)
    {
        tic.anzeigen();
        tic.zug('x');
        if(tic.gewonnen('x'))
        {
            cout&lt;&lt;&quot;Spieler 1 hat gewonnen!&quot;&lt;&lt;endl;
//wirkungslos             void anzeigen();
            break;
//return statt break, also diese schleife aus der main() raus
        }
        if(tic.unentschieden())
        {
            cout&lt;&lt;&quot;Unentschieden!&quot;&lt;&lt;endl;
            void anzeigen();
            break;
        }

        tic.anzeigen();
        tic.zug('o');
        if(tic.gewonnen('o'))
        {
            cout&lt;&lt;&quot;Spieler 2 hat gewonnen!&quot;&lt;&lt;endl;
            void anzeigen();
            break;
        }
        if(tic.unentschieden())
        {
            cout&lt;&lt;&quot;Unentschieden!&quot;&lt;&lt;endl;
            void anzeigen();
            break;
        }

    }
    cin.ignore();
    getchar();
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1119081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119081</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 17 Aug 2006 11:15:55 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Thu, 17 Aug 2006 12:02:07 GMT]]></title><description><![CDATA[<p>Warum for(;;) statt while(true) ???</p>
<p>Sonst ja ok man konnte es noch verbessern. Wir könnten für ch auch ein enum machen zb: enum eCh{X,O,no};<br />
aber ist dann geschmakssache</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119113</guid><dc:creator><![CDATA[Karldin]]></dc:creator><pubDate>Thu, 17 Aug 2006 12:02:07 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Thu, 17 Aug 2006 12:03:01 GMT]]></title><description><![CDATA[<p>Dumme Smileys meinte for( ; ; )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119115</guid><dc:creator><![CDATA[Karldin]]></dc:creator><pubDate>Thu, 17 Aug 2006 12:03:01 GMT</pubDate></item><item><title><![CDATA[Reply to Bug in der Tic Tac Toe implementierung on Thu, 17 Aug 2006 12:16:21 GMT]]></title><description><![CDATA[<p>Karldin schrieb:</p>
<blockquote>
<p>Warum for(;;) statt while(true) ???</p>
</blockquote>
<p>for(;;) <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="🙂"
    /> nur um zu zeigen, daß man nicht pascal schreibt.</p>
<blockquote>
<p>Wir könnten für ch auch ein enum machen zb: enum eCh{X,O,no};</p>
</blockquote>
<p>oder char const KREUZ='X'; char const KREIS='O'; char const LEER=' ';<br />
sowas war ganz fein in nem 4-gewinnt-spiel, das ich mal schrieb.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119130</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 17 Aug 2006 12:16:21 GMT</pubDate></item></channel></rss>