Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo, ich möchte 4 Gewinnt mit einer KI programmieren und benutze dazu den Negamax-Algorithmus.

Der Algorithmus funktioniert soweit, spuckt jedoch noch keine wirklichen logischen Züge aus. 3 senkrecht stehende steine erkennt er nicht. nicht von mir und nicht von ihm...

Was ist denn falsch?

Negamax-Aufruf:

		//Negamax

		else

		{

			negamax(depth, Integer.MIN_VALUE, Integer.MAX_VALUE); //depth = 8

			return doNext;

		}
	

	/**

	 * Der beste Spielzug wird mit Hilfe des Negamax-algorithmus gesucht.

	 * Jeder Spielbaum wird bis zur Tiefe "depth" ausgewertet und dann eine Feldbewertung vorgenommen.

	 * 

	 * @param	depth	die Tiefe des Spielbaumes

	 * @return 	max     Der Wert des Zuges

	 */

	private int negamax(int depth, int alpha, int beta) 

	{

		if(depth == 0                      	 	//Abbruchbedingun der Rekursion (Tiefe erreicht, 

				|| pf.possibleMovesInt()+1 == 0) 	//aktueller spieler hat keine möglichen Züge -> Feld ist voll

		{						

			if (pf.checkfourBoolean(2))  			//Gewonnen?

		 		return 10;

			else if (pf.checkfourBoolean(1))  		//Verloren?

		  		return -10;

			else         	 						//Unentschieden 

		  		return 0;		

		}


		for(int s = 0; s < pf.getSpalten(); s++)            //for(int s = 0; s < pf.getSpalten(); s++) 				//Alle Züge durchprobieren

		{		

			if (pf.columnFree(s)) 								//Alle möglichen Züge durchprobieren

			{

				player = player == 1 ? 2 : 1;

				pf.set(s, player);       						//Zug simulieren 

				int value = -negamax(depth-1,-beta,-alpha); 	//Rekursionsaufruf 

				pf.removeHighestField(s);  						//Zug rückgängig machen


				//Betacut

				//if (value >= beta)

				//{

				//	return beta;

				//}

				//Alphacut

				if (value > alpha)

				{

					alpha = value;

					doNext = s;

				}

			}

		}

		return alpha;

	}

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...