Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

искуственный интеллект для шашек

20K
14 октября 2006 года
vfedorov
2 / / 14.10.2006
Привет
Я ищу исходники алгоритма искуственного интеллекта для игры в шашки
Желательно на С++ или С#
Буду очень благодарен

Владимир
276
20 октября 2006 года
Rebbit
1.1K / / 01.08.2005
Исходников у меня нет, но есть пердложение.
Не желаете посоздавать ИИ для разних логических игор на Сшарп или других .НЕТ языках ?
8.9K
20 октября 2006 года
Kulti
77 / / 29.07.2006
Если это предложение для всех, то я бы с удовольствием. Сейчас как раз с ГА разбираюсь.
276
29 октября 2006 года
Rebbit
1.1K / / 01.08.2005
Я недавно сделал маленькую среду которая динамически подключает игру в виде ДЛЛ-ки, и игроков также. Предлагаю определится с игрой. Для начала полегче бы, я свой код виложу и можно ДЛЛ-ки делать :)
8.9K
29 октября 2006 года
Kulti
77 / / 29.07.2006
Если я вас правильно понял, то мы пишем каждый свой ИИ, а потом они соревнуюцаа???
Ну, шашки я думаю писать не будем :) Как насчет крестиков ноликов - достаточно просто, что бы потренировацца...
3
29 октября 2006 года
Green
4.8K / / 20.01.2000
У нас такая тема на работе есть.
К сожалению сервер (орбитр) предоставить не могу, но расскажу идею, можно попробовать реализовать.
И так, есть программа "орбитр" запущенная на сервере. Её главная задача следить за правилами игры, учитывать время обдумывания и объявлять (вести таблицу) победителя. Ходы игроков передаются обычными HTTP GET запросами: начальная позиция, конечная позиция (это для шашек). Программы-игроки могут быть написаны на любом языке, главное, чтоб обменивались по единому протоколу.
Ещё устраивают эстафету - программисты разбиваются на команды, команды на микрокоманды. Первой микрокоманде ставится задача, они колбасят код никак не согласовываясь с другой микрокомандой. Потом передают код другой микрокоманде, и те дописывают код в соотв. с изменившимися условиями задачи. Или обе микрокоманды независимо пишут участки кода, а потом его надо свести и заставить работать совместно.

Теперь понятно, откуда у меня такое пристрастие к красивому коду? :)

Самое забавное, когда одна команда пишет на одном языке, а другая - на другом. Например частенько бывает (это иногда выставляется как условие задачи) одна команда пишет на C++, другая на Python. А потом это заставляют работать совместно. Приложите к этому жесткие ограничения по времени, памяти, производительности и получается гремучая смесь. Некоторые за полчаса овладевают новым языком программирования.
89K
01 декабря 2014 года
Forst
1 / / 01.12.2014
Делать искусственный интеллект для шашек способами if или case, а точнее , если проверять ход с базой данных всех вариантов ходов , просто невозможно. Этих вариантов будет тысячи, а на это уйдёт как минимум месяц написания кода.
Теперь такой вопрос- как же пишется искусственный интеллект для шахмат , там вообще миллионы вариантов ходов, и тысячи ветвей от каждого хода.
Значит логично думать что код ,для искусственного интеллекта ,пишется по другому.
И к вам люди такой вопрос - КАК?
Я уже долго пытаюсь написать логику для искусственного интеллекта, единственное что получалось сделать, так это дать понять компьютеру в каком случае бить и в каком нет, но как заставить его самостоятельно делать ход ,основываясь расстановкой фигур на поле, я не знаю.
20K
02 декабря 2014 года
ellor!
198 / / 24.05.2012
Пример ИИ для шахмат на JS. А здесь вообще размер скрипта 1К.

Код:
//(c)2009 Oscar Toledo G.
  var B,i,y,u,b,
      I=[],
      G=120,
      x=10,
      z=15,
      M=1e4,
      l=[5,3,4,6,2,4,3,5,1,1,1,1,1,1,1,1,9,
         9,9,9,9,9,9,9,13,11,12,14,10,12,11,
         13,0,99,0,306,297,495,846,-1,0,1,2,2,1,0,-1,-1,
         1,-10,10,-11,-9,9,11,10,20,-9,-11,-10,-20,
         -21,-19,-12,-8,8,12,19,21];

  function X(w,c,h,e,S,s) {
    var t,o,L,E,d,
      O=e,
      N=-M*M,
      K=78-h<<x,
      p,g,n,m,A,q,r,C,J,
      a=y?-x:x;
    y^=8;
    G++;
    d = w||s&&s>=h&&X(0,0,0,21,0,0)>M;
    do {
      if (o=I[p=O]) {
        q=o&z^y;
        if (q<7) {
          A=q--&2?8:4;
          C=o-9&z?[53,47,61,51,47,47][q]:57;
          do {
            r=I[p+=l[C]];
            if (!w|p==w) {
              g=q|p+a-S?0:S;
              if (!r&(!!q|A<3||!!g)||(r+1&z^y)>9&&q|A>2) {
                if (m=!(r-2&7))
                  return y^=8,I[G--] = O,K;
                J=n=o&z;
                E=I[p-a]&z;
                t=q|E-7?n:(n+=2,6^y);
                while (n<=t) {
                  L=r?l[r&7|32]-h-q:0;
                  if (s)
                    L+=(1-q?l[(p-p%x)/x+37]-l[(O-O%x)/x+37]+
                       l[p%x+38]*(q?1:2)-l[O%x+38]+(o&16)/2:!!m*9)+
                       (!q?!(I[p-1]^n)+!(I[p+1]^n)+l[n&7|32]-99+
                       !!g*99+(A<2):0)+!(E^y^9);
                  if (s>h||1<s&s==h&&L>z|d) {
                    I[p]=n,I[O]=m?(I[g]=I[m],I[m]=0):g?I[g]=0:0;
                    L-=X(s>h|d?0:p,L-N,h+1,I[G+1],J=q|A>1?0:p,s);
                    if (!(h||s-1|B-O|i-n|p-b|L<-M))
                      return W(),G--,u=J;
                    J=q-1|A<7||m||!s|d|r|o<z||X(0,0,0,21,0,0)>M;
                    I[O]=o;
                    I[p]=r;
                    m?(I[m]=I[g],I[g]=0):g?I[g]=9^y:0;
                  }
                  if (L>N||s>1&&L==N&&!h&&Math.random()<.5) {
                    I[G]=O;
                    if (s>1) {
                      if (h&&c-L<0)
                        return y^=8,G--,L;
                      if (!h)
                        i=n,B=O,b=p;
                    }
                    N=L;
                  }
                  n+=J||(g=p,m=p<O?g-3:g+2,I[m]<z|I[m+O-p]||I[p+=p-O])?1:0;
                }
              }
            }
          } while(!r&q>2||(p=O,q|A>2|o>z&!r&&++C*--A));
        }
      }
    } while(++O>98?O=20:e-O);
    return y^=8,G--,N+M*M&&N>-K+1924|d?N:0;
  }

  B=i=y=u=0;
  while (B++<120)
    I[B-1]=B%x?B/x%x<2|B%x<2?7:B/x&4?0:l[i++]|16:7;
  for (a="<table cellspacing=0 align=center>",i=18; i<100;
       a+=++i%10-9 ? "<th width=40 height=40 onclick=Y("+i+
                     ") style='border:2px solid #aae' id=o"+i+" bgcolor=#"+
                     (i*.9&1?"9090d0>":"c0c0ff>")
                   : (i++,"<tr>"));
  a += "<th colspan=8><select id=t><option>Q<option>R<option>B";
  document.write(a+"<option>N</select></table>");

  function W() {
    B=b;
    for (p=21;p<99;++p)
      if (q=document.getElementById("o"+p)) {
        q.innerHTML="<img width=40 src="+(I[p]&z)+".gif>";
        q.style.borderColor=p==B?"#ff0":"#aae";
      }
  }

  W();

  function Y(s) {
    i=(I[s]^y)&z;
    if (i>8) {
      b=s;
      W();
    } else if (B&&i<9) {
      b=s;
      i=I[B]&z;
      if((i&7)==1&(b<29|b>90))
        i=14-document.getElementById("t").selectedIndex^y;
        X(0,0,0,21,u,1);
        if(y)
          setTimeout("X(0,0,0,21,u,2),X(0,0,0,21,u,1)",250);
    }
  }
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог