Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу крестики нолики на Visual Prolog 7.2 Помогите пожалуйста решить задачу!
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Дмитрий) Дмитрий) вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.06.2011
Exclamation крестики нолики на Visual Prolog 7.2 Помогите пожалуйста решить задачу! - 02.06.2011, 20:39

Собственно нужно крестики нолики реализованные именно в Visual Prolog 7.2, находил примеры написанные на турбо прологе, 5.2., но нужно 7.2. Очень прошу помочь) Заранее благодарен.
Ответить с цитированием
  (#2 (permalink)) Старый
Дмитрий) Дмитрий) вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.06.2011
По умолчанию 03.06.2011, 13:18

ребят, кто сможет помочь? очень надо...
Ответить с цитированием
  (#3 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,955
Сказал(а) спасибо: 2
Поблагодарили 302 раз(а) в 302 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 03.06.2011, 15:14

1. Берёте прогу из VIP5 и переделываете на VIP7.
2. Представлете здесь свой исходник (если он не заработал).
3. Задаёте конкретные вопросы.
4. Получаете конкретные ответы.
Ответить с цитированием
  (#4 (permalink)) Старый
Дмитрий) Дмитрий) вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.06.2011
По умолчанию 05.06.2011, 13:48

а как переделать с VIP5 на VIP7 ? Я в прологе вообще 0((( Код с VIP5 есть
Ответить с цитированием
  (#5 (permalink)) Старый
Дмитрий) Дмитрий) вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.06.2011
По умолчанию 06.06.2011, 17:52

вот код. Как на 7.2 переделать(( Помогите, завтра сдавать уже(((

facts
z(integer,integer,symbol) % база фактов, куда добавляются assert'ом
% и откуда удаляются restract'ом конкретные значения на поле
predicates
картинка % КООРДИНАТЫ ПОЛЯ В МОЕМ ПОНИМАНИИ
ход(integer,symbol,symbol) % 11 12 13
блок(symbol,symbol) % 21 22 23
атака(symbol,symbol) % 31 32 33
чем(integer,symbol)
наоб(symbol,symbol)
goal
write("Кто ходит первым? (1 - человек, 0 - компьютер) "), readint(Игрок),
write("чем? (1 - крестиками, 0 - ноликами) "),readint(N),
чем(N,И1),наоб(И1,И2), ход(Игрок,И1,И2), !,
nl,nl; write("Правила нарушены.\n"). %понятно вроде б,
% но почему именно эти строки являются GOAL'ом? =(
% >> А что Вы можете предложить вместо этого?
clauses
% изначальное пустое поле, заполненное дефисами, >> чтобы отображать их на поле
z(1,1,"-"). z(1,2,"-"). z(1,3,"-"). z(2,1,"-"). z(2,2,"-").
z(2,3,"-"). z(3,1,"-"). z(3,2,"-"). z(3,3,"-").

% >> выбор символа - кто чем ходит, кто крестиками, а кто ноликами
чем(1,х). чем(0,о). наоб(х,о). наоб(о,х).

ход(0,S,_):- блок(S,S), !, картинка, write("\nКомпьютер выиграл!").
%условие выигрыша компом (но почему такое????) >> т.к. три знака компа в ряд стоят
ход(0,S,C):- блок(S,C), !, картинка, ход(1,C,S). % комп блокирует угрозу, картинка, переход хода к юзеру
ход(0,S,C):-
retract(z(2,2,"-")), !, assert(z(2,2,S)), %если есть возможность сходить в центр - комп ходит в центр,
картинка, ход(1,C,S). % картинка, переход хода к юзеру
ход(0,S,C):- атака(S,C), !, % если нет угрозы - комп атакует, картинка, переход хода к юзеру
картинка,ход(1,C,S).
% >> имеется в виду атака со стороны противника - комп не дает ставить вилки

% если есть возможность сходить в 31 22 13 (побочная диагональ) - комп ходит туда
% >> нет, он ходит в первый попавшийся свободный угол
ход(0,S,C):- z(R,St,"-"), (R+St) mod 2=0, retract(z(R,St,"-")), !,
assert(z(R,St,S)), картинка, ход(1,C,S).
ход(0,S,C):- retract(z(R,St,"-")), !, assert(z(R,St,S)),
%???"нет угроз и условий атаки - ходим куда угодно"???? ,
% >> и еще нет свободных углов - это ход на сторону
картинка,ход(1,C,S). % картинка, переход хода к юзеру
ход(1,C,S):- z(_,_,"-"),write("Ходи: \ncтрока (от 1 до 3) - "),
readint(R),R>0,R<4,write("cтолбец (от 1 до 3) - "),
readint(St),St>0,St<4,retract(z(R,St,"-")),!,
assert(z(R,St,C)),ход(0,S,C). %сценарий хода юзера, переход хода к компу
ход(_,_,_):- not(z(_,_,"-")), write("\nНичья!"). %условие ничьей

блок(S,C):- z(N1,St,C),z(N2,St,C),N1<>N2,
retract(z(N3,St,"-")), !, assert(z(N3,St,S)); %проверка угрозы в столбцах
z(R,N1,C),z(R,N2,C),N1<>N2,retract(z(R,N3,"-")),!,
assert(z(R,N3,S)); %проверка угрозы в строках
z(I,I1,C),I=I1,z(J,J1,C),J=J1,I<>J, z(K,K1,"-"),
K=K1, retract(z(K,K1,"-")),!,assert(z(K,K1,S)); %проверка угрозы в главной диагонали (клетки 11-33)
z(I,J,C),I+J=4,z(N,K,C),N<>I,N+K=4, z(M,L,"-"), M+L=4,
retract(z(M,L,"-")), !, assert(z(M,L,S)). %проверка угрозы в побочной диагонали (клетки 31-13)

атака(S,C):-
%если где-то на 1 строке и 3 строке занято юзером - комп ставит в 21
z(1,_,C),z(3,_,C),z(2,1,"-"),
retract(z(2,1,"-")), !, assert(z(2,1,S));
%если где-то на 3 строке и 3 столбце занято юзером - комп ставит в 33
z(3,_,C),z(_,3,C),z(3,3,"-"),
retract(z(3,3,"-")), !, assert(z(3,3,S)).

картинка:- z(1,1,S1), z(1,2,S2), z(1,3,S3), z(2,1,S4),
z(2,2,S5),z(2,3,S6),z(3,1,S7),z(3,2,S8),
z(3,3,S9), !, write("\nХод компьютера.\n\n"),
writef("\t%\t%\t%\n\t%\t%\t%\n\t%\t%\t%\n\n",
S1,S2,S3,S4,S5,S6,S7,S8,S9).
%????вывод картинки и всё????
% >> Да, этот предикат просто выводит картинку - текущее состояние
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите решить задачу в prolog!!! outdreams Вопросы начинающих программистов 2 31.01.2014 00:46
Помогите пожалуйста решить задачу в С++ samuelson Вопросы начинающих программистов 0 27.10.2011 11:19
помогите решить задачу на Visual Prolog 7.2 ПОЖАЛУЙСТА!!! Валёк Prolog 13 02.06.2011 01:24
пожалуйста помогите решить задачу!!!! imported_Надюша Pascal 1 29.05.2011 02:24
крестики нолики в turbo prolog AV57 Prolog 0 16.01.2011 12:00
Помогите переделать задачу из Turbo Prolog в Visual Prolog 5 imported_Anneta Prolog 3 23.12.2010 22:59
пожалуйста помогите решить задачу. swetry Prolog 1 13.12.2010 13:24
помогите пожалуйста решить задачу Nimfetka Prolog 11 20.12.2007 19:18
Помогите пожалуйста решить задачу tattsar Pascal 3 30.05.2007 11:58
крестики-нолики для Turbo-Prolog 2.0 studEN Prolog 4 25.12.2006 14:34
Крестики-нолики на Prolog Nancy_Dildo Prolog 3 22.05.2005 18:09
Как решить задачу на Visual Prolog Alexdouble Prolog 1 04.12.2004 09:33



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов