<?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[C++ Vier Gewinnt ... die alte Laier]]></title><description><![CDATA[<p>Mahlzeit zusammen,</p>
<p>ich stehe kurz vor einem Nervenzusammenbruch ....</p>
<p>Und zwar geht es obwohl das Netz ja eigentlich schon voll ist mit solchen Codes um einen Code für Vier Gewinnt. Wir haben eine Struktur vom Prof vorgeschrieben bekommen und sollen diesen nur mit Implementierungen ergänzen. Allerdings komme ich mit dieser Struktur überhaupt nicht zurecht.<br />
Zudem muss ich auch gestehen, dass Informatik noch nicht mein Steckenpferd ist.</p>
<p>Ich habe jetzt etliche Stunden an dem Code verbracht aber letztendlich noch nichts auf die Beine gestellt bekommen. Das Projekt muss morgen abgeben werden und es wäre stark wenn ich hier ein paar Denkanstöße bekommen könnte. Durch die Projektarbeit können wir Bonuspunkte für die anstehende Prüfung sammeln, welche ich ungern liegen lassen würde, da die Prüfung ohnehin schon schwer genug sein wird für mich.</p>
<p>Also dies ist der vollständige Quelltext:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;ctime&gt;
#include &lt;windows.h&gt;

using namespace std;

/*--------------------------------------------------------------------------------------*/
/* Funktionsdeklarationen                                                               */
/*--------------------------------------------------------------------------------------*/

void ZeichneSpielfeld(unsigned char const spielfeld[6][7]);
int SpielerEingabe(unsigned char const spielfeld[6][7], int spieler);
int ZugAusfuehren(unsigned char spielfeld[6][7], int spieler, int spalte);
bool PruefeGewinn(unsigned char const spielfeld[6][7], int spieler, int spalte, int zeile);
bool PruefeUnentschieden(unsigned char const spielfeld[6][7]);
int ComputerEingabe(unsigned char spielfeld[6][7], int spieler);
void gotoxy(short x, short y);
int ErstesFreiesFeld(int spalte, unsigned char const spielfeld[6][7]);

/*--------------------------------------------------------------------------------------*/
/* Hauptprogramm                                                                        */
/*--------------------------------------------------------------------------------------*/

// Achtung: Das Hauptprogramm darf nur zu Testzwecken ver�ndert werden. Ihre Abgabe wird
// mit dem Original-Hauptprogramm getestet und sollte damit funktionieren.
int main()
{
    // Computerspieler aktivieren bzw. deaktivieren: true/false
    bool computer = true;

    // Startspieler festlegen: 1 oder 2 (Computer ist immer 2)
    int spieler = 1;

    // Zufallszahlengenerator initialisieren
    srand((unsigned int)time(NULL));

    // leeres Spielfeld erzeugen
    unsigned char spielfeld[6][7] = {};

    // Spielfeld zeichnen
    ZeichneSpielfeld(spielfeld);

    int spalte, zeile;
    for (;;)
    {
        // Computer an der Reihe? 
        if (computer &amp;&amp; spieler == 2)
        {
            // Wahl der Spalte durch Computerspieler
            spalte = ComputerEingabe(spielfeld, spieler);
            gotoxy(15,0);
            cout &lt;&lt; &quot;Computer: &quot; &lt;&lt; spalte;
        }
        else
        {
            // Wahl der Spalte durch menschlichen Spieler
            spalte = SpielerEingabe(spielfeld, spieler);
        }

        // Zug ausf�hren
        zeile = ZugAusfuehren(spielfeld, spieler, spalte);

        // Gewonnen?
        if (PruefeGewinn(spielfeld, spieler, spalte, zeile))
        {
            gotoxy(14,0);
            cout &lt;&lt; &quot;Spieler &quot; &lt;&lt; spieler &lt;&lt; &quot; hat das Spiel gewonnen!&quot; &lt;&lt; endl;
            break;
        }

        // Unentschieden?
        if (PruefeUnentschieden(spielfeld))
        {
            gotoxy(14,0);
            cout &lt;&lt; &quot;Das Spiel ist unentschieden ausgegangen!&quot; &lt;&lt; endl;
            break;
        }

        // n�chster Spieler
        spieler = spieler % 2 + 1;
    }

    system(&quot;pause&quot;);
    return 0;
}

// Cursor in Zeile x und Spalte y positionieren
void gotoxy(short x, short y)
{
    COORD coord = {y, x};
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
} 

/*--------------------------------------------------------------------------------------*/
/* BITTE NUR UNTERHALB DIESER LINIE IHRE IMPLEMENTIERUNG VORNEHMEN.                     */
/*--------------------------------------------------------------------------------------*/

void ZeichneSpielfeld(unsigned char const spielfeld[6][7])
{
	std::cout &lt;&lt;std::endl;
  cout &lt;&lt;   &quot;  1   2   3   4   5   6   7\n\n&quot;

  for (int i=0;i&lt;6;++i)
  {
    for (int j=0;j&lt;8;++j)
    {
      cout &lt;&lt;  &quot;| &quot;;
      switch (spielfeld[i][j])
      {
        case 1:
             cout &lt;&lt; &quot;x&quot;;
             break;
        case 2:
             cout &lt;&lt; &quot;o&quot;;
             break;
        default:
             cout &lt;&lt; &quot; &quot;;
             break;
      }//switch
      cout&lt;&lt;&quot; &quot; ;
    }

    cout &lt;&lt;&quot;\n|---|---|---|---|---|---|---|\n&quot;;
  }
  cout &lt;&lt; &quot;\n\n\n&quot;;

}

int ErstesFreiesFeld(const int spalte, unsigned char const  spielfeld[6][7])
{
  if ((spalte&gt;=7) || (spalte&lt;0)) return -1;
  int i;
  for (i=6;i&gt;=0;--i)
  {
    if (spielfeld[i][spalte]==0) return i;
  }
  return -1;
}

int SpielerEingabe(unsigned char const spielfeld[6][7], int spieler,  int frei)
{
    bool validInput = false;
	int spalte = 0;

	while (true)
	{
	cout &lt;&lt; &quot;In welcher Spalte soll Ihr Stein gesetzt werden?  &quot;;
    cin &gt;&gt; spalte; 
	spalte = spalte -1;
	frei = ErstesFreiesFeld(spalte, spielfeld);

	validInput = ((spalte&gt;=0) &amp;&amp; (spalte&lt;6) &amp;&amp; (frei!=-1));//ACHTUNG HIER UEBERPRUEFEN -1
	if (!validInput)
	{
		cout &lt;&lt; &quot;Diese Spalte ist bereits voll!\n&quot;;
	}
	else
	{
		break;
	}
	}
    return spalte;
	return frei;
}

int ZugAusfuehren(unsigned char spielfeld[6][7], int spieler, int spalte)
{

	int frei = ErstesFreiesFeld(spalte, spielfeld);

	spielfeld[frei][spalte] = spieler;

    return spieler;
}

bool PruefeGewinn(unsigned char const spielfeld[6][7], int spieler, int spalte, int zeile)
{
    bool gewinn = true;

    // ---------------------------------------------------------------------
    // Bitte hier Ihre Implementierung der Funktion realisieren
    // ---------------------------------------------------------------------

    return gewinn;
}

bool PruefeUnentschieden(unsigned char const spielfeld[6][7])
{
    bool unentschieden = true;

    // ---------------------------------------------------------------------
    // Bitte hier Ihre Implementierung der Funktion realisieren
    // ---------------------------------------------------------------------

    return unentschieden;
}

int ComputerEingabe(unsigned char spielfeld[6][7], int spieler)
{
    int spalte = 0;

    // ---------------------------------------------------------------------
    // Bitte hier Ihre Implementierung der Funktion realisieren
    // ---------------------------------------------------------------------

    return spalte;
}
</code></pre>
<p>Ja wie ihr hier wahrscheinlich seht fehlen mir echt noch elementare Dinge der Programmierung.<br />
Es scheitert schon daran einen Stein zu setzten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Habe schon versucht mit Internetquellen zu arbeiten aber naja, dass ist leider dass beste was ich herausholen konnte.</p>
<p>Ich wäre dankbar für jegliche Unterstützung<br />
Lieben Gruß <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/topic/336163/c-vier-gewinnt-die-alte-laier</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 17:56:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/336163.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 07 Jan 2016 13:04:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ Vier Gewinnt ... die alte Laier on Thu, 07 Jan 2016 13:04:26 GMT]]></title><description><![CDATA[<p>Mahlzeit zusammen,</p>
<p>ich stehe kurz vor einem Nervenzusammenbruch ....</p>
<p>Und zwar geht es obwohl das Netz ja eigentlich schon voll ist mit solchen Codes um einen Code für Vier Gewinnt. Wir haben eine Struktur vom Prof vorgeschrieben bekommen und sollen diesen nur mit Implementierungen ergänzen. Allerdings komme ich mit dieser Struktur überhaupt nicht zurecht.<br />
Zudem muss ich auch gestehen, dass Informatik noch nicht mein Steckenpferd ist.</p>
<p>Ich habe jetzt etliche Stunden an dem Code verbracht aber letztendlich noch nichts auf die Beine gestellt bekommen. Das Projekt muss morgen abgeben werden und es wäre stark wenn ich hier ein paar Denkanstöße bekommen könnte. Durch die Projektarbeit können wir Bonuspunkte für die anstehende Prüfung sammeln, welche ich ungern liegen lassen würde, da die Prüfung ohnehin schon schwer genug sein wird für mich.</p>
<p>Also dies ist der vollständige Quelltext:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;ctime&gt;
#include &lt;windows.h&gt;

using namespace std;

/*--------------------------------------------------------------------------------------*/
/* Funktionsdeklarationen                                                               */
/*--------------------------------------------------------------------------------------*/

void ZeichneSpielfeld(unsigned char const spielfeld[6][7]);
int SpielerEingabe(unsigned char const spielfeld[6][7], int spieler);
int ZugAusfuehren(unsigned char spielfeld[6][7], int spieler, int spalte);
bool PruefeGewinn(unsigned char const spielfeld[6][7], int spieler, int spalte, int zeile);
bool PruefeUnentschieden(unsigned char const spielfeld[6][7]);
int ComputerEingabe(unsigned char spielfeld[6][7], int spieler);
void gotoxy(short x, short y);
int ErstesFreiesFeld(int spalte, unsigned char const spielfeld[6][7]);

/*--------------------------------------------------------------------------------------*/
/* Hauptprogramm                                                                        */
/*--------------------------------------------------------------------------------------*/

// Achtung: Das Hauptprogramm darf nur zu Testzwecken ver�ndert werden. Ihre Abgabe wird
// mit dem Original-Hauptprogramm getestet und sollte damit funktionieren.
int main()
{
    // Computerspieler aktivieren bzw. deaktivieren: true/false
    bool computer = true;

    // Startspieler festlegen: 1 oder 2 (Computer ist immer 2)
    int spieler = 1;

    // Zufallszahlengenerator initialisieren
    srand((unsigned int)time(NULL));

    // leeres Spielfeld erzeugen
    unsigned char spielfeld[6][7] = {};

    // Spielfeld zeichnen
    ZeichneSpielfeld(spielfeld);

    int spalte, zeile;
    for (;;)
    {
        // Computer an der Reihe? 
        if (computer &amp;&amp; spieler == 2)
        {
            // Wahl der Spalte durch Computerspieler
            spalte = ComputerEingabe(spielfeld, spieler);
            gotoxy(15,0);
            cout &lt;&lt; &quot;Computer: &quot; &lt;&lt; spalte;
        }
        else
        {
            // Wahl der Spalte durch menschlichen Spieler
            spalte = SpielerEingabe(spielfeld, spieler);
        }

        // Zug ausf�hren
        zeile = ZugAusfuehren(spielfeld, spieler, spalte);

        // Gewonnen?
        if (PruefeGewinn(spielfeld, spieler, spalte, zeile))
        {
            gotoxy(14,0);
            cout &lt;&lt; &quot;Spieler &quot; &lt;&lt; spieler &lt;&lt; &quot; hat das Spiel gewonnen!&quot; &lt;&lt; endl;
            break;
        }

        // Unentschieden?
        if (PruefeUnentschieden(spielfeld))
        {
            gotoxy(14,0);
            cout &lt;&lt; &quot;Das Spiel ist unentschieden ausgegangen!&quot; &lt;&lt; endl;
            break;
        }

        // n�chster Spieler
        spieler = spieler % 2 + 1;
    }

    system(&quot;pause&quot;);
    return 0;
}

// Cursor in Zeile x und Spalte y positionieren
void gotoxy(short x, short y)
{
    COORD coord = {y, x};
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
} 

/*--------------------------------------------------------------------------------------*/
/* BITTE NUR UNTERHALB DIESER LINIE IHRE IMPLEMENTIERUNG VORNEHMEN.                     */
/*--------------------------------------------------------------------------------------*/

void ZeichneSpielfeld(unsigned char const spielfeld[6][7])
{
	std::cout &lt;&lt;std::endl;
  cout &lt;&lt;   &quot;  1   2   3   4   5   6   7\n\n&quot;

  for (int i=0;i&lt;6;++i)
  {
    for (int j=0;j&lt;8;++j)
    {
      cout &lt;&lt;  &quot;| &quot;;
      switch (spielfeld[i][j])
      {
        case 1:
             cout &lt;&lt; &quot;x&quot;;
             break;
        case 2:
             cout &lt;&lt; &quot;o&quot;;
             break;
        default:
             cout &lt;&lt; &quot; &quot;;
             break;
      }//switch
      cout&lt;&lt;&quot; &quot; ;
    }

    cout &lt;&lt;&quot;\n|---|---|---|---|---|---|---|\n&quot;;
  }
  cout &lt;&lt; &quot;\n\n\n&quot;;

}

int ErstesFreiesFeld(const int spalte, unsigned char const  spielfeld[6][7])
{
  if ((spalte&gt;=7) || (spalte&lt;0)) return -1;
  int i;
  for (i=6;i&gt;=0;--i)
  {
    if (spielfeld[i][spalte]==0) return i;
  }
  return -1;
}

int SpielerEingabe(unsigned char const spielfeld[6][7], int spieler,  int frei)
{
    bool validInput = false;
	int spalte = 0;

	while (true)
	{
	cout &lt;&lt; &quot;In welcher Spalte soll Ihr Stein gesetzt werden?  &quot;;
    cin &gt;&gt; spalte; 
	spalte = spalte -1;
	frei = ErstesFreiesFeld(spalte, spielfeld);

	validInput = ((spalte&gt;=0) &amp;&amp; (spalte&lt;6) &amp;&amp; (frei!=-1));//ACHTUNG HIER UEBERPRUEFEN -1
	if (!validInput)
	{
		cout &lt;&lt; &quot;Diese Spalte ist bereits voll!\n&quot;;
	}
	else
	{
		break;
	}
	}
    return spalte;
	return frei;
}

int ZugAusfuehren(unsigned char spielfeld[6][7], int spieler, int spalte)
{

	int frei = ErstesFreiesFeld(spalte, spielfeld);

	spielfeld[frei][spalte] = spieler;

    return spieler;
}

bool PruefeGewinn(unsigned char const spielfeld[6][7], int spieler, int spalte, int zeile)
{
    bool gewinn = true;

    // ---------------------------------------------------------------------
    // Bitte hier Ihre Implementierung der Funktion realisieren
    // ---------------------------------------------------------------------

    return gewinn;
}

bool PruefeUnentschieden(unsigned char const spielfeld[6][7])
{
    bool unentschieden = true;

    // ---------------------------------------------------------------------
    // Bitte hier Ihre Implementierung der Funktion realisieren
    // ---------------------------------------------------------------------

    return unentschieden;
}

int ComputerEingabe(unsigned char spielfeld[6][7], int spieler)
{
    int spalte = 0;

    // ---------------------------------------------------------------------
    // Bitte hier Ihre Implementierung der Funktion realisieren
    // ---------------------------------------------------------------------

    return spalte;
}
</code></pre>
<p>Ja wie ihr hier wahrscheinlich seht fehlen mir echt noch elementare Dinge der Programmierung.<br />
Es scheitert schon daran einen Stein zu setzten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Habe schon versucht mit Internetquellen zu arbeiten aber naja, dass ist leider dass beste was ich herausholen konnte.</p>
<p>Ich wäre dankbar für jegliche Unterstützung<br />
Lieben Gruß <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/2482019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2482019</guid><dc:creator><![CDATA[Stars_nStripes]]></dc:creator><pubDate>Thu, 07 Jan 2016 13:04:26 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Vier Gewinnt ... die alte Laier on Thu, 07 Jan 2016 14:04:25 GMT]]></title><description><![CDATA[<p>Wo ist denn das Problem? Was funktioniert nicht?</p>
<p>So wie ich das sehe musst du nur die letzten 3 Methoden implementieren. Überlege dir als was eintreffen muss, damit das Spiel gewonnen oder unentschieden ist.</p>
<p>Die Computereingabe wird wohl nur eine Markierung in der nächsten freien Stelle vornehmen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2482026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2482026</guid><dc:creator><![CDATA[Wirago]]></dc:creator><pubDate>Thu, 07 Jan 2016 14:04:25 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Vier Gewinnt ... die alte Laier on Thu, 07 Jan 2016 14:36:46 GMT]]></title><description><![CDATA[<p>Schon das setzten der &quot;Steine&quot; funktioniert nicht, hab mich ziemlich verrannt und sehe den Wald vor lauter Bäume nicht mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2482031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2482031</guid><dc:creator><![CDATA[Stars_nStripes]]></dc:creator><pubDate>Thu, 07 Jan 2016 14:36:46 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Vier Gewinnt ... die alte Laier on Thu, 07 Jan 2016 14:54:25 GMT]]></title><description><![CDATA[<p>-hier steht nichts-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2482033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2482033</guid><dc:creator><![CDATA[Techel]]></dc:creator><pubDate>Thu, 07 Jan 2016 14:54:25 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Vier Gewinnt ... die alte Laier on Thu, 07 Jan 2016 14:56:08 GMT]]></title><description><![CDATA[<p>Warum kann ich das Array denn nicht als Kopie übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2482034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2482034</guid><dc:creator><![CDATA[Stars_nStripes]]></dc:creator><pubDate>Thu, 07 Jan 2016 14:56:08 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Vier Gewinnt ... die alte Laier on Thu, 07 Jan 2016 15:05:10 GMT]]></title><description><![CDATA[<p>Das erste was mir hier gleich mal auffällt ist Zeile 166+167<br />
Eine Methode hat keine 2 return-Werte. Nur einen!</p>
<p>Um weitere Fehler zu finden, bietet sich der Debugger an. Nachdem du offenbar noch nicht so viel Erfahrung hast, <a href="http://www.kleincodiert.at/articles/general/debugger/debugger.php" rel="nofollow">HIER</a> gibt es eine kleine Anleitung.</p>
<p>Am besten eine Methode nach der anderen angehen und durchtesten.<br />
Wenn das Zeichnen des Spielfeldes klappt, dann versuchen per Abfrage eigene Steine zu setzen. Wenn das nicht klappt konkrete Fragen stellen, so kann die besser geholfen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2482035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2482035</guid><dc:creator><![CDATA[Wirago]]></dc:creator><pubDate>Thu, 07 Jan 2016 15:05:10 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Vier Gewinnt ... die alte Laier on Thu, 07 Jan 2016 15:12:07 GMT]]></title><description><![CDATA[<p>Oh ja das &quot;return frei;&quot; sollte da nicht mehr stehen</p>
<p>Okay ich werde mal gleich das Projekt von vorne beginnen. Mal schauen wie weit ich es noch schaffe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2482036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2482036</guid><dc:creator><![CDATA[Stars_nStripes]]></dc:creator><pubDate>Thu, 07 Jan 2016 15:12:07 GMT</pubDate></item></channel></rss>