<?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[Hilfe bei Vier Gewinnt]]></title><description><![CDATA[<p>Hallo muss ein Vier Gewinnt mit CPP schreiben...<br />
hab auch schon angefangen und gibt mir schonmal die Shapes bei start aus...<br />
bin grade beim herunterfallen der steine... weiss aber nochnet wie ich des animieren soll...<br />
hab des mal mit ner for schleife versucht<br />
-&gt; Versuch</p>
<pre><code>for(int y=1; y&lt;MAXY; y++){
Panels[y][0]-&gt;Color = clRed;
Sleep(50);
Panels[y-1][0]-&gt;Color = clWhite; }
}
</code></pre>
<p>so nebenbei die steine werden per buttonklick fallengelassen für die 8 felder gibt es jeweils ein button...<br />
hab jetzt wie oben beim code zu sehen ist einfach mal rot werden lassen dann weiss dann wieder rot usw bis er unten ist... aber wenn ich button drücke zeigt er mir einfach nur unten den roten an und des wars dann auch schon...</p>
<p>Kann mir jemand vielleicht helfen? Thx</p>
<p>gruss morphY</p>
<p>Hier nochmal die vorgaben...<br />
Ihr Programm hat folgende Minimalbedingungen zu erfüllen:<br />
– das Spielbrett soll 8 x 8 Felder groß sein<br />
– es sollen nur zwei Spieler gegeneinander spielen können (kein Spiel gegen den Computer)<br />
– nach jedem Zug ist zu prüfen, ob es einen Sieger gibt<br />
– es ist „Unentschieden“ anzuzeigen, wenn alle Felder besetzt sind, aber kein Sieger feststeht<br />
– es sind die jeweils nächste Zugfarbe und das zuletzt gesetzte Feld anzuzeigen<br />
– das Herunterfallen der Steine sollen grafisch animiert werden.<br />
– es muss ein Button vorhanden sein, um das Spielbrett zu leeren und ein neues Spiel<br />
beginnen zu können<br />
– Spielbrettdaten und GUI sollen stets voneinander getrennt sein. Die Spielbrettdaten sind<br />
daher in einem Array zu speichern. Die GUI ist lediglich ein Abbild der Daten.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/100098/hilfe-bei-vier-gewinnt</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Jul 2026 11:08:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/100098.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Feb 2005 18:09:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Thu, 03 Feb 2005 18:09:47 GMT]]></title><description><![CDATA[<p>Hallo muss ein Vier Gewinnt mit CPP schreiben...<br />
hab auch schon angefangen und gibt mir schonmal die Shapes bei start aus...<br />
bin grade beim herunterfallen der steine... weiss aber nochnet wie ich des animieren soll...<br />
hab des mal mit ner for schleife versucht<br />
-&gt; Versuch</p>
<pre><code>for(int y=1; y&lt;MAXY; y++){
Panels[y][0]-&gt;Color = clRed;
Sleep(50);
Panels[y-1][0]-&gt;Color = clWhite; }
}
</code></pre>
<p>so nebenbei die steine werden per buttonklick fallengelassen für die 8 felder gibt es jeweils ein button...<br />
hab jetzt wie oben beim code zu sehen ist einfach mal rot werden lassen dann weiss dann wieder rot usw bis er unten ist... aber wenn ich button drücke zeigt er mir einfach nur unten den roten an und des wars dann auch schon...</p>
<p>Kann mir jemand vielleicht helfen? Thx</p>
<p>gruss morphY</p>
<p>Hier nochmal die vorgaben...<br />
Ihr Programm hat folgende Minimalbedingungen zu erfüllen:<br />
– das Spielbrett soll 8 x 8 Felder groß sein<br />
– es sollen nur zwei Spieler gegeneinander spielen können (kein Spiel gegen den Computer)<br />
– nach jedem Zug ist zu prüfen, ob es einen Sieger gibt<br />
– es ist „Unentschieden“ anzuzeigen, wenn alle Felder besetzt sind, aber kein Sieger feststeht<br />
– es sind die jeweils nächste Zugfarbe und das zuletzt gesetzte Feld anzuzeigen<br />
– das Herunterfallen der Steine sollen grafisch animiert werden.<br />
– es muss ein Button vorhanden sein, um das Spielbrett zu leeren und ein neues Spiel<br />
beginnen zu können<br />
– Spielbrettdaten und GUI sollen stets voneinander getrennt sein. Die Spielbrettdaten sind<br />
daher in einem Array zu speichern. Die GUI ist lediglich ein Abbild der Daten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/713948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/713948</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Thu, 03 Feb 2005 18:09:47 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Thu, 03 Feb 2005 19:36:40 GMT]]></title><description><![CDATA[<p>Pack ein <em>Application-&gt;ProcessMessages();</em> in die Schleife.<br />
Siehe auch die <a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39305" rel="nofollow">FAQ</a>, &quot;Verzögerungsfunktion&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/714022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/714022</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Thu, 03 Feb 2005 19:36:40 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Thu, 03 Feb 2005 20:13:28 GMT]]></title><description><![CDATA[<p>hmm geht soweit</p>
<pre><code class="language-cpp">for(int y=1; y&lt;MAXY; y++){
  Panels[y][0]-&gt;Color = clRed;
  Sleep(500);
  Application-&gt;ProcessMessages();
  Panels[y-1][0]-&gt;Color = clWhite;
}
</code></pre>
<p>jetzt muss ich es hier einbauen...</p>
<pre><code class="language-cpp">if(start == 0){
    Panels[counter2][1]-&gt;Color = clRed;
    if(counter2 == 0)
      ShowMessage(&quot;STOP Reihe voll&quot;);
    else
      counter2--;
  }
  else{
    Panels[counter2][1]-&gt;Color = clYellow;

    if(counter2 == 0)
      ShowMessage(&quot;STOP Reihe voll&quot;);
    else
      counter2--;
  }

  if(start==0)
    start++;
  else
    start--;
</code></pre>
<p>hab das mal soo versucht</p>
<pre><code class="language-cpp">if(start == 0){
    for(int y=counter2; y&lt;MAXY; y++){
    Panels[counter2][1]-&gt;Color = clRed;
    Sleep(500);
    Application-&gt;ProcessMessages();
    Panels[counter2-1][0]-&gt;Color = clWhite;
     }
    if(counter2 == 0)
      ShowMessage(&quot;STOP Reihe voll&quot;);
    else
      counter2--;
    }
  else{
  for(int x=counter2; x&lt;MAXY; x++){
    Panels[counter2][1]-&gt;Color = clYellow;
        Sleep(500);
    Application-&gt;ProcessMessages();
    Panels[counter2-1][0]-&gt;Color = clWhite;
    }
    if(counter2 == 0)
      ShowMessage(&quot;STOP Reihe voll&quot;);
    else
      counter2--;
  }

  if(start==0)
    start++;
  else
    start--;
</code></pre>
<p>und er macht mir des voll krum... manche macht er weiss dann wieder geld usw O.o<br />
sehr strange...</p>
<p>sieht hier vielleicht jemand den fehler?</p>
<p>thx im vorraus</p>
<p>greetz<br />
morphY</p>
]]></description><link>https://www.c-plusplus.net/forum/post/714055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/714055</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Thu, 03 Feb 2005 20:13:28 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Sat, 05 Feb 2005 11:32:05 GMT]]></title><description><![CDATA[<p>des mit dem optischen fall funzt war net so richtig aber des werd ich noch lösen hab ja noch bissl zeit...</p>
<p>des spiel sieht schon ganz gut aus... und läuft soweit ^^</p>
<p>bin grade dabei zu gucken wie ich des mache das er erkennt das vier in einer reihe sind</p>
<p>ich schreibe in ein 2dimenisonales array die werte 0 und 1 rein<br />
0 für rot und 1 für gelb</p>
<p>hat jemand ne idee wie man es einfach ausliesst wo dann vier mal die gleiche zahl ist???</p>
<p>thx im vor raus</p>
<p>greetz</p>
<p>morphY</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715097</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Sat, 05 Feb 2005 11:32:05 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Sat, 05 Feb 2005 11:40:18 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>dazu mußt du beim Setzen eines Feldes auf gesetzt (1 oder 0) eben die umliegenden Stellen vergleichen.<br />
Du hast als Reihen eine Zeile, eine Spalte und zwei Diagonalen, die du nacheinander überprüfst. Von dem geänderten Feld aus gehst du jeweils maximal 3 Position in beide Richtungen der aktuellen Reihe und zählst, wie viele gleichfarbige Felder es direkt hintereinander gibt. Ist die Summe der beiden Richtungen &gt;= 4, hat der Spieler gewonnen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715111</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 05 Feb 2005 11:40:18 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Sat, 05 Feb 2005 13:50:05 GMT]]></title><description><![CDATA[<p>hab mir da auch schon sowas in der art gedacht O.o</p>
<p>nur bekomm ich des net gecoded O.o</p>
<p>will net in meinen kopp... ich weiss zwar was ich machen will aber ich weiss net so richitg wie O.o</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715225</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Sat, 05 Feb 2005 13:50:05 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Sat, 05 Feb 2005 14:45:29 GMT]]></title><description><![CDATA[<p>hatte jetzt mal ne idee... waagerechte und senkrechte gehen auch...</p>
<p>köönnte man diesen Code noch optimieren???</p>
<pre><code class="language-cpp">void TVierGewinnt::viergewinnt(int cx)
{

  for(int cy=MAXY; cy&gt;=0; cy--)
  {
   //ab hier senkrechte abfrage
    if(feldwerte[cy][cx] == 0)
    {
      if(feldwerte[cy-1][cx] == 0)
      {
        if(feldwerte[cy-2][cx] == 0)
        {
          if(feldwerte[cy-3][cx] == 0)
          {
           ShowMessage(&quot;Rot Hat gewonnen&quot;);
          }
        }
      }
    }
    else
    {
      if(feldwerte[cy][cx] == 1)
      {
        if(feldwerte[cy-1][cx] == 1)
        {
          if(feldwerte[cy-2][cx] == 1)
          {
            if(feldwerte[cy-3][cx] == 1)
            {
             ShowMessage(&quot;Gelb Hat gewonnen&quot;);
            }
          }
        }
      }
    }
    //ab hier ende der Senkrechten abfrage

  }//ende for schleife

//ab hier waagerechte abfrage
  for(int cy2=MAXY; cy2&gt;=0; cy2--)
  {
    for(int cx2=0; cx2&lt;=4; cx2++)
    {
      if(feldwerte[cy2][cx2] == 0)
      {
        if(feldwerte[cy2][cx2+1] == 0)
        {
          if(feldwerte[cy2][cx2+2] == 0)
          {
            if(feldwerte[cy2][cx2+3] == 0)
            {
              ShowMessage(&quot;Rot Hat gewonnen&quot;);
            }
          }
        }
      }
      else
      {
        if(feldwerte[cy2][cx2] == 1)
        {
          if(feldwerte[cy2][cx2+1] == 1)
          {
            if(feldwerte[cy2][cx2+2] == 1)
            {
              if(feldwerte[cy2][cx2+3] == 1)
              {
                ShowMessage(&quot;Gelb Hat gewonnen&quot;);
              }
            }
          }
        }
      }
    }
  }

}
</code></pre>
<p>greetz</p>
<p>morphY</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715252</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Sat, 05 Feb 2005 14:45:29 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Sat, 05 Feb 2005 16:32:53 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>auf jeden Fall kann man das optimieren.<br />
- da du ja diese Überprüfungsfunktion für genau einen Spieler durchführst, kannst du dessen Farbe der Funktion als parameter übergeben</p>
<pre><code class="language-cpp">bool TVierGewinnt::viergewinnt(int cx, int pcolor)
</code></pre>
<p>dann brauchst du nur eine Überprüfung auf den Parameter</p>
<pre><code class="language-cpp">if(feldwerte[cy-3][cx] == pcolor) return(true);
</code></pre>
<h2>als letzten Befehl gibst du false zurück. Wenn du jetzt diese Funktion für einen Spieler aufrufst, bekommst du true zurück, wenn er gewinnt, ansonsten false.<br />
Daraufhin kannst du deine Meldung anzeigen.</h2>
<pre><code class="language-cpp">if(feldwerte[cy][cx] == 0)
    {
      if(feldwerte[cy-1][cx] == 0)
      {
        if(feldwerte[cy-2][cx] == 0)
        {
          if(feldwerte[cy-3][cx] == 0)
          {
           ShowMessage(&quot;Rot Hat gewonnen&quot;);
          }
        }
      }
</code></pre>
<p>daraus machen wir</p>
<pre><code class="language-cpp">for (int Lv = 0; Lv &lt; 4; Lv++)
  if(feldwerte[cy -Lv][cx] == pcolor) return(true)
</code></pre>
<p>Ich würde dir ja gerne noch mehr Tips geben. Aber leider blicke ich da nicht durch.<br />
Mußt du für die Überprüfung nicht einen x- und einen y-Wert übergeben?</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715317</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 05 Feb 2005 16:32:53 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Sun, 06 Feb 2005 09:52:21 GMT]]></title><description><![CDATA[<p>wow gute idee <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>habs net so drauf mit cpp ^^ mach des erst nen knappes halbes jahr...</p>
<p>ne ich muss da nix zurückgeben</p>
<p>also ich ruf die funktion bei jeden button auf und muss ja jedes mal nen anderen wert für die X achse übergeben ^^ deswegen immer soviel mit x ^^</p>
<p>hier mal nen beispiel</p>
<pre><code class="language-cpp">void __fastcall TVierGewinnt::btn_einsClick(TObject *Sender)
{
   fuellen(counter1, xwert);
   counter1--;
   weristdran();
   viergewinnt(xwert);
}
</code></pre>
<p>xwert ist in dem fall 0 !</p>
<p>bei button 2 ist es xwert+1 usw<br />
weil er ja im 2 dimensionalen array immer eine spalte weiter muss weil des ja die xachse ist.</p>
<p>und des y fällt in dem fall eh weg... weil ich haben ja für jeder spallte einen button... und da muss ich nur x übergeben ddamit er weiss in welcher spalte er ist und y zählt er eh von 7 nach 0 runter..<br />
so ich muss jetzt erstemal deinen code verstehen ^^ weil wenn ich des so kürzen könnte hätte ich es auch einfacher mit dem strucktogramm ^^</p>
<p>weil wir sollen zur gewinnprüfung noch nen struktogramm machen O.o</p>
<p>so wie iche s mache sind es ja 100 seiten ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715699</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Sun, 06 Feb 2005 09:52:21 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Sun, 06 Feb 2005 10:30:16 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ach so, habe wohl das Spielprinzip verwechselt.<br />
du solltest auf jeden Fall die Überprüfung von dem Spieler abhängig machen, den du mit weristdran() ermittelst.<br />
Und wenn du in viergewinnt() true oder false zurückgibst, hast du nur eine zentrale Gewinn-Nachricht. Außerdem wird die Überprüfung sofort abgebrochen, wenn ein Spieler gewinnt, statt noch alle nachfolgenden Fälle zu überprüfen.<br />
Im schlimmsten Fall hast du so auch mehrere Gewinn-Nachrichten, wenn mehrere Fälle auf einmal erfüllt werden.</p>
<p>Wenn ich mir noch mal diesen Punkt der Aufgabenstellung anschaue</p>
<blockquote>
<p>Spielbrettdaten und GUI sollen stets voneinander getrennt sein. Die Spielbrettdaten sind<br />
daher in einem Array zu speichern. Die GUI ist lediglich ein Abbild der Daten.</p>
</blockquote>
<p>bezweifle ich, das du den mit deinem Aufbau erfüllst.<br />
Vielleicht solltest du noch mal nachfragen, wie weit die Trennung gehen soll.<br />
Ich würde nämlich eine unabhängige Klasse TSpielbrett schreiben, die alle wichtigen Daten (Array, aktueller Spieler,...) enthält, und dieser entsprechende Funktion wie ÄndereSpieler() und SetzteFarbe() zuordnen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715727</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 06 Feb 2005 10:30:16 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Tue, 08 Feb 2005 15:12:52 GMT]]></title><description><![CDATA[<p>das mit gui und so frag ich am mittwoch mal...</p>
<p>hab aber grade erleuschtung und ferstanden was du damit meintest ^^</p>
<pre><code class="language-cpp">for (int Lv = 0; Lv &lt; 4; Lv++)
  if(feldwerte[cy -Lv][cx] == pcolor) return(true)
</code></pre>
<p>da spar ich mir die 4 if abfragen ^^ habsch gar net dran gedacht... nur das mit dem bool rall ich nochnet so... hab des bis jetzt nochnie verwendet... deswegen...</p>
<p>könntest du mir da bitte nochmal helfen des richitg anzuwenden ???</p>
<p>bekomm des nicht hin</p>
<pre><code class="language-cpp">bool TVierGewinnt::viergewinnt(int cx, int pcolor)
{

  for(int cy=MAXY; cy&gt;=0; cy--)
  {
    for (int Lv = 0; Lv &lt; 4; Lv++){
    if(feldwerte[cy -Lv][cx] == pcolor)
    return(true);//senkrechte

    if(feldwerte[cy][cx+Lv] == pcolor)
    return(true);//waagerechte
    }//ende innere for schleife
  }//ende for schleife
}
</code></pre>
<p>des funzt net so richitg....</p>
<p>thx im vorraus</p>
<p>greetz</p>
<p>morphY</p>
]]></description><link>https://www.c-plusplus.net/forum/post/717054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/717054</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Tue, 08 Feb 2005 15:12:52 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Tue, 08 Feb 2005 16:06:28 GMT]]></title><description><![CDATA[<p>hey akari haste mich vergessen???</p>
<p>ich versteh bei deinem code</p>
<pre><code class="language-cpp">for (int Lv = 0; Lv &lt; 4; Lv++)
  if(feldwerte[cy -Lv][cx] == pcolor) return(true)
</code></pre>
<p>wie der dann die einzelnen felder durchfragt... ich blick des net...</p>
<p>greetz</p>
<p>morphY</p>
]]></description><link>https://www.c-plusplus.net/forum/post/717868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/717868</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Tue, 08 Feb 2005 16:06:28 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Tue, 08 Feb 2005 16:24:37 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>was soll ich da noch erklären? Wenn ich mir dein Code aus dem vorletzten Post anschaue, denk ich doch, du weißt was es mit der Schleife auf sich hat.<br />
Vielleicht hilft die diese Aufdröselung, es zu verstehen:</p>
<pre><code class="language-cpp">int help;
for (int Lv = 0; Lv &lt; 4; Lv++)
{
  Help = cy -Lv; // aktuellen um 1 verringerten Spaltenindex berechnen
  if(feldwerte[Help][cx] == pcolor) return(true);
  }

// oder auch
for (int Lv = cy; Lv &gt; cy -4; Lv--)
  if(feldwerte[Lv][cx] == pcolor) return(true);
</code></pre>
<p>Ich glaube, du solltest dir noch mal den Alogithmus an sich durch den Kopf gehen lassen. Ich blicke da nämlich nicht durch.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/717893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/717893</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 08 Feb 2005 16:24:37 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Tue, 08 Feb 2005 16:37:06 GMT]]></title><description><![CDATA[<p>was des macht habsch schon verstanden...</p>
<p>nur mein problem ist es damit weiterzuarbeiten...</p>
<p>weil der gibt ja nun immer true zurück...</p>
<p>und sobald ich ein stein setze hat der gleich gewonnen... es hapert wohl eher daran das ich nicht mit dem true oder false weiterkomme...</p>
<pre><code class="language-cpp">//gewinnfestellung
bool TVierGewinnt::viergewinnt(int cx, int pcolor)
{
  for(int cy=MAXY; cy&gt;=0; cy--)
  {
    for (int cv = 0; cv &lt; 4; cv++){
    if(feldwerte[cy -cv][cx] == pcolor)return(true);
    }
  }//ende for schleife
}
</code></pre>
<pre><code class="language-cpp">void __fastcall TVierGewinnt::btn_zweiClick(TObject *Sender)
{
    fuellen(counter2, xwert+1);
    counter2--;
    weristdran();
    if(viergewinnt(xwert+1, start) == True)
      ShowMessage(start); // wer gewónnen hat...

}
</code></pre>
<p>hast du ne mailadresse? da kannsch dir das ja mal schicken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>greetz<br />
morphY</p>
]]></description><link>https://www.c-plusplus.net/forum/post/717914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/717914</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Tue, 08 Feb 2005 16:37:06 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Tue, 08 Feb 2005 17:13:53 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>du mußt noch die richtigen Steine zählen</p>
<pre><code class="language-cpp">//gewinnfestellung
bool TVierGewinnt::viergewinnt(int cx, int pcolor)
{
  int count = 0;
  for(int cy=MAXY; cy&gt;=0; cy--)
  {
    count = 0;
    for (int cv = 0; cv &lt; 4; cv++){
      if(feldwerte[cy -cv][cx] == pcolor) count++;
      } 
    if (count == 4) return(true); 
    count = 0;
    // nächste Überprüfung
    }//ende for schleife

  return(true);
}
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/717957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/717957</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 08 Feb 2005 17:13:53 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Wed, 09 Feb 2005 22:04:55 GMT]]></title><description><![CDATA[<p>ich weiss echt net was da net stimmt... der macht es immernochnet richitg...</p>
<p>hab des so gemacht</p>
<pre><code class="language-cpp">//gewinnfestellung
bool TVierGewinnt::viergewinnt(int cx, int pcolor)
{
  int count = 0;
  for(int cy=MAXY; cy&gt;=0; cy--)
  {
    count = 0;
    for (int cv = 0; cv &lt; 4; cv++){
      if(feldwerte[cy -cv][cx] == pcolor) count++;
      }
    if (count == 4) return(true);
    count = 0;
    // nächste Überprüfung
    }//ende for schleife
  return(false);
}
</code></pre>
<p>und unten frag ich des dann so ab!</p>
<pre><code class="language-cpp">void __fastcall TVierGewinnt::Bbtn_einsClick(TObject *Sender)
{
   fuellen(counter1, xwert);
   counter1--;
   weristdran();
   if(viergewinnt(xwert, start) == true);
   ShowMessage(start);
}
</code></pre>
<p>und der sagt immer sobald ich ein stein setze das die farbe die grade gesetzt gat gewonnen hat !</p>
<p>was mach ich nur falsch</p>
<p>greetz<br />
morphY</p>
]]></description><link>https://www.c-plusplus.net/forum/post/719190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/719190</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Wed, 09 Feb 2005 22:04:55 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Wed, 09 Feb 2005 22:17:34 GMT]]></title><description><![CDATA[<p>Hallo</p>
<pre><code class="language-cpp">if(viergewinnt(xwert, start) == true); // &lt;&lt; Semikolon weg!
   ShowMessage(start);
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/719198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/719198</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 09 Feb 2005 22:17:34 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Wed, 09 Feb 2005 22:47:42 GMT]]></title><description><![CDATA[<p>hmm danke geht soweit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>hab noch nen fehler bei mir gefunden... ist aber behoben ^^<br />
veränder den start wert ( also wer grade dran ist) zu früh)<br />
also fragt der mit dem falschen wert ab...</p>
<p>jetzt habsch nurnoch ein problem ^^ der sagt schon bei 3 das vier gewinnt ist ^^ aber ich debugge mal schnell und dann werd ich den fehler schon finden</p>
<p>greetz<br />
morphY</p>
<p>fettes merci nochmal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>//edit</p>
<p>habs</p>
<pre><code class="language-cpp">bool TVierGewinnt::viergewinnt(int cx, int scolor)
{
  int count = 0;
  for(int cy=MAXY-1; cy&gt;=0; cy--)//MAX=8 muss aber 7 sein ^^ array geht ja nur von 0-7 ^^ also minus 1 und es geht :)
  {
    count = 0;
    for (int cv = 0; cv &lt;= 4; cv++){
      if(feldwerte[cy -cv][cx] == scolor)
      count++;
      }
    if (count == 4) return(true);
    count = 0;
    // nächste Überprüfung
    }//ende for schleife
  return(false);
}
</code></pre>
<p>hmm ich mach jetzt noch auf jeden fall die waagerechte und dann ist erstemal schluss für heute <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>ich meld mich ncohmal wenn es probleme gibt <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>
]]></description><link>https://www.c-plusplus.net/forum/post/719215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/719215</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Wed, 09 Feb 2005 22:47:42 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Fri, 11 Feb 2005 12:57:53 GMT]]></title><description><![CDATA[<p>So meine gewinnprüfung läuft nun fehlerfrei...<br />
das visuelle fallen der steine habsch nun auch gelöst und die ganzen kleinigkeiten sind nun auch erledigt...</p>
<p>hat jemand ne idee wie ich es am besten löse das er sich die letzten 5 züge speichert, damit man später zuge zurücknehmen kann???</p>
<p>greetz</p>
<p>morphY</p>
]]></description><link>https://www.c-plusplus.net/forum/post/720588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/720588</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Fri, 11 Feb 2005 12:57:53 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Fri, 11 Feb 2005 13:08:52 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>indem ein weiteres Array über ints aufmachst, in dem beim Setzen eines neuen Steines in die erste Position der Wert der neueste Spalten kommt, während alle anderen Positionen um eins nach hinten rutschen und der letzte wegfällt.<br />
Eventuell bietet die STL einen passenden Container, ansonsten ist sowas auch leicht selbst gemacht.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/720593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/720593</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 11 Feb 2005 13:08:52 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Fri, 11 Feb 2005 13:32:41 GMT]]></title><description><![CDATA[<p>//züge zurücknehmen<br />
ja das mit dem array habsch mir auch schon überlegt...<br />
aber ich brauch ja nen y und nen x wert... und die beiden werte kannsch ja nicht in einen speicher tun...<br />
will das man 5 züge zurückgehen kann...<br />
ich könnte entweder 2 arrays nehmen einmal für x und einmal für y oder<br />
oder des array doppelt so groß machen...<br />
aber da es da leichter zu fehlern kommen kann wär es doch angebrachter 2 zu nehmen oder??</p>
<p>//Exe erstellung<br />
und noch ne frage... wenn ich des spiel über f9 starte... dann erstellt er mir ja auch eine exe das ist ja aber nur ne kleine... wenn ich die auf anderen computern ausführe geht die ja nicht...<br />
wie mach cih das das es eine &quot;richtige&quot; ist die alle erforderlichen infos enthält???</p>
<p>was ist STL???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/720617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/720617</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Fri, 11 Feb 2005 13:32:41 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Fri, 11 Feb 2005 13:36:51 GMT]]></title><description><![CDATA[<p>Du brauchst nur einen Wert, den der Spalte. Du kannst immer nur den obersten in der Spalte wieder rausnehmen.</p>
<p>EXE: Sieh mal in die FAQ unter Standalone EXE.</p>
<p>STL: Schau mal in die Hilfe Deines BCB.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/720622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/720622</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 11 Feb 2005 13:36:51 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Sat, 12 Feb 2005 15:41:02 GMT]]></title><description><![CDATA[<p>so nun wieder zeit für cpp <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>ich brauch trotzdem 2 werte.. weil ich muss ja wissen welche spalte er ist und in welcher reihe er ist.</p>
<p>weil wie soll ich herrausfinde welches der oberste ist ???</p>
<p>was soll mir STL bringen???<br />
also die hilfe hat mir net wirklich was Gebracht....</p>
<p>//nochwas nebenbei...<br />
kann man den code zur gewinnabfrage so lassen?</p>
<p>wenn er so ok ist mach ich des struktogramm dafür</p>
<pre><code class="language-cpp">//Gewinnfeststellung---------------------------------------------------------
bool TVierGewinnt::viergewinnt(int countx, int scolor)
{
  int count=0, count2=0, count3=0, count4=0;
  for(int cy=MAXY-1; cy&gt;=3; cy--)//beginn der diagonalen von rechts
  {
    for (int cx = MAXX-1; cx &gt;= 3; cx--)
    {
      count4 = 0;
      for(int cv = 0; cv&lt;=3; cv++)
      {
        if(feldwerte[cy-cv][cx-cv] == scolor)
        count4++;
      }
      if(count4 == 4) return(true);
      count4 = 0;
    }
  }//ende for schleife   //ende der diagonalen von rechts
  for(int cy=MAXY-1; cy&gt;=3; cy--)//beginn der diagonalen von links   und der senkrechten
  {
    for (int cx = 0; cx&lt;=4; cx++)
    {
      count3 = 0;
      count2 = 0;
      for(int cv = 0; cv&lt;=3; cv++)
      {
        if(feldwerte[cy-cv][cx+cv] == scolor)
          count3++;
        if(feldwerte[cy][cx+cv] == scolor)
          count2++;
      }
      if(count2==4 || count3==4) return(true);
      count3 = 0;
      count2 = 0;
    }
  }//ende for schleife   //ende der diagonalen von links
  for(int cy=MAXY-1; cy&gt;=0; cy--)//beginn der senkrechten
  {
    count = 0;
    for (int cv = 0; cv &lt;=3; cv++){
      if(feldwerte[cy -cv][countx] == scolor)
      count++;
      }
    if (count == 4) return(true);
    count = 0;  //ende der senkrechten
  }//ende for schleife

  if(start==0)
    start++;
  else
    start--;
  return(false);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/721532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/721532</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Sat, 12 Feb 2005 15:41:02 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Sat, 12 Feb 2005 15:40:50 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>ich brauch trotzdem 2 werte.. weil ich muss ja wissen welche spalte er ist und in welcher reihe er ist.</p>
<p>weil wie soll ich herrausfinde welches der oberste ist ???</p>
</blockquote>
<p>In dem besagten Array brauchst du nur einen Wert, den der Spalte (also den Wert, auf den du die Gewinnüberprüfung machst). Denn genau so wie du immer nur von oben einen neuen Stein setzen kannst, kannst du auch immer nur einen Stein von oben wieder wegnehmen.<br />
Um jetzt den obersten Stein einer Spalte zu finden, gehst du nur die betreffende Spalte von unten nach oben durch und suchst den letzten Stein der Spalte, das heißt das nächste Feld der Spalte ist leer.</p>
<blockquote>
<p>nochwas nebenbei...<br />
kann man den code zur gewinnabfrage so lassen?</p>
<p>wenn er so ok ist mach ich des struktogramm dafür</p>
</blockquote>
<p>Funktioniert denn der Code, so wie du willst? Es geht erstmal nicht darum, das der Code perfekt ist, sondern das du weißt wie er funktioniert.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/721549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/721549</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 12 Feb 2005 15:40:50 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Sat, 12 Feb 2005 15:47:27 GMT]]></title><description><![CDATA[<blockquote>
<p>In dem besagten Array brauchst du nur einen Wert, den der Spalte (also den Wert, auf den du die Gewinnüberprüfung machst). Denn genau so wie du immer nur von oben einen neuen Stein setzen kannst, kannst du auch immer nur einen Stein von oben wieder wegnehmen.<br />
Um jetzt den obersten Stein einer Spalte zu finden, gehst du nur die betreffende Spalte von unten nach oben durch und suchst den letzten Stein der Spalte, das heißt das nächste Feld der Spalte ist leer.</p>
</blockquote>
<p>also speicher ich im prinzip die xachse von mienem array und suche von unten ab die erste 2 (2 = leer) und lösche ein feld darunter und mach dies auch gleich weiss...</p>
<p>hmm muss ich mal gucken wie ich des mache... setz mich gleich mal ran</p>
<p>//------------------------------------------------------------------</p>
<blockquote>
<p>Funktioniert denn der Code, so wie du willst? Es geht erstmal nicht darum, das der Code perfekt ist, sondern das du weißt wie er funktioniert.</p>
</blockquote>
<p>der code funktioniert genauso wie ich will könnte net besser laufen <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="🙂"
    /><br />
und verstehen tu icH IHn auch <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="🙂"
    /><br />
hab ja jetzt mittlerweile die anwendung von bool drauf <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>greetz<br />
morphY</p>
]]></description><link>https://www.c-plusplus.net/forum/post/721553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/721553</guid><dc:creator><![CDATA[morphY]]></dc:creator><pubDate>Sat, 12 Feb 2005 15:47:27 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Vier Gewinnt on Sat, 12 Feb 2005 17:31:30 GMT]]></title><description><![CDATA[<p>wow morphY, dann bist duanscheinend schon fertig <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="👍"
    /><br />
wird wohl ne 1 beim master-g ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/721651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/721651</guid><dc:creator><![CDATA[Apf3ls4ft]]></dc:creator><pubDate>Sat, 12 Feb 2005 17:31:30 GMT</pubDate></item></channel></rss>