Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.abitu.ru/en2002/closed/viewwork.html?thesises=172
Дата изменения: Fri May 5 15:24:59 2006
Дата индексирования: Tue Oct 2 03:29:09 2012
Кодировка: koi8-r


Abstract

Написана игровая программа «Просто Филя», развивающая логическое
мышление. Реализованы два варианта игры - человек с человеком и компьютер с
человеком, можно выбрать свою карту и установить свой размер поля.
Разработан эффективный алгоритм для игрока-компьютера, который в
большинстве случаев выигрывает у неподготовленного человека.

Введение

Недавно я узнала, что в СУНЦ МГУ проводится чемпионат по игре «Просто
Филя» среди людей и среди компьютеров. Я думаю, что название игры
происходит от английского слова FloodFill (заливка). Мне это показалось
интересным (flooding-алгоритм я использовала вместо переборного в одной из
алгоритмических задач) и я решила написать аналогичную программу.

Описание игры

Игра происходит на прямоугольном поле, состоящем из клеточек шести
различных цветов. Играют вдвоем. Начальная позиция игроков - левый верхний
угол и правый нижний угол соответственно. Суть игры заключается в том,
чтобы захватить как можно больше соседних клеток на поле. Для этого игроки
по очереди выбирают цвета (запрещается брать цвет противника и свой текущий
цвет), при этом все примыкающие клетки этого цвета переходят к игроку,
который сделал ход. В этот же цвет перекрашивается (заливается) и уже
принадлежащая игроку область. Игра заканчивается, когда не останется
незанятых (ничейных) областей.
Игра обычно проходит в два тура. Во втором туре игроки должны играть
на той же карте (начальном расположении клеток), что и в первом туре,
только зеркально отраженной относительно диагонали (чтобы устранить влияние
«своего поля»).

Постановка задачи: написать программу, которая


реализовала бы обработку игрового поля (визуализацию) в соответствии с
правилами игры (это позволяет комфортно играть в нее человеку с
человеком);


смогла бы «достойно» играть против человека или другой программы.


Описание программы

Программа написана на Delphi 5.0 (есть также версия игры на Turbo
Pascal). Рабочий экран программы разделен на три части: игровое поле, меню
и рейтинг игроков. В меню можно начать игру и сделать необходимые
установки: возможности загрузки своей карты (начального расположения
клеток) или автоматическую генерацию случайной карты, выбрать возможность
игры с компьютером или с человеком. При желании можно менять размер поля
(максимальный размер 47*47, большее количество клеток трудно для
визуального восприятия). Цвета при игре выбираются мышкой или вводятся по
легенде с цифровой клавиатуры. Переход ко второму туру (с перевернутой
картой) происходит автоматически.
Справа находится «Рейтинг». В нем показано текущее количество очков
(закрашенных клеток) каждого игрока, какой игрок ходит, а также легенда
цветов для ввода с клавиатуры. Подсветка левого верхнего или правого
нижнего углов показывает, какой игрок должен сделать следующий ход.
Перекраску клеток после очередного хода я сделала по алгоритму
затопления (flooding). Он эффективный и перекраска даже большого поля
происходит быстро.
Стратегию игры для компьютера я выбрала пока такую же, по которой
играю сама: компьютер выбирает цвет так, чтобы захватить максимально
большую площадь и по возможности (если есть альтернатива) помешать
противнику сделать то же самое. На больших полях он у меня почти всегда
выигрывает (.
Перспективы работы над программой:
1) сделать таблицу лучших результатов игры;
2) попробовать реализовать игру четырех игроков, играющих со всех четырех
углов;
3) улучшить алгоритм игры компьютера, сделав его «агрессивным» (пусть
пытается сначала отсечь максимальный кусок поля от соперника) ;
4) сделать вариант игры по сети и игры «компьютер-компьютер».

Выводы

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