Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
картограф ©   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.042 c
3-1128058553
Ruslan D
2005-09-30 09:35
2005.11.13
несколько DBdataset в FastReport 3


3-1127822146
VitGun
2005-09-27 15:55
2005.11.13
База Paradox и DOS-приложение


3-1128508944
dragon_dp
2005-10-05 14:42
2005.11.13
Как узнать существует ли таблица в БД?


2-1130323509
SamProf
2005-10-26 14:45
2005.11.13
Как забить THread?


14-1130067567
alexsis
2005-10-23 15:39
2005.11.13
Rambler & Yandex





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский