Я пытался внедрить минимальный алгоритм для Tic-tac-toe, основанный на некоторых из моих университетских лекций. Иметь минимальное значение 0 в соответствии с моим алгоритмом, хотя я знаю, что это более благоприятный, бот нет. Я попытался настраивать его, чтобы сделать это так, чтобы потери были в значительной степени оштрафованы, но это не влияет. Мне было интересно, есть ли способы проверить минимальное значение любого данного состояния TIC-TAC-TOE. = "Lang-None PrettyPrint-Override">X . O
. . .
. . .
< /code>
...is равен 0 < /p>
и значение состояния: < /p>
X . .
. O .
. . .
< /code>
.... Также равно 0 < /p>
Здесь X играет первым, а O играет бот. +10 для победы, 0 для розыгрыша и -10 за потерю. быть избитым 100% времени, тогда как второе состояние (не производится, поскольку нет очевидной причины, чтобы одобрить его) настроили бы его, чтобы всегда выигрывать или рисовать, и, следовательно, следует выбрать. < /p>
Используется алгоритм: < /p>
private int minimaxValue(BoardTree state, bool minimising)
{
// Minimise means opt for lowest score, noughts win = +10, draw = 0, cross win = -10
if (state.successiveMoves.Count == 0)
{
if (state.Board.gameDrawnFlag) return DRAW_VAL;
switch (state.Board.winner)
{
case TicTacToeBoard.Player.Cross: return LOSE_VAL;
case TicTacToeBoard.Player.Nought: return WIN_VAL;
}
}
if (minimising)
{
int lowestValue = minimaxValue(state.successiveMoves[0], !minimising); // Get an initial value
for (int i = 1; i < state.successiveMoves.Count; i++)
{
int val = minimaxValue(state.successiveMoves, !minimising); // Check each state, maximised this time
if (val < lowestValue)
{
lowestValue = val; // Find the lowest value from the list
}
}
return lowestValue;
}
else // Maximising
{
int highestValue = minimaxValue(state.successiveMoves[0], !minimising); // Initial base comparison value
for (int i = 1; i < state.successiveMoves.Count; i++)
{
int val = minimaxValue(state.successiveMoves, !minimising); // Check each state, minimised this time
if (val > highestValue)
{
highestValue = val;
}
}
return highestValue;
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... -algorithm
Tic-Tac-Toe Algorithm ⇐ C#
Место общения программистов C#
1739297969
Anonymous
Я пытался внедрить минимальный алгоритм для Tic-tac-toe, основанный на некоторых из моих университетских лекций. Иметь минимальное значение 0 в соответствии с моим алгоритмом, хотя я знаю, что это более благоприятный, бот нет. Я попытался настраивать его, чтобы сделать это так, чтобы потери были в значительной степени оштрафованы, но это не влияет. Мне было интересно, есть ли способы проверить минимальное значение любого данного состояния TIC-TAC-TOE. = "Lang-None PrettyPrint-Override">X . O
. . .
. . .
< /code>
...is равен 0 < /p>
и значение состояния: < /p>
X . .
. O .
. . .
< /code>
.... Также равно 0 < /p>
Здесь X играет первым, а O играет бот. +10 для победы, 0 для розыгрыша и -10 за потерю. быть избитым 100% времени, тогда как второе состояние (не производится, поскольку нет очевидной причины, чтобы одобрить его) настроили бы его, чтобы всегда выигрывать или рисовать, и, следовательно, следует выбрать. < /p>
Используется алгоритм: < /p>
private int minimaxValue(BoardTree state, bool minimising)
{
// Minimise means opt for lowest score, noughts win = +10, draw = 0, cross win = -10
if (state.successiveMoves.Count == 0)
{
if (state.Board.gameDrawnFlag) return DRAW_VAL;
switch (state.Board.winner)
{
case TicTacToeBoard.Player.Cross: return LOSE_VAL;
case TicTacToeBoard.Player.Nought: return WIN_VAL;
}
}
if (minimising)
{
int lowestValue = minimaxValue(state.successiveMoves[0], !minimising); // Get an initial value
for (int i = 1; i < state.successiveMoves.Count; i++)
{
int val = minimaxValue(state.successiveMoves[i], !minimising); // Check each state, maximised this time
if (val < lowestValue)
{
lowestValue = val; // Find the lowest value from the list
}
}
return lowestValue;
}
else // Maximising
{
int highestValue = minimaxValue(state.successiveMoves[0], !minimising); // Initial base comparison value
for (int i = 1; i < state.successiveMoves.Count; i++)
{
int val = minimaxValue(state.successiveMoves[i], !minimising); // Check each state, minimised this time
if (val > highestValue)
{
highestValue = val;
}
}
return highestValue;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79430891/tic-tac-toe-minimax-algorithm[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия