<?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[TicTacToe, Problem mit Schleife]]></title><description><![CDATA[<p>Hi,</p>
<p>ich bin gerade dabei ein TicTacToe für 2 Personen zu programmieren. Ich bin noch neu in Cpp, seit deshalb bitte nicht so hart mit meinen Programmierkünsten.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

/*Funktionen*/
void setup();
void show();
bool check();
bool zug();

/*Variablen*/
string spieler[3];
int player = 2;
bool game = true;
bool zug_ok;
int eingabe;
string field[10];

int main(){
    setup();
    while(game==true){
        if(player==2){
            player--;
        }else{
            player++;
        }
        show();
        while(zug_ok==false){
            zug_ok=zug();
        }
        zug_ok=false;
        game = check();
    }
    return 0;
}

void setup(){
    field[0] = &quot;0&quot;;
    field[1] = &quot;1&quot;;
    field[2] = &quot;2&quot;;
    field[3] = &quot;3&quot;;
    field[4] = &quot;4&quot;;
    field[5] = &quot;5&quot;;
    field[6] = &quot;6&quot;;
    field[7] = &quot;7&quot;;
    field[8] = &quot;8&quot;;
    field[9] = &quot;9&quot;;
    spieler[0] = &quot;0&quot;;
    cout&lt;&lt;&quot;Spieler 1 geben Sie Ihren Namen ein: &quot;;
    cin&gt;&gt;spieler[1];
    cin.clear();
    cout&lt;&lt;&quot;Spieler 2 geben Sie Ihren Namen ein: &quot;;
    cin&gt;&gt;spieler[2];
    cin.clear();
    }

void show(){
    cout&lt;&lt;&quot;\n&quot;&lt;&lt;field[1]&lt;&lt;&quot;  |  &quot;&lt;&lt;field[2]&lt;&lt;&quot;  |  &quot;&lt;&lt;field[3]&lt;&lt;endl;
    cout&lt;&lt;&quot;-------------\n&quot;;
    cout&lt;&lt;field[4]&lt;&lt;&quot;  |  &quot;&lt;&lt;field[5]&lt;&lt;&quot;  |  &quot;&lt;&lt;field[6]&lt;&lt;endl;
    cout&lt;&lt;&quot;-------------\n&quot;;
    cout&lt;&lt;field[7]&lt;&lt;&quot;  |  &quot;&lt;&lt;field[8]&lt;&lt;&quot;  |  &quot;&lt;&lt;field[9]&lt;&lt;endl;
}

bool zug(){
    cout&lt;&lt;spieler[player]&lt;&lt;&quot; geben Sie ihre Zahl ein: &quot;;
    cin&gt;&gt;eingabe;
    if(field[eingabe]==&quot;X&quot;||field[eingabe]==&quot;0&quot;){
        cout&lt;&lt;&quot;Versuchen Sie es nochmal\n&quot;;
        return false;
    }

    return true;
}

bool check(){
    if((field[1]==&quot;0&quot;&amp;&amp;field[2]==&quot;0&quot;&amp;&amp;field[3]==&quot;0&quot;)||(field[4]==&quot;0&quot;&amp;&amp;field[5]==&quot;0&quot;&amp;&amp;field[6]==&quot;0&quot;)||(field[7]==&quot;0&quot;&amp;&amp;field[8]==&quot;0&quot;&amp;&amp;field[9]==&quot;0&quot;)||(field[1]==&quot;0&quot;&amp;&amp;field[4]==&quot;0&quot;&amp;&amp;field[7]==&quot;0&quot;)||(field[2]==&quot;0&quot;&amp;&amp;field[5]==&quot;0&quot;&amp;&amp;field[8]==&quot;0&quot;)||(field[3]==&quot;0&quot;&amp;&amp;field[6]==&quot;0&quot;&amp;&amp;field[9]==&quot;0&quot;)||
    (field[1]==&quot;0&quot;&amp;&amp;field[5]==&quot;0&quot;&amp;&amp;field[9]==&quot;0&quot;)||(field[3]==&quot;0&quot;&amp;&amp;field[5]==&quot;0&quot;&amp;&amp;field[7]==&quot;0&quot;)){
        cout&lt;&lt;&quot;Spieler &quot;&lt;&lt;spieler[1]&lt;&lt;&quot; hat gewonnen!!\n&quot;;
        return false;
    }else if ((field[1]==&quot;X&quot;&amp;&amp;field[2]==&quot;X&quot;&amp;&amp;field[3]==&quot;X&quot;)||(field[4]==&quot;X&quot;&amp;&amp;field[5]==&quot;X&quot;&amp;&amp;field[6]==&quot;X&quot;)||(field[7]==&quot;X&quot;&amp;&amp;field[8]==&quot;X&quot;&amp;&amp;field[9]==&quot;X&quot;)||(field[1]==&quot;X&quot;&amp;&amp;field[4]==&quot;X&quot;&amp;&amp;field[7]==&quot;X&quot;)||(field[2]==&quot;X&quot;&amp;&amp;field[5]==&quot;X&quot;&amp;&amp;field[8]==&quot;X&quot;)||(field[3]==&quot;X&quot;&amp;&amp;field[6]==&quot;X&quot;&amp;&amp;field[9]==&quot;X&quot;)||
    (field[1]==&quot;X&quot;&amp;&amp;field[5]==&quot;X&quot;&amp;&amp;field[9]==&quot;X&quot;)||(field[3]==&quot;X&quot;&amp;&amp;field[5]==&quot;X&quot;&amp;&amp;field[7]==&quot;X&quot;)){
        cout&lt;&lt;&quot;Spieler &quot;&lt;&lt;spieler[2]&lt;&lt;&quot; hat gewonnen!!\n&quot;;
        return false;
    }
    return true;
}
</code></pre>
<p>Und zwar habe ich das Problem, dass wenn ich einen Buchstaben, statt eine Zahl eingebe, schreib er danach nur noch ununterbrichen &quot;Versuchen Sie es nochmal&quot; In die Konsole. Wie kann ich bei cin überprüfen, ob wirklich ein Int eingegeben wurde? Und wo liegt, das problem, dass er nur noch &quot;Versuchen sie es nochmal&quot; aufruft.</p>
<p>Philipp</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266738/tictactoe-problem-mit-schleife</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 00:47:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266738.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 13 May 2010 13:18:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TicTacToe, Problem mit Schleife on Thu, 13 May 2010 13:18:57 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich bin gerade dabei ein TicTacToe für 2 Personen zu programmieren. Ich bin noch neu in Cpp, seit deshalb bitte nicht so hart mit meinen Programmierkünsten.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

/*Funktionen*/
void setup();
void show();
bool check();
bool zug();

/*Variablen*/
string spieler[3];
int player = 2;
bool game = true;
bool zug_ok;
int eingabe;
string field[10];

int main(){
    setup();
    while(game==true){
        if(player==2){
            player--;
        }else{
            player++;
        }
        show();
        while(zug_ok==false){
            zug_ok=zug();
        }
        zug_ok=false;
        game = check();
    }
    return 0;
}

void setup(){
    field[0] = &quot;0&quot;;
    field[1] = &quot;1&quot;;
    field[2] = &quot;2&quot;;
    field[3] = &quot;3&quot;;
    field[4] = &quot;4&quot;;
    field[5] = &quot;5&quot;;
    field[6] = &quot;6&quot;;
    field[7] = &quot;7&quot;;
    field[8] = &quot;8&quot;;
    field[9] = &quot;9&quot;;
    spieler[0] = &quot;0&quot;;
    cout&lt;&lt;&quot;Spieler 1 geben Sie Ihren Namen ein: &quot;;
    cin&gt;&gt;spieler[1];
    cin.clear();
    cout&lt;&lt;&quot;Spieler 2 geben Sie Ihren Namen ein: &quot;;
    cin&gt;&gt;spieler[2];
    cin.clear();
    }

void show(){
    cout&lt;&lt;&quot;\n&quot;&lt;&lt;field[1]&lt;&lt;&quot;  |  &quot;&lt;&lt;field[2]&lt;&lt;&quot;  |  &quot;&lt;&lt;field[3]&lt;&lt;endl;
    cout&lt;&lt;&quot;-------------\n&quot;;
    cout&lt;&lt;field[4]&lt;&lt;&quot;  |  &quot;&lt;&lt;field[5]&lt;&lt;&quot;  |  &quot;&lt;&lt;field[6]&lt;&lt;endl;
    cout&lt;&lt;&quot;-------------\n&quot;;
    cout&lt;&lt;field[7]&lt;&lt;&quot;  |  &quot;&lt;&lt;field[8]&lt;&lt;&quot;  |  &quot;&lt;&lt;field[9]&lt;&lt;endl;
}

bool zug(){
    cout&lt;&lt;spieler[player]&lt;&lt;&quot; geben Sie ihre Zahl ein: &quot;;
    cin&gt;&gt;eingabe;
    if(field[eingabe]==&quot;X&quot;||field[eingabe]==&quot;0&quot;){
        cout&lt;&lt;&quot;Versuchen Sie es nochmal\n&quot;;
        return false;
    }

    return true;
}

bool check(){
    if((field[1]==&quot;0&quot;&amp;&amp;field[2]==&quot;0&quot;&amp;&amp;field[3]==&quot;0&quot;)||(field[4]==&quot;0&quot;&amp;&amp;field[5]==&quot;0&quot;&amp;&amp;field[6]==&quot;0&quot;)||(field[7]==&quot;0&quot;&amp;&amp;field[8]==&quot;0&quot;&amp;&amp;field[9]==&quot;0&quot;)||(field[1]==&quot;0&quot;&amp;&amp;field[4]==&quot;0&quot;&amp;&amp;field[7]==&quot;0&quot;)||(field[2]==&quot;0&quot;&amp;&amp;field[5]==&quot;0&quot;&amp;&amp;field[8]==&quot;0&quot;)||(field[3]==&quot;0&quot;&amp;&amp;field[6]==&quot;0&quot;&amp;&amp;field[9]==&quot;0&quot;)||
    (field[1]==&quot;0&quot;&amp;&amp;field[5]==&quot;0&quot;&amp;&amp;field[9]==&quot;0&quot;)||(field[3]==&quot;0&quot;&amp;&amp;field[5]==&quot;0&quot;&amp;&amp;field[7]==&quot;0&quot;)){
        cout&lt;&lt;&quot;Spieler &quot;&lt;&lt;spieler[1]&lt;&lt;&quot; hat gewonnen!!\n&quot;;
        return false;
    }else if ((field[1]==&quot;X&quot;&amp;&amp;field[2]==&quot;X&quot;&amp;&amp;field[3]==&quot;X&quot;)||(field[4]==&quot;X&quot;&amp;&amp;field[5]==&quot;X&quot;&amp;&amp;field[6]==&quot;X&quot;)||(field[7]==&quot;X&quot;&amp;&amp;field[8]==&quot;X&quot;&amp;&amp;field[9]==&quot;X&quot;)||(field[1]==&quot;X&quot;&amp;&amp;field[4]==&quot;X&quot;&amp;&amp;field[7]==&quot;X&quot;)||(field[2]==&quot;X&quot;&amp;&amp;field[5]==&quot;X&quot;&amp;&amp;field[8]==&quot;X&quot;)||(field[3]==&quot;X&quot;&amp;&amp;field[6]==&quot;X&quot;&amp;&amp;field[9]==&quot;X&quot;)||
    (field[1]==&quot;X&quot;&amp;&amp;field[5]==&quot;X&quot;&amp;&amp;field[9]==&quot;X&quot;)||(field[3]==&quot;X&quot;&amp;&amp;field[5]==&quot;X&quot;&amp;&amp;field[7]==&quot;X&quot;)){
        cout&lt;&lt;&quot;Spieler &quot;&lt;&lt;spieler[2]&lt;&lt;&quot; hat gewonnen!!\n&quot;;
        return false;
    }
    return true;
}
</code></pre>
<p>Und zwar habe ich das Problem, dass wenn ich einen Buchstaben, statt eine Zahl eingebe, schreib er danach nur noch ununterbrichen &quot;Versuchen Sie es nochmal&quot; In die Konsole. Wie kann ich bei cin überprüfen, ob wirklich ein Int eingegeben wurde? Und wo liegt, das problem, dass er nur noch &quot;Versuchen sie es nochmal&quot; aufruft.</p>
<p>Philipp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1896654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1896654</guid><dc:creator><![CDATA[lord-maricek]]></dc:creator><pubDate>Thu, 13 May 2010 13:18:57 GMT</pubDate></item><item><title><![CDATA[Reply to TicTacToe, Problem mit Schleife on Thu, 13 May 2010 13:54:00 GMT]]></title><description><![CDATA[<p>lord-maricek schrieb:</p>
<blockquote>
<p>Und zwar habe ich das Problem, dass wenn ich einen Buchstaben, statt eine Zahl eingebe, schreib er danach nur noch ununterbrichen &quot;Versuchen Sie es nochmal&quot; In die Konsole. Wie kann ich bei cin überprüfen, ob wirklich ein Int eingegeben wurde? Und wo liegt, das problem, dass er nur noch &quot;Versuchen sie es nochmal&quot; aufruft.</p>
</blockquote>
<p>hi,</p>
<p>also wenn du einen alphanumerischen Wert eingibst, statt einem numerischen (numerisch wird erwartet),<br />
dann wird das Eingabeobjekt (cin) auf einen Fehlerzustand gesetzt,</p>
<pre><code class="language-cpp">cin.fail() // true
</code></pre>
<p>und der eingegeben alphanumerische Wert bleibt im Puffer stecken.</p>
<p>Um dieses Eingabeobjekt wieder benutzen zu können, musst du den Zustand dieses Objekts zurücksetzen,</p>
<pre><code class="language-cpp">cin.clear();
</code></pre>
<p>und dann solltest du die noch im Puffer stehenden Zeichen verwerfen:</p>
<pre><code class="language-cpp">cin.sync()
</code></pre>
<p>Alles in allem also:</p>
<pre><code class="language-cpp">cin.clear();
cin.sync();
// ... und die nachfolgende Eingabe funktioniert wieder.
</code></pre>
<p>hoffe das hilft <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1896680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1896680</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 13 May 2010 13:54:00 GMT</pubDate></item></channel></rss>