Игровые программы на Прологе Лекция 15. «Быки и коровы» play :- rnd(X1,X2,X3,X4), int2char(X1,C1), int2char(X2,C2), int2char(X3,C3), int2char(X4,C4),

Презентация:



Advertisements
Похожие презентации
Управление выполнением программы на Прологе Лекция 6.
Advertisements

Директивы компилятора. Рекурсия на Прологе Лекция 4.
УГАДАЙТЕ СЛОВО задание В В О О Р Р О О Б Б Е Е Й Й.
Файлы Лекция 11. План Стандартные устройства Стандартные предикаты по работе с файлами Замена стандартного предиката openread Вывод файла на экран Создание.
Динамические базы данных Лекция 12. План Работа с внутренними (динамическими) базами данных: добавление фактов в базу, удаление фактов из базы Проекты.
Установочная лекция по дисциплине Старший преподаватель каф. ВТ Юлия Вадимовна Новицкая
Тема: Нахождение минимального и максимального элемента в массиве.
Урок русского языка 3 класс. Б К В Т Г П Д Ф Ж С З Ш.
Проверка
Строки Лекция 10. План Стандартные предикаты по работе со строками Преобразование строки в список символов Преобразование списка символов в строку Количество.
Тема 3 Язык программирования ПРОЛОГ. Лабораторное занятие 4 Стандартные предикаты ввода и вывода языка Visual Prolog.
I := 1, 20 вывод В массиве нет числа X PROGRAM VAR, INTEGER Rand FORTO Example2 ; :=:= i 120DO BEGIN WRITE() : ARRAY [ ] OF i ; BEGIN ; : NumberX.
Лекции 8-9
Массивы Массив это величины объединенные общим именем и различаемые порядковыми номерами. Номера называются индексами. В зависимости от количества индексов.
Язык Пролог в качестве языка запросов к параллельной распределённой СУБД.
Деревья Лекция 9. План Принадлежность значения дереву Замена в дереве всех вхождений одного значения на другое Подсчет общего количества вершин дерева.
Проверка домашнего задания по теме «Простейшие задачи в координатах»
Составные типы данных Лекция 8-9. Ломаско Павел Сергеевич9 августа 2012 г.
1 задание 2 задание 3 задание 4 задание 5 задание.
Задание В В 14 0, 5 В Решение: 0 0,5 1 х 4. у, +
Транксрипт:

Игровые программы на Прологе Лекция 15

«Быки и коровы» play :- rnd(X1,X2,X3,X4), int2char(X1,C1), int2char(X2,C2), int2char(X3,C3), int2char(X4,C4), WRITE("Ваши ходы: "),nl, move([C1,C2,C3,C4],1).

Загадывание компьютером числа rnd(X1,X2,X3,X4) :- rand(X1), rand(X2), NOT(find([X1],X2)), rand(X3), NOT(find([X1,X2],X3)), rand(X4), NOT(find([X1,X2,X3],X4)). rnd(X1,X2,X3,X4) :- rnd(X1,X2,X3,X4). rand(X) :- RANDOM(9,X). find([H|_],H). find([_|T],X):- find(T,X). int2char(I,C) :- str_int(S,I), str_char(S,C).

Подсчет попыток move(L,Moves) :- specmove(L,A,Moves), equal(L,A), nl, write(Поздравляю!!! Вы угадали!"). move([C1,C2,C3,C4],10) :- NL, write("Количество попыток закончилось."),nl, write("Было загадано число "), write(C1), write(C2), write(C3), write(C4). move(L,Moves) :- NewMoves=Moves+1, move(L,NewMoves).

Проверка попытки specmove(L,[A1,A2,A3,A4],Moves) :- write(Moves), write(". "), readchar(A1), write(A1), readchar (A2), write(A2), readchar (A3), write(A3), readchar (A4), write(A4), check_bulls(L,[A1,A2,A3,A4],0), check_cows(L,[A1,A2,A3,A4],0), nl,!.

Проверка быков check_bulls([],_,Bulls):- write(Bulls), write(" : "). check_bulls([H1|T1],T2,Bulls) :- find(T2,H1), NewBulls=Bulls+1, check_bulls(T1,T2,NewBulls). check_bulls([_|T1],T2,Bulls) :- check_bulls(T1,T2,Bulls).

Проверка коров check_cows([],[],Cows) :- write(Cows). check_cows([H1|T1],[H1|T2],Cows):- NewCows=Cows+1, check_cows(T1,T2,NewCows). check_cows([_|T1],[_|T2],Cows):- check_cows(T1,T2,Cows).

Остальные разделы DOMAINS LIST=CHAR* PREDICATES nondeterm check_cows(LIST,LIST,INTEGER) nondeterm check_bulls(LIST,LIST,INTEGER) nondeterm rand(INTEGER) nondeterm rnd(INTEGER,INTEGER,INTEGER,INTEGER) nondeterm find(LIST,INTEGER) nondeterm int2char(INTEGER,CHAR) nondeterm specmove(LIST,LIST,INTEGER) nondeterm move(LIST,INTEGER) nondeterm play nondeterm equal(LIST,LIST) GOAL play.

Самостоятельное задание Модифицировать программу так, чтобы она работала еще во втором режиме «Машина - человек», т.е. чтобы человек загадывал число, а компьютер отгадывал его.