Имя: Пароль:
1C
1C 7.7
v7: Где ошибка в алгоритме?
,
0 s-pc
 
22.08.11
11:23
Видимо, следует предупредить. Я НЕ программист. Потому, будьте, пожалуйста, снисходительны ;-)
А вопрос такой:

Вот в свою "дебютную" программку (Игра - "Крестики Нолики") вставил вот этот алгоритм, который взял из абсолютно рабочей программы.
Правда, в той программе результат вычислялся в Функции и передавался в переменную.
А у меня тут "то же самое", но в Процедуре.
Так вот - у меня компьютер то жмет нужную клавишу (т.е. ставит в нужное поле свой крестики или нолик), то ничего никуда не ставит.
Подскажите, пожалуйста, мою ошибку и... если возможно, на бытовом языке, мол... " у тебя компьютер в этой Процедуре делает то-то, а нужно чтобы он еще сделал вот это".. ну вот как то так...
к1,к2.... к9 - это, естественно, сами кнопки игрового поля

к1 | к2 | к3
к4 | к5 | к6
к7 | к8 | к9

Подскажете?
===
Процедура ХодКомпьютера()
Если (к1=к2) и (к1=к3) и (к1="") Тогда Жмем(к1);                                        
ИначеЕсли (к4=к5) и (к4=к6) и (к4="") Тогда Жмем(к4);                                        
ИначеЕсли (к7=к8) и (к7=к9) и (к7="") Тогда Жмем(к7);                                          
ИначеЕсли (к1=к4) и (к1=к7) и (к1="") Тогда Жмем(к1);                                        
ИначеЕсли (к2=к5) и (к2=к8) и (к2="") Тогда Жмем(к2);                                        
ИначеЕсли (к3=к6) и (к3=к9) и (к3="") Тогда Жмем(к3);                                        
ИначеЕсли (к1=к5) и (к1=к9) и (к1="") Тогда Жмем(к1);                                        
ИначеЕсли (к3=к5) и (к3=к7) и (к3="") Тогда Жмем(к3);    
КонецПроцедуры
1 Ёпрст
 
22.08.11
11:25
Не подскажем.

Ты сам то понимаешь то, что спрашиваешь?
2 Lepochkin
 
22.08.11
11:27
к1,к2... - это идентификаторы кнопки???
3 kosts
 
22.08.11
11:31
(0) Ветка "иначе" где?
4 s-pc
 
22.08.11
11:34
Ой! Правда в вопросе напортачил. И в код не все скопировалось.
Ну вобщем так:
У меня код по-другому совсем выглядит, я просто хотел (для вопроса) его максимально упростить.. не получилось... :-)

Вобщем, вот мой реальный код:

Процедура ХодКомпьютера()
   ХОХ = "О";
   Если (Форма.к1.Заголовок()=Форма.к2.Заголовок()) И (Форма.к1.Заголовок()=Форма.к3.Заголовок()) И (Форма.к1.Заголовок()="")  Тогда Форма.к1.Заголовок(ХОХ);  
       ИначеЕсли (Форма.к4.Заголовок()=Форма.к5.Заголовок()) И (Форма.к4.Заголовок()=Форма.к6.Заголовок()) И (Форма.к4.Заголовок()="")  Тогда Форма.к4.Заголовок(ХОХ);
       ИначеЕсли (Форма.к7.Заголовок()=Форма.к8.Заголовок()) И (Форма.к7.Заголовок()=Форма.к9.Заголовок()) И (Форма.к7.Заголовок()="")  Тогда Форма.к7.Заголовок(ХОХ);
       ИначеЕсли (Форма.к1.Заголовок()=Форма.к4.Заголовок()) И (Форма.к1.Заголовок()=Форма.к7.Заголовок()) И (Форма.к1.Заголовок()="")  Тогда Форма.к1.Заголовок(ХОХ);
       ИначеЕсли (Форма.к2.Заголовок()=Форма.к5.Заголовок()) И (Форма.к2.Заголовок()=Форма.к8.Заголовок()) И (Форма.к2.Заголовок()="")  Тогда Форма.к2.Заголовок(ХОХ);
       ИначеЕсли (Форма.к3.Заголовок()=Форма.к6.Заголовок()) И (Форма.к3.Заголовок()=Форма.к9.Заголовок()) И (Форма.к3.Заголовок()="")  Тогда Форма.к3.Заголовок(ХОХ);
       ИначеЕсли (Форма.к1.Заголовок()=Форма.к5.Заголовок()) И (Форма.к1.Заголовок()=Форма.к9.Заголовок()) И (Форма.к1.Заголовок()="")  Тогда Форма.к1.Заголовок(ХОХ);
       ИначеЕсли (Форма.к3.Заголовок()=Форма.к5.Заголовок()) И (Форма.к3.Заголовок()=Форма.к7.Заголовок()) И (Форма.к3.Заголовок()="")  Тогда Форма.к3.Заголовок(ХОХ);
   КонецЕсли;
КонецПроцедуры
5 Жан Пердежон
 
22.08.11
11:37
(4) видимо не все варианты состояний перебираются
6 Жан Пердежон
 
22.08.11
11:42
(4) твой алгоритм ставит ХОХ в пустую линию, если такой линии нет, то и хода комп не делает
7 s-pc
 
22.08.11
11:54
(5) (6) БЛАГОДАРЮ!!! Так оно и есть! :-)
8 Злопчинский
 
22.08.11
12:30
программировать игру в крестики-нолики тупым перебором - это афигеть. в качестве учебы - возьми крестики нолики на доске 10-на-10 и попрограммируй...
9 s-pc
 
22.08.11
12:42
(8) Ну это, собственно, и была первая фраза второго урока моего виртуального учителя (ну такой видеокурс по программированию "для чайников") - почти слово в слово! :-)))))  Да и в первом уроке, пока он все на примере крестиков-ноликов и этого алгоритма показывал он раз 10 дико извинился и предупредил, что мол - не дай Бог вам вот так писать программы, но, мол, что с вами поделать, если мы пока только с тремя операторами познакомились...
Сейчас вот прохожу второй урок и... он тут объясняет практически то же самое, что мне на Мисте уже подсказали. Да, и кстати про "Крестики нолики на бесконечном поле" тоже упомянул. ;-)
А программа получилась вполне работоспособной - только компьютер в ней такой тупой! :))) Я его уже раз десять обыграл! :-)))))))))))))))))))))))))
10 Ёпрст
 
22.08.11
12:46
(9)выиграй у тупого рандома, хотя бы 500$
http://infostart.ru/public/16423/
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший