Гра крестікінолікі

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Державна освітня установа вищої професійної освіти

«Московський державний технічний університет

імені Н.Е. Баумана »

Калузький філія

Кафедра «Системи автоматизованого проектування»

Пояснювальна записка

до курсової роботи

з дисципліни:

«Програмування на мові вищого рівня»

на тему: «Гра хрестики - нулики»

Калуга 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 називається середовищем виконання (execution engine).

  2. . NET допомагає реалізувати так звану середу, безпечну до невідповідності типів даних (type safe environment). Образно кажучи,. NET забезпечує "трикутні дірки для трикутників, квадратні - для квадратів".

  3. . NET звільняє програміста від стомлюючого і нерідко приводить до помилок процесу управління комп'ютерною пам'яттю, яка використовується програмою.

  4. . NET надає безпечне середовище виконання, намагаючись ускладнити життя хакерам і їм подібним.

  5. До складу. NET-платформи входить бібліотека, що містить масу готових програмних компонентів, які можна використовувати у власних програмах. Вона економить чимало часу, оскільки програміст може скористатися готовими фрагментами коду. Фактично, він повторно використовує код, створений і ретельно перевірений професійними програмістами Microsoft.

  6. В. NET спрощена підготовка програми до використання (розгортання).

  7. . NET забезпечує перехресне взаємодію програм, написаних на різних мовах. Будь-яка мова, підтримуваний. NET, може взаємодіяти з іншими мовами цієї платформи. На момент створення цієї книги на платформу. NET було перенесено близько 15 мов. Оскільки для виконання коду, написаного на будь-якому з підтримують платформу. NET мов, використовується одна і та ж середовище виконання, її часто називають єдиної середовищем виконання (Common Language Runtime, 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), де х - горизонтальна координата, ay - вертикальна координата. Можна використовувати Point в будь-якій двовимірній системі координат.

Структура Point має два доступні для читання і запису властивості, X і Y, які визначені, як 32-бітові цілі числа. X і Y можуть бути негативними.

Point click_point = new Point ();

Властивостями X і Y присвоюється початкове значення 0. Потім їм можна присвоїти значення або використовувати таке оголошення для ініціалізації властивостей:

Point click_point = new Point (34, 55);

Більшість методів малювання Graphics не використовують параметри типу Color. При малюванні ліній або кривих використовується об'єкт типу Реп. Звичайно, для самих пір'я і кистей вказуються кольору, але часто застосовуються і інші їх властивості.

Перо створюється одним з чотирьох конструкторів класу Реп. Найпростіший з них створює об'єкт Реп, використовуючи об'єкт Color.

Pen pen = new Pen ();

Щоб створити перо, що використовує один з зумовлених квітів, можна зробити так:

Pen pen = new Pen (Color.Green);

Клас PaintEventArgs визначений у просторі імен System Windows forms. Властивість 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, float y1, float x2, float y2);

Робота з координатами

Point MousePosition повертає позицію миші в координатах екрану. Ці властивості можна задіяти при обробці будь-яких подій. Так як вони статичні, їх можна використовувати навіть у класі, яка не є похідним від Control.

Координати робочого столу (desktop coordinates) ідентичні координатами екрану, але тільки якщо панель завдань 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 <10; i + +)

{

for (int j = 0; j <10; j + +)

{

matr [i, j] = 0;

}

}

У методі Form1_Paint ми малюємо всі графічні об'єкти, що використовуються в програмі: клітина, нулик і хрестик

private void Form1_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 ():

public void restart ()

{

for (int i = 0; i <10; i + +)

{

for (int j = 0; j <10; j + +)

{

matr [i, j] = 0;

}

}

2.2 Принцип гри людина проти людини

За події форми Click запускається метод Form1_Click.

private void Form1_Click (object sender, EventArgs e)

{

}

Тут проводиться перевірка на потрапляння курсору миші в область клітини. Для гри проти людини необхідно відзначити RadioButton human. У цьому випадку проводиться перевірка булевої змінної 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, int d) шукає три поспіль крестікаі на продовженні тієї ж прямий (це здійснюється за допомогою фомальних параметрів 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

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
54кб. | скачати


Схожі роботи:
Лімерік неперекладна гра слів або переказується гра форми
Гра Tetris
Гра Шибениця
Гра Vertolet
Гра П`ятнашки
Гра Шибениця 2
Гра дошкільника
Гра 489
Гра в дошкільному віці
© Усі права захищені
написати до нас