Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.13;
Скачать: CL | DM;

Вниз

положение в массиве   Найти похожие ветки 

 
картограф ©   (2005-10-25 10:07) [0]

Здравствуйте!
Мне нужно проверить как расположены элементы в массиве: три в одну строчку, в столбик, по диагонале и т.д.(как в крестика-ноликах).
if pole[i,j]="0" and pole[i+1,j]="0" and pole[i+2,j]="0" then pobeda:= true;
if pole[i,j]="0" and pole[i,j+1]="0" and pole[i,j+2]="0" then pobeda:= true;
if pole[i,j]="0" and pole[i-1,j-1]="0" and pole[i-2,j-2]="0" then pobeda:= true;
и так далее, рассматривая все случаи.
Но при таком условии иногда индекс выходит за границы массива( когда i=j=1 и проверяется условие 3) и происходит ошибка.
Каким образом можно проверить требуемое условие и избежать этой ошибки? Или придумать другой алгоритм проверки?
Надеюсь на Вашу помошь.


 
Kot Andrei ©   (2005-10-25 10:21) [1]

>>Или придумать другой алгоритм проверки?

да, думаю это поможет...


 
картограф ©   (2005-10-25 10:42) [2]

а по какоми принципу проверять условие? с чего начать?
пожалуйста, подскажите...


 
clickmaker ©   (2005-10-25 12:53) [3]

http://www.yandex.ru/yandsearch?text=%EA%F0%E5%F1%F2%E8%EA%E8+%ED%EE%EB%E8%EA%E8+%E0%EB%E3%EE%F0%E8%F2%EC&stype=www


 
картограф ©   (2005-10-25 15:04) [4]

из всего найденого, понял что для моей цели нужно:
 const
 lin : array[1..8,1..3] of byte =
       ((1,2,3),(4,5,6),(7,8,9),
        (1,4,7),(2,5,8),(3,6,9),
        (1,5,9),(3,5,7));


Вот эта функция:
function Fin(pos: position)
var
  ni,sa,so,i,j,sj,res:byte;
begin
ni:=5;
res:=0;
for i:=1 to 8 do begin
  sa:=5;so:=0;li[i]:=0;
  for j:=1 to 3 do begin
    sj:=pos[lin[i,j]];
    sa := sa and sj;
    so := so or sj;
    li[i] := li[i] + sj
  end;
  res := res or sa;
  ni := ni and so
end;
if ni=5 then res:=3;
Fin:=res
end;

Видно, что выходными значениями этой функции являются:
1 - победа крестиков;
4 - победа ноликов;
3 - ничья;
0 - игра не окончена.
Глобальный массив li: array [1..8] of byte для определения признаков окончания игры не нужен. В нем предварительно готовятся данные (суммы значений фигур по каждому ряду) для дальнейшего определения рейтингов полей."

но, если можно, хоть немного пояснейи к этому... Все же когда-то были новичками...



Страницы: 1 вся ветка

Текущий архив: 2005.11.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
14-1129842962
Ломброзо
2005-10-21 01:16
2005.11.13
Нордическая музыка


8-1110227158
Sash1988
2005-03-07 23:25
2005.11.13
Графика в OpenGL


14-1129821760
BerkeleyMan
2005-10-20 19:22
2005.11.13
Посоветуйте программу (Audio CD -> MP3)


4-1125673317
Суслик
2005-09-02 19:01
2005.11.13
Вопрос про GetDC


2-1129991572
MakedoneZ
2005-10-22 18:32
2005.11.13
Изменение типа указателя.