Розробка комп’ютерної гри “lines” з використанням технології мови програмування java

Автор: Пользователь скрыл имя, 18 Декабря 2011 в 17:51, курсовая работа

Краткое описание

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

У даній курсовій роботі була розроблена гра «Lines» її інтерфейс та наведено приклади її використання. Для розробки використовувалося середовище Java, консольна версія програми.

Оглавление

ВСТУП
АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБҐРУНТУВАННЯ ЗАВДАННЯ НА РОБОТУ …7
РОЗРОБКА ІНТЕРФЕЙСУ. ПРИКЛАДИ ВИКОРИСТАННЯ………………………………………...11
РОЗРОБКА ДІАГРАМИ КЛАСІВ ТА ДІАГРАМИ ВЗАЄМОДІЙ……………………………………19
РОЗРОБКА ЯДРА ПРОГРАМИ………………………………………………………………………....23
РОЗРОБКА ПІДСИСТЕМИ ФОРМУВАННЯ ЗОБРАЖЕННЯ..........………………………………...28
РОЗРОБКА ПІДСИСТЕМИ ОБМІНУ ПО МЕРЕЖІ..............................................................................31
ІНСТРУКЦІЯ КОРИСТУВАЧА………………………………………………………………………....33

ВИСНОВКИ……………………………………………………………………………………………....34

ПЕРЕЛІК ПОСИЛАНЬ…………………………………………………………………………………..35

ДОДАТКИ………………………………………………………………………………………………..36

Файлы: 1 файл

курсач.docx

— 530.26 Кб (Скачать)

abstract  boolean drawImage(Image img, int x, int у, int width, int height, ImageObserver observer)

abstract  boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1

int sx2, int sy2, Color bgcolor, ImageObserver observer)

abstract  void drawLine(int x1, int y1, int x2, int y2)

Малюємо лінію

abstract  void drawOval(int x, int у, int width, int height)

Малюємо еліпс

abstract  void drawPolygon(int[] xPoints, int[] yPoints, int nPoints)

void drawRect(int x, int у, int width, int height)

Прямокутник

abstract  void drawRoundRect(int x, int у, int width, int height, int arcWidth, int arcHeight)

Прямокутник із закругленими краями:

abstract  void drawString(AttributedCharacterIterator iterator, int x, int у) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

          6 РОЗРОБКА ПІДСИСТЕМИ  ОБМІНУ ПО МЕРЕЖІ 

     В роботі реалізована програма-сервер і програмама-клієнт, які здійснюють обмін даних між собою, використовуючи неблокуючі сокети. Обмін даних по мережі здійснюється за допомогою протоколу TCP/IP. Особливість функціонування програми-сервера полягає у тому, що він забезпечує паралельний обмін даними, з клієнтами, з якими утворено з'єднання, та забезпечувати прослуховування мережі з метою встановлення нових з'єднань.

     Дані, якими обмінюються програми, представляють  собою повідомлення, які генеруються  на обох кінцях з'єднання і передаються в обох напрямках. Повідомлення на програмі-клієнті генеруються тоді, коли надходять певні команди від користувача, а на програмі-сервері – при отриманні даних від програм-клієнтів.

     Повідомлення, які надходять на відповідні програми, обов’язково інтерпретуються, і  в залежності від тих частин, на які проінтерпретувалося повідомлення, викликається та чи інша функція, яка  наприклад або пересуває клієнта, або робить постріл, або виводить на екран інформацію про стан клієнта  тощо.

     Прийом  даних здійснюється за допомогою  функції recv(), а передача – send().

     Особливістю неблокуючих сокетів є те, що вони можуть робити все паралельно у одному потоці, а блокуючих – у декількох  потоках окремо.

     Програма-сервер обробляє з'єднання з конкретним клієнтом у двох потоках з використанням  неблокуючих сокетів - функція ThreadRoutine, яка викликає функцію SendRecv(), яка  взагалі все робить паралельно –  і передає дані клієнтам і отримує  їх від них; ThreadRoutine2 - слухає появу  запитів на з'єднання.

     Клас TCPBuf і TCPBuffers програми-серверу - головні  класи для роботи з програмою-клієнтами. Вони призначені для отримання і  відсилання даних по мережі, створення  та видалення з’єднань, за допомогою  описаних в них функцій, зокрема SendRecv(), DeleteOneSocket(), AddSocket() тощо.

     Програма-сервер приймає дані від клієнта, і відсилає їх клієнтам у функції SendRecv, яка оголошена  у класі TCPBuf.

      Програма-клієнт здійснює обмін з сервером через  блокуючий сокет. Тому обмін даними здійснюється в двох окремих потоках, у одному з яких відбувається зчитування данних з з'єднання (ReceiveThreadRoutine), а  у другому відбувається запис  даних у з'єднання (SendThreadRoutine). 

      7 КЕРІВНИЦТВО КОРИСТУВАЧА

      Гра «Lines» є надзвичайно популярною грою уже багатьох десятиліть.

В ній  використовується логічне мишлення та ерудиція, що дозволяє добре ровинути розумові здібності користувача. Правила  гри в Lines є досить простими. Суть гри в «Lines» в тому, що необхідно набрати як можна більше очків, будуючи лінію із п`яти і більше шариків одного кольору. Шарики переміщуються за допомогою миші: спочатку ви вибираєте шар, який потрібно перемістити, потім – пусту позицію, на яку ви хочете його поставити. Якщо в лінії буде більше чем 5 шарів ви получаете бонусні очки. Гра не є нескінченою адже за один хід появляються додаткових 3 шарика, аж поки на полі не залишиться вільного місця

      Щоб запустити гру потрібно вибрати  файл з назвою Lines.exe и запустити його. На екран будуть виведені назва гри, варіант гри допоможні меню зверху програми , час який ви граєте та кількість очків яку ви набираєте знищуючи шарики.

      Щоб вийти, у любий момент натисніть  клавішу Esc. З’явиться запит пітдвердження. Щоб вийти – натисніть «да», щоб вернутися до програми – «нет» (виведеться повідомлення, що Ви знову у грі). В будь-який момент часу ви можете зберегти гру і в більш сприятливий час продовжити. Кінець гри настає тоді, коли не залишиться пустої клітинки на полі а це значить гра закінченна і автоматично буде показано скільки ви набрали очків і яке місце ви посідаєте в таблиці Лідерів     

      Якщо  у вас появляться якісь питання  ви можете скористатися меню «Помощь» там детально описано все про  гру «Lines». 
 
 
 
 
 
 

Рисунок 7.1 – зображення гри «Lines»

                 ВИСНОВКИ

     В даній курсовій роботі була розроблена програма “Lines” діалогового інтерфейсу користувача на мові високого рівня  Java. Задана програма виконана з використанням АРІ функцій.

    Виконуючи цю курсову роботу я зрорзумів, що мова Java є однією з наймолодших в сімействі мов програмуваня і була розроблена з розрахунку на те, щоб професійний програміст міг легко її опанувати та ефективно використовувати. За основу Java взятий синтаксис С++ - безсумнівно однієї з найбільш популярних мов програмування сучасності. Проте, Java - це цілком самостійна мова програмування, і при її створенні не йшлося про будь-яку сумісність з С++. Тому деякі механізми реалізовані в Java інакше, а деякі зовсім відсутні. Ідеологічно ж Java побудована дещо інакше ніж С++. Розробники Java грунтувалися на досвіді розробки програм на С++ і прагнули позбутися можливостей, які зарекомендували себе непевними. Так, в Java відсутня перегрузка операторів а також автоматичне приведення несумісних типів - конструкції, які при неуважному використанні є джерелом важких для виявлення помилок. Взагалі, інтерфейси Java більш прості та прозорі для розуміння. Написати на Java програму з графічним інтерфейсом значно легше. Звичайно, простота інтерфейсів компенсується меншою гнучкістю, бібліотека Java не така багата, як стандартні бібліотеки С/С++. Але згадаймо, що Java задуманий для використання на різних платформах і тому реалізує в собі найбільш стандартні можливості задля легшої адаптації під конкретне середовище.

     Виконавши курсову роботу я вдосконалив свої знання по програмуванню на мові Java, також ознайомився з основними прийомами роботи з  графікою та сокетами. 
 

    ПЕРЕЛІК ПОСИЛАНЬ

    1 BHV — Самоучитель Java 2 - Хабибуллин И.Ш.

    2 http://www.sun.com/ Специфікація мови програмування Java.

    3 Нотон Патрик, Шилдт Герберт. Полный справочник по Java.: Пер. с  англ.: - К.: Диалектика, 1997.

      4 Страуструп Бьярн. Язык программирования С++.: Пер. с англ.: - К.:    ДиаСофт,  1993.

    5 Магические зерна Sun. COMPUTER WORLD Киев, №29-30 (19 августа  1998) с.10.

    6 Ціни на програмні продукти. ( По матеріалам Hot-line). 
     
     
     

      ДОДАТКИ 
 
 
 
 
 
 
 
 
 
 

                  Додаток А                       лістинг програми Lines:                                                                       

import java.applet.Applet;

import java.awt.*;

import java.util.*;

public class colors extends Applet

class Message {

public:

      void Congrats(int num=1) {

            printf("\n\t\tPlayer %d wins!\n", num);

      } 

      void About() {

            puts("\t \"Pole Chudes\"\nDeveloped by Novytskiy M.P., 1PZ-05\n");

      } 

      void Rules() {

            puts("\nRules: enter a letters to guess word\nExit: press ESC\n");

      } 

      void WrongLetter(char letter) {

            printf("\n\t Info: a letter '%c' you have tried is not in this word...\n\n", letter);

      } 

      void RightLetter(char letter) {

            printf("\n\t Info: There IS a letter '%c' in this word!\n\n", letter);

      } 

      void ShowPlayer(int nPlayer) {

            Line();

            printf("* * *   Current player: Player %d   * * *\n", nPlayer);

      } 

      void Line() {

            puts("----------------------------------------");

      } 

      void FileError(char *path) {

            fprintf(stderr, "\n\tError: couldn\'t open file '%s'\nPress any key to exit...", path);

      } 

      void NewWord() {

            puts("\nDo you want to guess another word? (Y/N)");

      } 

      void HasNoWords() {

            fprintf(stderr, "\n\tInfo: there is no new words to play. Press ESC to exit...");

      } 

      void ExitConfirm() {

            puts("\nDo you really want to exit? (Y/N)");

      } 

      void BackInGame() {

            puts("\n\tInfo: you in game again!");

      }

}; 

class EventMgr {

public:

      int DlgConfirm() {

            const char YES = 'Y';

            const char NO = 'N'; 

            char ch;

            do {

                  ch = _getch();

                  ch = towupper(ch);

            } while (ch != NO && ch != YES); 

            switch(ch) {

                  case YES: return 1;

                  case NO: return 0;

            }

      } 

      void PressKey(int keycode) {

            char ch;

            do {

                  ch = _getch();

            } while (ch != keycode);

      }

}; 

Message msg;

EventMgr ev; 

class Letter {

      char sLetter;

      int isGuessed; 

      static const char UNGUESSED = '*'; 

public:

      Letter() {

            SetGuessed(false);

      } 

      void SetLetter(char letter) {

            sLetter = letter;

      } 

      char GetLetter() {

            return sLetter;

      } 

      void SetGuessed(int val) {

            isGuessed = val;

      } 

      int GetGuessed() {

            return isGuessed;

      } 

      void Show() {

            if (GetGuessed()) _putch(GetLetter());

            else _putch(UNGUESSED);

      }

}; 

class Alphabet {

      char *letters;

      int length; 

      static const int LETTERS_IN_LINE = 13;

      static const char USED_LETTER = '_'; 

      void ResetLetters() {

            char *p = letters;

Информация о работе Розробка комп’ютерної гри “lines” з використанням технології мови програмування java