<?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[minimax: geht nicht von meinen besten zügen aus!]]></title><description><![CDATA[<p>hallo. ich habe ein spielfeld, 9*9, und das ziel des spiels ist es, 4 in eine reihe zu kriegen. dabei fallen die steine nicht immer nach unten wie bei 4 gewinnt, sondern eher wie tic-tac-toe in groß. nun berechnet mein pc auch wunder schön die nächsten 41 millionen züge, doch geht er dabei immer, so habe ich das gefühl, von meinen dümmsten zügen aus. er soll aber davon ausgehen, dass auch meine züge gut sind. was machei ch falsch?<br />
hier meine KI-funktion..</p>
<pre><code class="language-cpp">void Kizug(int suchtiefe, int color, int Brett1[9][9])
{
	int Brett2[9][9];

								int ocolor;
								if(color==2){ocolor=1;} if(color==1){ocolor=2;}

	if(suchtiefe&gt;-1 &amp;&amp; maxPossibleMovesF(Brett1)&gt;0)
	{
		//printf(&quot;Suchtiefe: %d&quot;,suchtiefe);

	for(int y=0;y&lt;9;y++)
	{
		for(int x=0;x&lt;9;x++)
		{
			if(Brett2[y][x]==0)
			{

			if(suchtiefe==2){ax=x; ay=y;} // ersten schritt speichern ...

			memcpy(&amp;Brett2[0][0], &amp;Brett1[0][0], sizeof(int)*81);

				Brett2[y][x]=color;
			} 
			int val;

			if(color==2)
			{
				//maximizer?

					val=bewerte(Brett2, color)+bewerte(Brett2, ocolor);
					if(suchtiefe==0 &amp;&amp; val&gt;maxwert &amp;&amp; feld[ay][ax]==0)
					{
						aax=ax;
						aay=ay;
						maxwert=val;
						printf(&quot;neuer Maxwert: %d : %d %d\n&quot;,maxwert, ay,ax);

					}
			}

			else if(color==1)
			{
				// minimizer?
					val=bewerte(Brett2, color)+bewerte(Brett2, ocolor);
					if(suchtiefe==0 &amp;&amp; val&lt;maxwert &amp;&amp; feld[ay][ax]==0)
					{
						aax=ax;
						aay=ay;
						maxwert=val;
						printf(&quot;neuer Maxwert: %d : %d %d\n&quot;,maxwert, ay,ax);

					}

			}

					Kizug(suchtiefe-1,ocolor, Brett2);

		}

	}

	} // if suchtiefe, maxpossiblemoves .. 

}
</code></pre>
<p>meine bewertungsfunktion bewertet 2 in einer reihe mit 200 punkten, 3 in einer reihe mit 500, 3 in einer reihe mit zwei freien nachbarn mit 2000 und einen sieg mit 10000.</p>
<p>wie bringe ich ihn dazu, zu verhindern, dass ich punkte bekomme? <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>mfg<br />
stephan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/168387/minimax-geht-nicht-von-meinen-besten-zügen-aus</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 03:36:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168387.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Dec 2006 14:24:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to minimax: geht nicht von meinen besten zügen aus! on Thu, 21 Dec 2006 14:24:00 GMT]]></title><description><![CDATA[<p>hallo. ich habe ein spielfeld, 9*9, und das ziel des spiels ist es, 4 in eine reihe zu kriegen. dabei fallen die steine nicht immer nach unten wie bei 4 gewinnt, sondern eher wie tic-tac-toe in groß. nun berechnet mein pc auch wunder schön die nächsten 41 millionen züge, doch geht er dabei immer, so habe ich das gefühl, von meinen dümmsten zügen aus. er soll aber davon ausgehen, dass auch meine züge gut sind. was machei ch falsch?<br />
hier meine KI-funktion..</p>
<pre><code class="language-cpp">void Kizug(int suchtiefe, int color, int Brett1[9][9])
{
	int Brett2[9][9];

								int ocolor;
								if(color==2){ocolor=1;} if(color==1){ocolor=2;}

	if(suchtiefe&gt;-1 &amp;&amp; maxPossibleMovesF(Brett1)&gt;0)
	{
		//printf(&quot;Suchtiefe: %d&quot;,suchtiefe);

	for(int y=0;y&lt;9;y++)
	{
		for(int x=0;x&lt;9;x++)
		{
			if(Brett2[y][x]==0)
			{

			if(suchtiefe==2){ax=x; ay=y;} // ersten schritt speichern ...

			memcpy(&amp;Brett2[0][0], &amp;Brett1[0][0], sizeof(int)*81);

				Brett2[y][x]=color;
			} 
			int val;

			if(color==2)
			{
				//maximizer?

					val=bewerte(Brett2, color)+bewerte(Brett2, ocolor);
					if(suchtiefe==0 &amp;&amp; val&gt;maxwert &amp;&amp; feld[ay][ax]==0)
					{
						aax=ax;
						aay=ay;
						maxwert=val;
						printf(&quot;neuer Maxwert: %d : %d %d\n&quot;,maxwert, ay,ax);

					}
			}

			else if(color==1)
			{
				// minimizer?
					val=bewerte(Brett2, color)+bewerte(Brett2, ocolor);
					if(suchtiefe==0 &amp;&amp; val&lt;maxwert &amp;&amp; feld[ay][ax]==0)
					{
						aax=ax;
						aay=ay;
						maxwert=val;
						printf(&quot;neuer Maxwert: %d : %d %d\n&quot;,maxwert, ay,ax);

					}

			}

					Kizug(suchtiefe-1,ocolor, Brett2);

		}

	}

	} // if suchtiefe, maxpossiblemoves .. 

}
</code></pre>
<p>meine bewertungsfunktion bewertet 2 in einer reihe mit 200 punkten, 3 in einer reihe mit 500, 3 in einer reihe mit zwei freien nachbarn mit 2000 und einen sieg mit 10000.</p>
<p>wie bringe ich ihn dazu, zu verhindern, dass ich punkte bekomme? <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>mfg<br />
stephan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196154</guid><dc:creator><![CDATA[don_house]]></dc:creator><pubDate>Thu, 21 Dec 2006 14:24:00 GMT</pubDate></item></channel></rss>