Docsity
Docsity

Подготовься к экзаменам
Подготовься к экзаменам

Учись благодаря многочисленным ресурсам, которые есть на Docsity


Получи баллы для скачивания
Получи баллы для скачивания

Заработай баллы, помогая другим студентам, или приобретай их по тарифом Премиум


Руководства и советы
Руководства и советы

Система искусственного интеллекта контрольная 2010 по информатике , Экзамены из Информатика

Система искусственного интеллекта контрольная 2010 по информатике

Вид: Экзамены

2016/2017

Загружен 12.04.2017

refbank5226
refbank5226 🇷🇺

5

(1)

10 документы

1 / 17

Toggle sidebar

Сопутствующие документы


Частичный предварительный просмотр текста

Скачай Система искусственного интеллекта контрольная 2010 по информатике и еще Экзамены в формате PDF Информатика только на Docsity! Федеральное агентство по образованию Государственное образовательное учреждение Высшего профессионального образования Камская государственная инжинерно-экономическая академия Кафедра «ПИУ» Контрольная работа по дисциплине «Система искусственного интеллекта» на тему: игра «Крестики-нолики» Выполнила: студентка гр. 4468-с Рысева Татьяна Александровна Проверил: Калимуллин А... Набережные Челны - 2010 Содержание 1 Постановка задачи 3 2 Интерфейс пользователя 4 3 Алгоритм работы программы 7 4 Результат решения 12 Список использованных источников 16 Начало игры выполняется с процесса нажатия на поле левым щелчком мыши. Выполняем ход, в ответ на наш ход программа в начале начинает ходить наугад. В итоге мы выигрываем: Рисунок 3 – Окно нашего выигрыша Попытаемся проделать данную схему выигрыша повторно, и получаем ответ от компьютера в виде препятствия ноликом в нашем направлении. Что мы видим на рисунке 3. Рисунок 4 – Выбор компьютером хода, препятствующий нашему выигрышу В итоге проиграв этим способом получаем ничью: Рисунок 5 – Окно ничьи Повторим схему еще раз и получаем проигрыш: Рисунок 6 – Окно нашего проигрыша 3 Алгоритм работы программы Главное окно программы состоит из трех процедур и нескольких «ответных реакций» на события компонентов. Рассмотрим подробнее каждую процедуру: 1. Процедура очистки, называется «clean». Здесь происходит очистка полей. Form1.Panel2.Caption:=''; 2. Процедура «game», которая проверяет статус игры и выводит соответствующее сообщение при выигрыше, проигрыше и ничье. Здесь проверяется выигрыш на равенство соответствующих ячеек поля согласно условиям игры «крестики-нолики», например равенство первого столбца: if (Form1.Panel2.Caption=Form1.Panel3.Caption) and (Form1.Panel2.Caption=Form1.Panel4.Caption) and (Form1.Panel2.Caption<>'') then begin Если данное условие выполняется выводится окно выигрыша с соответствующим значением: Form3.Label1.Caption:=Form1.Panel2.Caption; // Если выигрышная комбинация то присваиваем Х или О в Лейбл формы поздравления … Form3.ShowModal; // Открываем окно поздравления ":-)" В месте где стоят точки стоит код который при условии выигрыша пользователем, заносит эти данные в таблицу, то есть данные поля. Panel2.Caption:='X'; adotable1.Edit; adotable1.open; while adotable1.Eof=false do begin Похожи ли эти ходы на те, что в базе проигрышных ходов: if ((adotable1game.Value=1) and ((adotable1xod1.Value=Panel10.Caption) or (Panel10.Caption='')) and ((adotable1xod2.Value=Panel2.Caption) or (Panel2.Caption='')) and ((adotable1xod3.Value=Panel3.Caption) or (Panel3.Caption='')) and ((adotable1xod4.Value=Panel4.Caption) or (Panel4.Caption='')) and ((adotable1xod5.Value=Panel5.Caption) or (Panel5.Caption='')) and ((adotable1xod6.Value=Panel6.Caption) or (Panel6.Caption='')) and ((adotable1xod7.Value=Panel7.Caption) or (Panel7.Caption='')) and ((adotable1xod8.Value=Panel8.Caption) or (Panel8.Caption='')) and ((adotable1xod9.Value=Panel9.Caption) or (Panel9.Caption=''))) then begin l:=0; При выполнении условия соответствия ходов игры и ходов в базе. Ищутся ходы с «X»-ами в таблице и пустыми в нашей игре и в эти поля рисуем нули. if ((adotable1xod1.Value='X') and (Panel10.Caption='')) then begin Panel10.Caption:='O'; break; end; … … … … … … if ((adotable1xod9.Value='X') and (Panel9.Caption='')) then begin Panel9.Caption:='O'; break; end; end Если таких ходов в таблице нет: else begin l:=1; end; adotable1.next; end; то тогда ходы делаются случайным образом. if l=1 then panel; Процедура завершается проверкой на статус игры: game; На процедуру меню очистки игры написано: adotable1.Edit; adotable1.open; while adotable1.Eof=false do begin adotable1.Delete; end; То есть удаляются все значения таблицы. При выборе пункта меню «Новая игра» вызывается процедура «clean». А при выходе закрывается главное окно, а значит завершается и игра: Close; // Выход из программы При вызове пункта меню «О программе», запускается окно «О программе»: Form2.ShowModal; // Вызываем окно "О программе" Данное окно содержит процедуры событий нажатия всех отображаемых компонентов в виде закрытия окна: Form2.Close; Во избежании некорректного отображения расположения компонентов на главном окне, блокируем возможность увеличения окна игры: procedure TForm1.FormCreate(Sender: TObject); var l:DWORD; // Процедура блокировки кнопки "Развернуть" begin l:=GetWindowLong(Self.Handle,GWL_STYLE); l:=l and not(WS_MAXIMIZEBOX); l:=SetWindowLong(Self.Handle,GWL_STYLE,l); end; Также как и в окне о программе, окно выигрыша имеет только события закрытия данного окна. 4 Результат решения Приведем пример ходов, осуществляемых нами, и проверим реакцию на него программы. Предварительно очистим базу знаний. 1. Ходить начнем по диагонали с правого верхнего угла к левому нижнему. Результат первой попытки: выигрышам, и мы проиграли: 2. Ходить начнем (не очищаем базу знаний) по диагонали с левого верхнего угла к нижнему правому. Результат первой попытки, мы приограли: Результат второй попытки, мы решили ходить по первой строчке: Результат третей попытки ничья: Список использованных источников 1. С. Бобровский «Delphi 7. Учебный курс». – СПБ.: Питер 2008. 2. http://ru.wikipedia.org/wiki/Искусственный_интеллект
Docsity logo