Крестики-нолики на Delphi |
Здравствуйте, гость ( Вход | Регистрация )
Крестики-нолики на Delphi |
Mar 4 2007, 21:14
Сообщение
#1
|
|
Member Группа: Members Сообщений: 53 Регистрация: 25.11.2006 Пользователь №: 26681 |
Вопщем нужна помощь с алгоритмом. Никак не могу найти подходящего. Нужен алгоритм для реализации бота для игры крестики-нолики на Delphi. Поле 40х40, пять в ряд (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif) Кто-нить может помочь? =)
|
|
|
Mar 5 2007, 03:37
Сообщение
#2
|
|
Grand Member Группа: Members Сообщений: 292 Регистрация: 25.12.2005 Пользователь №: 29040 |
Цитата(Splend;31419) Вопщем нужна помощь с алгоритмом. Никак не могу найти подходящего. Нужен алгоритм для реализации бота для игры крестики-нолики на Delphi. Поле 40х40, пять в ряд (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif) Кто-нить может помочь? =)
Так с наскока поискал: http://www.torry.ru/apps/games/representations/puzz.zip http://delphiforfun.org/Programs/tic_tac_toc_machine.htm http://www.planetsourcecode.com/vb/scripts...=10450&lngWId=3 [на С++, но алгоритм подправить труда я думаю не составит] |
|
|
Mar 6 2007, 23:44
Сообщение
#3
|
|
Advanced Member Группа: Members Сообщений: 168 Регистрация: 13.9.2006 Пользователь №: 26251 |
Splend, ты с помощью канваса делаешь?
|
|
|
Mar 7 2007, 12:58
Сообщение
#4
|
|
Member Группа: Members Сообщений: 53 Регистрация: 25.11.2006 Пользователь №: 26681 |
Alder, спасибо))) но это не совсем то))) таких сайтов я тоже много нашел. Я хотел найти конкретно по пунктам алгоритм оценки клетки.
@ндрюха!, мне нужен только алгоритм бота) реализация - не проблема) |
|
|
Mar 8 2007, 20:42
Сообщение
#5
|
|
Grand Member Группа: Members Сообщений: 292 Регистрация: 25.12.2005 Пользователь №: 29040 |
Цитата(Splend;31491) ...алгоритм оценки клетки.
А..Ну так бы сразу и сказал (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif) Я думал тебе весь алгоритм нужен. Поищу... З.Ы. С/С++ понимаешь,если что? |
|
|
Mar 8 2007, 21:53
Сообщение
#6
|
|
Grand Member Группа: Members Сообщений: 435 Регистрация: 27.8.2005 Пользователь №: 1993 |
|
|
|
Mar 9 2007, 00:05
Сообщение
#7
|
|
Member Группа: Members Сообщений: 53 Регистрация: 25.11.2006 Пользователь №: 26681 |
Alder, в том то и проблема))) Везде алгоритмы такие: примените ко всем пустым клеткам оценочную функцию и выберите клетку с наибольшем значением этой функции. А эту функцию придумайте сами)
А в С/С++ коде я разберусь))) Bender, там вроде алгоритм только для поля 3x3 ))) Хотелось бы побольше))) |
|
|
Mar 9 2007, 01:40
Сообщение
#8
|
|
Advanced Member Группа: Members Сообщений: 168 Регистрация: 13.9.2006 Пользователь №: 26251 |
Splend, вообще реализация реального бота с которым можно играть тебе очь дорого обойдеццо. Тяжело оч сделать номаного! А не проше сделать игру по сети, найти кого нить кто хорошо играет и на пиво играть? интереснее же будетЪ! да и по сети по ходу легче сделать
|
|
|
Mar 9 2007, 15:35
Сообщение
#9
|
|
Member Группа: Members Сообщений: 53 Регистрация: 25.11.2006 Пользователь №: 26681 |
@ндрюха!, Пиво рулит))) Но мне типа на дом задано написать модуль бота. И это же задано остальному классу))) Потом этих ботов подключают к программе-визуализатору, и они соревнуются)))
|
|
|
Mar 11 2007, 16:07
Сообщение
#10
|
|
Grand Member Группа: Members Сообщений: 292 Регистрация: 25.12.2005 Пользователь №: 29040 |
Вот еще нарыл:
http://davesource.com/Projects/Tic/tictactoe.c (англ.,прога+описание алгоритма) |
|
|
Mar 14 2007, 13:46
Сообщение
#11
|
|
Member Группа: Members Сообщений: 53 Регистрация: 25.11.2006 Пользователь №: 26681 |
Спасибо всем кто помогал =) +репы всем ))) Я уже написал, сдал, получил 4 =)
ЗЫ тему можно закрыть ))) |
|
|
Mar 14 2007, 20:57
Сообщение
#12
|
|
Grand Member Группа: Members Сообщений: 292 Регистрация: 25.12.2005 Пользователь №: 29040 |
Цитата(Splend;31718) Спасибо всем кто помогал =) +репы всем ))) Я уже написал, сдал, получил 4 =)
ЗЫ тему можно закрыть ))) Делись алгоритмом своим (IMG:http://forum.iseekyou.im/style_emoticons/default/wink.gif) Или скажи на основе какого материала делал |
|
|
Mar 15 2007, 00:33
Сообщение
#13
|
|
Advanced Member Группа: Members Сообщений: 168 Регистрация: 13.9.2006 Пользователь №: 26251 |
Цитата(Splend;31718) Спасибо всем кто помогал =) +репы всем ))) Я уже написал, сдал, получил 4 =) ЗЫ тему можно закрыть ))) А где это ТАКОЕ задают? |
|
|
Mar 15 2007, 14:19
Сообщение
#14
|
|
Member Группа: Members Сообщений: 53 Регистрация: 25.11.2006 Пользователь №: 26681 |
Код unit anatoly;
uses gamer; interface procedure anatoly_step (field : matrix; who : byte; var x, y : byte); implementation procedure anatoly_step; var i, j : byte; n : array [1..8] of byte; m : array [1..8] of byte; s, e : integer; max : real; t, h : byte; begin randomize; for j := 1 to 40 do begin for i := 1 to 40 do begin if field[i, j] = 2 then begin //**************Оценка собственной выгоды**************** n[1] := 1; while (field[i+n[1],j-n[1]] = who) and (i+n[1]<=40) and (j-n[1]>0) do n[1]:=n[1]+1; n[2] := 1; while (field[i-n[2],j+n[2]] = who) and (i-n[2]>0) and (j+n[2]<=40) do n[2]:=n[2]+1; n[3] := 1; while (field[i-n[3],j-n[3]] = who) and (i-n[3]>0) and (j-n[3]>0) do n[3]:=n[3]+1; n[4] := 1; while (field[i+n[4],j+n[4]] = who) and (i+n[4]<=40) and (j+n[4]<=40) do n[4]:=n[4]+1; n[5] := 1; while (field[i-n[5],j] = who) and (i-n[5]>0) do n[5]:=n[5]+1; n[6] := 1; while (field[i+n[6],j] = who) and (i+n[6]<=40) do n[6]:=n[6]+1; n[7] := 1; while (field[i,j-n[7]] = who) and (j-n[7]>0) do n[7]:=n[7]+1; n[8] := 1; while (field[i,j+n[8]] = who) and (j+n[8]<=40) do n[8]:=n[8]+1; n[1]:=n[1]+n[2]-1; n[3]:=n[3]+n[4]-1; n[5]:=n[5]+n[6]-1; n[7]:=n[7]+n[8]-1; if (n[1] >= 5) or (n[3] >= 5) or (n[5] >= 5) or (n[7] >= 5) then begin max := 1000; x := i; y := j; end; s := n[1]*n[1] + n[3]*n[3]+ n[5]*n[5]+ n[7]*n[7]; //**************Оценка выгоды противника**************** m[1] := 1; while (field[i+m[1],j-m[1]] <> 2)and(field[i+m[1],j-m[1]] <> who) and (i+m[1]<=40) and (j-m[1]>0) do m[1]:=m[1]+1; m[2] := 1; while (field[i-m[2],j+m[2]] <> 2)and(field[i-m[2],j+m[2]] <> who) and (i-m[2]>0) and (j+m[2]<=40) do m[2]:=m[2]+1; m[3] := 1; while (field[i-m[3],j-m[3]] <> 2)and(field[i-m[3],j-m[3]] <> who) and (i-m[3]>0) and (j-m[3]>0) do m[3]:=m[3]+1; m[4] := 1; while (field[i+m[4],j+m[4]] <> 2)and(field[i+m[4],j+m[4]] <> who) and (i+m[4]<=40) and (j+m[4]<=40) do m[4]:=m[4]+1; m[5] := 1; while (field[i-m[5],j] <> 2)and(field[i-m[5],j] <> who) and (i-m[5]>0) do m[5]:=m[5]+1; m[6] := 1; while (field[i+m[6],j] <> 2)and(field[i+m[6],j] <> who) and (i+m[6]<=40) do m[6]:=m[6]+1; m[7] := 1; while (field[i,j-m[7]] <> 2)and(field[i,j-m[7]] <> who) and (j-m[7]>0) do m[7]:=m[7]+1; m[8] := 1; while (field[i,j+m[8]] <> 2)and(field[i,j+m[8]] <> who) and (j+m[8]<=40) do m[8]:=m[8]+1; m[1]:=m[1]+m[2]-1; m[3]:=m[3]+m[4]-1; m[5]:=m[5]+m[6]-1; m[7]:=m[7]+m[8]-1; if ((m[1] >= 4) or (m[3] >= 4) or (m[5] >= 4) or (m[7] >= 4))and (max<>1000) then begin max := 500; x := i; y := j; end; e := m[1]*m[1] + m[3]*m[3]+ m[5]*m[5]+ m[7]*m[7]; //****************************************************** if max < s + 0.8 * e then begin x := i; y := j; max := s + 0.8*e; end; end; s := 0; e := 0; n[1]:=0; n[2]:=0; n[3]:=0; n[4]:=0; n[5]:=0; n[6]:=0; n[7]:=0; n[8]:=0; end; // for i := 1 end; // for j := 1 if max < 8 then begin repeat x := random(39)+1; y := random(39)+1; until field[x, y] = 2; end; end; //anatoly_step end. Вот что от меня требовалось ))) Примерную идею взял отсюда. Просто для каждой клетки считал сумму квадратов длин рядов, которые получатся, если сюда ставим и крестик, и нолик, и выбирал клетку с наибольшим значением. Вот ))) А учусь я (не сочтите за понты (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif) ) в лучшей физико-технической школе Питера (м.б. даже и России)))) ЗЫ Еще раз всем спасибо (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif) |
|
|
Mar 16 2007, 01:49
Сообщение
#15
|
|
Advanced Member Группа: Members Сообщений: 168 Регистрация: 13.9.2006 Пользователь №: 26251 |
Splend а кем ты будеш в будуюшем?
физико=техником чель? эт че за профессия? че делать в будующем? |
|
|
Mar 16 2007, 08:13
Сообщение
#16
|
|
Member Группа: Members Сообщений: 53 Регистрация: 25.11.2006 Пользователь №: 26681 |
Ну как... Это я учусь в школе с конкретным уклоном в сторону там физики, математики, программирования и английского. А дальше могу пойти на любой технический факультет, на любую специальность, которая греет: программист, связист, инженер и т.д. по списку... да хоть космонавт))) (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif)
|
|
|
Mar 17 2007, 01:32
Сообщение
#17
|
|
Grand Member Группа: Members Сообщений: 292 Регистрация: 25.12.2005 Пользователь №: 29040 |
за алгоритм +1 (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif)
|
|
|
Mar 18 2007, 19:40
Сообщение
#18
|
|
Member Группа: Members Сообщений: 53 Регистрация: 25.11.2006 Пользователь №: 26681 |
|
|
|
Oct 12 2009, 11:40
Сообщение
#19
|
|
Junior Member Группа: Members Сообщений: 11 Регистрация: 12.9.2009 Из: Russia Пользователь №: 30418 |
Очень нужна игра на языке Си не си крестики нолики на бесконечность, выигрыш 5 в ряд, игра с интелектуальным компом тобишь чтобы он не рандомом ставил, на СИ под DOS. Может у кого есть или кто нить сможет написать? в инете полазил, вроде ничего рабочего не нашёл. заранее спасибо
|
|
|
Текстовая версия | Сейчас: 1st January 2025 - 17:55 |