Реферат по предмету "Информатика, программирование"


Игра крестики–нолики

Государственное образовательное учреждение высшегопрофессионального образования
«Московскийгосударственный технический университет
имени Н.Э.Баумана»
Калужскийфилиал
Кафедра «Системыавтоматизированного проектирования»Пояснительная запискак курсовой работепо дисциплине:«Программирование на языке высшего уровня»
на тему: «Игра крестики – нолики »
Калуга 2007

СОДЕРЖАНИЕ
 
Введение
1. Исследовательская часть
1.1 Язык программирования        
1.1.1 Выбор языка программирования
1.1.2 Общее описание языка
1.2 Конструкции,реализованные в программе
2. Конструкторская часть
2.1 Общий принцип работыпрограммы
2.2 Принцип игры человекпротив человека
2.3 Принцип игрыкомпьютера
3. Технологическая часть
3.1 Правила игры       
3.2 Интерфейс программы
Заключение
Список использованной литературы

ВВЕДЕНИЕ
Целью данной курсовойработы является разработка популярной развлекательной игры крестики – нолики. Программапредоставляет возможность играть с компьютером, который играет согласносозданному алгоритму. В процессе разработки должны быть усвоены некоторые новыевозможности Visual Studio. В программе должны быть учтены моменты, позволяющиепользователю легко освоить программу, для этого необходимо создать удобныйинтерфейс, который является «визитной карточкой» приложения.

1.ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ
 
1.1 Языкпрограммирования
 
1.1.1Выбор языка программирования
С# — это новый языкпрограммирования, в котором, по замыслу создателей, должны сочетатьсявыразительность и простота. Его цель — позволить программисту создавать сложныевысокопроизводительные программы
C# создавался параллельнос каркасом Framework .Net и в полной мере учитывает все его возможности — какFCL, так и CLR;
C# является полностьюобъектно-ориентированным языком, где даже типы, встроенные в язык, представленыклассами;
C# является мощнымобъектным языком с возможностями наследования и универсализации;
C# является наследникомязыков C/C++, сохраняя лучшие черты этих популярных языков программирования.Общий с этими языками синтаксис, знакомые операторы языка облегчают переходпрограммистов от С++ к C#;
сохранив основные чертысвоего великого родителя, язык стал проще и надежнее.
Дляполного понимания языка программирования С# и его программной среды, необходимопредставить важную технологию, которая непосредственно связана с С# иназывается .NET.
.NET —это общий термин для многих важных служб, которые предоставляются ииспользуются во время создания и исполнения программы на С#. Более того, С#полностью зависит от .NET. Неудивительно, что происхождение многих особенностейи концепций С# уходит своими корнями в .NET. Вотнекоторые важные службы, предоставляемые инфраструктурой .NET-платформы.
1.     .NETпредоставляет средства для исполнения инструкций, содержащихся в программе,написанной на С#. Эта часть .NET называется средой исполнения (executionengine).
2.     .NET помогаетреализовать так называемую среду, безопасную к несоответствию типов данных (typesafeenvironment).Образно говоря, .NET обеспечивает «треугольные дырки длятреугольников, квадратные — для квадратов».
3.      .NET освобождаетпрограммиста от утомительного и нередко приводящего к ошибкам процессауправления компьютерной памятью, которая используется программой.
4.      .NETпредоставляет безопасную среду исполнения, пытаясь усложнить жизнь хакерам и имподобным.
5.     В состав .NET-платформывходит библиотека, содержащая массу готовых программных компонентов, которыеможно использовать в собственных программах. Она экономит немало времени, таккак программист может воспользоваться готовыми фрагментами кода. Фактически, онповторно использует код, созданный и тщательно проверенный профессиональнымипрограммистами Microsoft.
6.      В .NET упрощенаподготовка программы к использованию (развертывание).
7.      .NET обеспечивает перекрестное взаимодействие программ,написанных на разных языках. Любой язык, поддерживаемый .NET,может взаимодействовать с другими языками этой платформы. На момент созданияэтой книги на платформу .NET было перенесено около 15 языков. Поскольку дляисполнения кода, написанного на любом из поддерживающих платформу .NETязыков, используется одна и та же среда исполнения, ее часто называют единойсредой исполнения (CommonLanguageRuntime, CLR).
Программа,при создании которой была предусмотрена возможность повторного использования,называется компонентом (программным компонентом).
Всесказанное выше о .NET — не более чем простое перечисление некоторых свойствплатформы, в которой были реализованы многие современные программныетехнологии.
Реализация, сочетающаяпостроение надежного и эффективного кода, является немаловажным фактором,способствующим успеху C#.
1.1.2 Общееописание языка
Последнее время С и С++являются наиболее используемыми языками для разработки коммерческих и бизнесприложений. Эти языки устраивают многих разработчиков, но в действительности необеспечивают должной продуктивности разработки. К примеру, процесс написанияприложения на С++ зачастую занимает значительно больше времени, чем разработкаэквивалентного приложения, скажем, на Visual Basic. Сейчассуществуют языки, увеличивающие продуктивность разработки за счет потери вгибкости, которая так привычна и необходима программистам на С/С++. Подобныерешения являются весьма неудобными для разработчиков и зачастую предлагаютзначительно меньшие возможности. Эти языки также не ориентированы навзаимодействие с появляющимися сегодня системами и очень часто они несоответствуют существующей практике программирования для Web. Многие разработчики хотели быиспользовать современный язык, который позволял бы писать, читать исопровождать программы с простотой Visual Basic и в то жевремя давал мощь и гибкость C++,обеспечивал доступ ко всем функциональным возможностям системы,взаимодействовал бы с существующими программами и легко работал с возникающими Web стандартами.
Учитывая все подобныепожелания, Microsoft разработала новый язык — C#. В него входит много полезныхособенностей — простота, объектная ориентированность, типовая защищенность,«сборка мусора», поддержка совместимости версий и многое другое.Данные возможности позволяют быстро и легко разрабатывать приложения, особенно COM+ приложения и Web сервисы. При создании C#, его авторы учитывали достижениямногих других языков программирования: C++, C, Java, SmallTalk, Delphi, Visual Basic и т.д. Надозаметить что по причине того, что C# разрабатывался с чистого листа, у его авторов была возможность (которойони явно воспользовались), оставить в прошлом все неудобные и неприятныеособенности (существующие, как правило, для обратной совместимости), любого изпредшествующих ему языков. В результате получился действительно простой,удобный и современный язык, по мощности не уступающий С++, но существенноповышающий продуктивность разработок.
1.2 Конструкции, реализованные в программе
Курсовая работа использует пространствоимён System.Drawingдля создания классов Point, Pen.Класс – ссылочный тип данных.
Координатнаяточка — тип данных,довольно распространенный в графических средах. Он невелик, поэтому для негобольше подходит использование структуры, а не класса. В .NET Framework этоструктура Point. В двумерной координатной системе(такой как поверхность видеодисплея или лист бумаги принтера) точкаобозначается обычно парой чисел (x и y), где х — горизонтальная координата, a y — вертикальная координата. Можноиспользовать Point в любой двумерной системе координат.
СтруктураPoint имеет два доступных для чтения изаписи свойства, X и Y, которые определены, как 32-битные целые числа. X иY могут быть отрицательными.
Point click_point = new Point();

СвойствамX и Y присваивается начальное значение 0. Затем им можно присвоить значения илииспользовать такое объявление для инициализации свойств:
Point click_point= newPoint(34, 55);
Большинствометодов рисования Graphicsне используютпараметры типа Color.При рисовании линийили кривых используется объект типа Реп. Конечно, для самих перьев и кистей указываются цвета, но частоприменяются и другие их свойства.
Перосоздается одним из четырех конструкторов класса Реп. Простейший из них создает объект Реп, используя объект Color.
Pen pen = new Pen();
Чтобысоздать перо, использующее один из предопределенных цветов, можно сделать так:
Pen pen = new Pen(Color.Green);
КлассPaintEventArgsопределен в пространстве имен SystemWindowsforms. Свойство Graphics содержит экземпляр класса Graphics, определенного в пространстве имен SystemDrawing. Graphics — важнейший класс библиотеки Windows Forms,по важности не уступающий Form. Этоткласс служит для рисования графики и вывода текста на форме.
Класс Graphics
Длярисования одиночных прямых служит метод DrawLine класса Graphics.Есть четыреперегруженных версии DrawLine,но все они требуютодин и тот же набор аргументов: координаты начальной и конечной точек линии, атакже перо, которым она рисуется.
МетодыDrawLine класса Graphics:
void DrawLinefPen pen, int x1, int y1, int x2, int y2)
void DrawLinefPen pen, float x1, float y1, float x2, float y2)
void DrawLine(Pen pen, Point pointl, Point point2)
void Drawl_ine(Pen pen, PointF pointl, PointF point2)
Можноуказывать координаты как четырьмя значениями типа int или float, так и парой структур Point или PointF. Метод DrawLine чертит линию от первой точки довторой, включаявторую точку в состав линии.
Несомненно,прямоугольник можно нарисовать при помощи методов DrawLine или DrawLines, но проще сделать это методом DrawRectangle. В каждой из трех его версийпрямоугольник определяется точкой, задающей положение верхнего левого угла,шириной и высотой. Аналогично определяется структура Rectangle, которую использует одна из версий DrawRectangle.
МетодыDrawRectangleкласса Graphics:
void DrawRectangle(Pen pen, int x, int y, int ex, int cy)
void DrawRectangleCPen pen, float x, float y, float ox, float cy)
void DrawRectangle(Pen pen, Rectangle rect)
Такжев классе Graphics есть метод DrawEllipse, который используется для рисованияокружности.
DrawEllipse(Pen pen2, float x1, floaty1, float x2, float y2);
Работа с координатами
PointMousePosition возвращаетпозицию мыши в координатах экрана. Эти свойства можно задействовать приобработке любых событий. Так как они статические, их можно использовать даже вклассе, не являющемся производным от Control.
Координатырабочего стола (desktopcoordinates) идентичны координатам экрана, но только если панель задач Windowsне расположена на верхней или на левой границе экрана. И, наконец, координаты формы (form coordinates) связаны с левымверхним утлом формы, который обычно является углом рамки формы.
СвойствоLocation относится к точке в экранныхкоординатах, эквивалентной точке (0, 0) в координатах формы. Таким образом, этосвойство позволяет приложению преобразовывать координаты точки из однойкоординатной системы в другую в виде формул:
click_point.X = MousePosition.X — Form1.ActiveForm.Location.X;
Метод Invalidatе
Этотметод делает недействительной всю клиентскую область, или ее прямоугольное, илинепрямоугольное подмножество. Вызов Invalidate информирует Windows, что клиентская область больше неявляется действительной. Впараметрах метода Invalidateможно также указатьобласть, которую необходимо обновить.

2. КОНСТРУКТОРСКАЯЧАСТЬ
 
2.1 Общий принцип работы программы
 
Призагрузке программы создаётся матрица размерностью 10 на 10 с помощью циклов спараметрами. В этой матрице любая координата соответствует идентичной координатеклетки игрового поля. Далее все операции производятся с данной матрицей, арисование происходит в методе Form1_Paint поданным значениям матрицы.
for (int i = 0; i
{
for (int j = 0; j
{
matr[i, j] = 0;
}
}
В методе Form1_Paint мы рисуем все графические объекты,используемые в программе: клетка, нолик и крестик
 
privatevoidForm1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawLine(pen3, k * 30 + 2, i * 30 + 2, k * 30 + 28, i * 30 +28);
e.Graphics.DrawLine(pen3,k * 30 + 28, i * 30 + 2, k * 30 + 2, i * 30 + 28);
e.Graphics.DrawRectangle(pen1,30 * k, 30 * i, 30, 30);
}

Следующий методзаключается в том, что генерирует случайную величину, т.е. с помощю него компьютерставит нолик в произвольном порядке
 
private int get_random(int min, int max)
{
int r = 0;
r = rnd.Next(min, max);
return r;
}
Обновление всего игровогополя происходит в методе restart():
publicvoid restart()
{
for (int i = 0; i
{
for (int j = 0; j
{
matr[i, j] = 0;
}
}
2.2 Принцип игры человек против человека
По событию формы Click запускается метод Form1_Click.
privatevoidForm1_Click(object sender, EventArgs e)
{
}
Здесьпроизводится проверка на попадание курсора мыши в область клетки. Для игрыпротив человека необходимо отметить RadioButtonhuman. В этом случае производится проверкабулевой переменной access. Accessотвечает за переход хода к другому игроку. Если access равен true, то значение соответствующей matr[k, i]становится равным единице и в методе Form1_Paint рисуется крестик в соответствующей клетке. Если же access равен false, то matr[k, i] становится равным двум ирисуется нолик. После каждого хода запускается метод proverka. Он проверяет на совпадениепоставленную клетку и рядом стоящие. Если таковые имеются то запускается метод proverka2 и он работает до тех пор, пока не найдёт 5 одинаковозаполненных подряд идущих клеток.
Определение координатположения мыши происходит следующим образом. Если в момент нажатия кнопки мышиуказатель находится в пределах одной из клеток, то при нажатии кнопки ноль, элементматрицы matr[i,j] меняется на единицу, соответственно в клетке ставитсякрестик, при следующем нажатии кнопки — ставится нолик, и так поочереди:
if (access == true)
{
matr[k, i] = 1;
access = false;
proverka(k, i);
}
else
matr[k, i] = 2;
access = true;
proverka(k, i);
}
Послекаждого хода запускается вышеупомянутый метод proverka(k, i), в которомиспользованы операторы ветвления if-elseикоторый находит 2 подряд идущих крестика(нолика), идущих в любом направлении. Вэтом случае параметр, отвечающий за количество подряд идущих крестиков (ноликов)line увеличивается в методе proverka2. Цикл продолжается до тех пор, пока линия не будет состоять из пятикрестиков(ноликов). Далее следует сообщение, которое повествует, какой игроквыиграл и вопрос: «Хотите сыграть еще раз?». В данной программе для этого используется следующийметод:
MessageBox.Show("Хотитесыгратьещераз?", "выиграликрестики", MessageBoxButtons.YesNo);
При нажатии кнопки «Да»игровое поле обновляется с помощью метода restart(), при нажатии «Нет» приложениезакрывается.
2.3Принцип игры компьютера
При игре с компьютером,когда выполняется условие computer.Checked мы используем другой подход:
if (matr[k, i] == 0)
{
matr[k, i] = 1;
access4 = true;
_x = k; _y = i;
proverka(k,i);
AI();
}
После хода пользователяосуществляется метод AI(), в котором использован алгоритм нахождениядвух подряд идущих крестиков. Второй крестик ищется в восьми клетках вокругпервого. Если таковых нет, то компьютер ставит нолик в любом месте относительноклетки с крестиком с помощью метода random_AI(). Если методом AI было найдено два подряд идущихкрестика, то метод AI2 (int z, int q, int c, intd) ищет три подряд идущих крестикаи на продолжении той же прямой (этоосуществляется с помощью фомальных параметров c и d)и ставит нолик на той же линии то чтобы предотвратить появление четырёхкрестиков. Если три подряд идущих крестика не найдено, то также срабатываетметод random_AI(). Компьютер не может походить дважды, так как послекаждого хода закрывается доступ к другому методу с помощью переменных access3 и access4. Все ходыкомпьютера происходят в зависимости от того, куда был поставлен последнийкрестик, то есть компьютер занимает оборонительную позицию.
После каждого пользовательскогохода или хода компьютера также осуществляется проверка всего поля на наличиепяти идущих подряд крестиков (ноликов) с помощью вышеописанного метода proverka(). Так же можно продолжить игру с компьютером посленедоигранной партии с человеком, просто нажав соответствующию RadioButton computer и наоборот.

3. ТЕХНОЛОГИЧЕСКАЯЧАСТЬ
 
3.1Правила игры
Правила игры состоят втом, что необходимо выстроить линию из пяти крестиков (ноликов) в любомнаправлении и каким угодно способом (по горизонтали, вертикали или диагонали).Соответственно ваш противник должен выстроить подобную линию быстрее вас или недавать вам построить такую линию. Игра начинается с того, что в любом местеигрового поля ставится крестик, ваш противник ставит нолик, и так до тех порпока не будет выстроена линия. В данной программе чтобы выиграть, необходимопервым составить линию.
/>
Рис.1. Игровое поле
3.2Интерфейс программы
Программа предоставляетвозможность играть в игру крестики-нолики. Для запуска программы сделайтедвойной щелчок по ярлыку программы. На экране появится основное окно программы,имеющее следующий вид (рис. 1):
На окне размещено игровоеполе и две кнопки – Новая игра и Выход, а также кнопки выбора режима игры:пользователь против пользователя(human)и пользователь против компьютера(computer). Для начала новой игры необходимо нажать кнопку Новая игра, а потом ужеиграть в соответствии с правилами игры. Для выхода из программы нужно нажать кнопкуВыход.
При победе одного изигроков появляется сообщение (рис. 2) «Хотите сыграть еще раз?». Если нажатькнопку «Да», то соответственно начнется новая игра, а если «Нет», то программазакрывается.
/>
Рис.2. Сообщение

ЗАКЛЮЧЕНИЕ
Впроцессе выполнения курсовой работы были изучены новые возможности языка высшего уровня C#. В том числе была изучена графическаяподсистема Visual Studio. В процессе создания приложения был реализован алгоритм,который в дальнейшем возможно усовершенствовать. Все поставленные задачи быливыполнены и разработка популярной игры «Крестики-нолики» прошла успешно.

СПИСОКИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. Чарльз Петцольд.Программирование для Microsoft WINDOWS на С#. Издательско-торговый дом “РусскаяРедакция”, Москва 2002 — 576 с.
2. РазработкаWindows-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# -NET.Учебный курс MCAD/MCSD/Пер. с англ. — М.:
Издательско-торговый дом«Русская Редакция», 2003. — 512 стр.: ил.
3. MSDN 2005


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Семья Болконских в романе "Война и Мир"
Реферат Синонимы и их типы в поэме Н. В. Гоголя "Мёртвые души"
Реферат Символика в романе А. С. Пушкина "Евгений Онегин" (сон Татьяны) (вариант 2)
Реферат Сила характера Катерины и трагическая острота ее конфликта с "темным царством" в драме А. Н. Островского "Гроза"
Реферат Смысл названия комедии А. С. Грибоедова «Горе от ума»
Реферат Слова-символы в толковании сна Татьяны Лариной
Реферат Слово о погибели Русской земли
Реферат Слово о Есенине
Реферат Софокл (496—405 гг. до н. э.)
Реферат Смысл странствий Ивана Флягина
Реферат Смотрюсь в роман, как в зеркало, и вижу в нем судьбу твою и думаю о ней
Реферат Слово о законе и благодати
Реферат Слово о полку Игореве, языческие и христианские мотивы
Реферат Смысл названия комедии. Проблема ума и безумия (А.С. Грибоедов "Горе от ума")
Реферат Блок возбуждения для дефектоскопии плоской поверхности