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

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

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

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

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

Оглавление

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

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

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

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

Файлы: 1 файл

курсач.docx

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

            for (char ch = 'a'; ch <= 'z'; ch++, p++)

                  *p = ch; 

            *p = '\0';

      } 

      void SetLength(int len) {

            length = len;

      } 

public:

      Alphabet() {

            letters = new char[27]; 

            ResetLetters();

            SetLength(strlen(letters));

      } 

      ~Alphabet() {

            delete []letters;

      } 

      void Show() {

            _cputs("\nAlphabet:\n\t"); 

            for (int i = 0; i < length; i++) {

                  _putch(letters[i]);

                  if (i % LETTERS_IN_LINE == LETTERS_IN_LINE - 1) _cputs("\n\t");

            } 

            _putch('\n');

      } 

      /* if letter wasn't entered before - returns false

            otherwise - returns true

      */

      int RefreshLetters(char letter) {

            for (int i = 0; i < length; i++) {

                  if (letters[i] == letter) {

                        letters[i] = USED_LETTER;

                        return false;

                  }

            } 

            return true;

      }

}; 

class Word {

      Letter *aWord;

      Alphabet abc;

      int length; 

      char *sDescription; 

      void SetLength(int len) {

            length = len;

      } 

      void SetDescription(char *desc) {

            sDescription = desc;

      } 

      char *GetDescription() {

            return sDescription;

      } 

public:

      Word(char *str="", char *desc="") {

            SetLength(strlen(str));

            aWord = new Letter[length]; 

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

                  aWord[i].SetLetter(str[i]); 

            SetDescription(desc);

      } 

      ~Word() {

            delete []aWord;

      } 

      void Show() {

            msg.Line();

            printf("Description: %s\n", GetDescription());

            _cputs("Word:        ");

            for (int i = 0; i < length; i++) {

                  aWord[i].Show();

            }

            _putch('\n');

            abc.Show();

      } 

      int TryLetter(char letter) {

            int bLetterWasGuessed = false; 

            for (int i = 0; i < length; i++) {

                  if (aWord[i].GetLetter() == letter && !aWord[i].GetGuessed()) {

                        aWord[i].SetGuessed(true);

                        bLetterWasGuessed = true;

                  }

            } 

            int bLetterWasUsed = abc.RefreshLetters(letter); 

            if (bLetterWasGuessed) {

                  msg.RightLetter(letter);

                  Show();

                  return 1; //new letter was opened

            } 

            if (!bLetterWasUsed) {

                  msg.WrongLetter(letter);

                  return 2; //new letter was tried, but its not in a word

            } 

            return 0;  //re-enter of letter

      } 

      int CheckWord() {

            for (int i = 0; i < length; i++) {

                  if (!aWord[i].GetGuessed()) return false;

            } 

            return true;

      }

}; 

class PlayerMgr {

      int nCurrPlayer;

      int MAX_PLAYERS; 

public:

      PlayerMgr(int firstPl=1, int maxPl=3) {

            SetCurrPlayer(firstPl);

            MAX_PLAYERS = maxPl;

      } 

      void SetCurrPlayer(int val) {

            nCurrPlayer = val;

            msg.ShowPlayer(GetCurrPlayer());

      } 

      int GetCurrPlayer() {

            return nCurrPlayer;

      } 

      void ChangePlayer() {

            int nextPl; 

            if ( GetCurrPlayer() >= MAX_PLAYERS ) nextPl = 1;

            else nextPl = GetCurrPlayer() + 1; 

            SetCurrPlayer(nextPl);

      }

}; 

class FileMgr {

      char *currWord;

      FILE *file;

      char *FILE_NAME; 

      const char SEPARATOR;

      const char *END_OF_FILE; 

      FILE *fileopen(char *path, char *attribute)

      {

            FILE *file;

            file = new FILE; 

            if (fopen_s(&file, path, attribute))

            {

                   msg.FileError(path);

                   _getch();

                   exit(EXIT_FAILURE);

            } 

            return file;

      } 

      void GetFile() {

            file = fileopen(FILE_NAME, "r");

      } 

      void SetCurrWord() {

            char *status = fgets(currWord, 100, file); 

            if (!strcmp(currWord, END_OF_FILE) || status == NULL) {

                  msg.HasNoWords();

                  ev.PressKey(ESCAPE);

                  exit(EXIT_FAILURE);

            } 

            currWord[strlen(currWord) - 1] = '\0';

      } 

public:

      FileMgr(char *filename = "words.txt"):SEPARATOR('&'), END_OF_FILE("*end*\n") {

            file = new FILE;

            currWord = new char[100];

            FILE_NAME = new char[10]; 

            FILE_NAME = filename; 

            GetFile();  

      } 

      ~FileMgr() {

            fclose(file);

      } 

      void GetWord(char *word, char *desc) {

            char *tWord;

            tWord = new char[100]; 

            char *pos = new char; 

            SetCurrWord();  

            strcpy(tWord, currWord); 

            pos = strchr(tWord, SEPARATOR);

            if (pos == NULL) {

                  GetWord(word, desc);

                  return;

            }

            *pos = '\0'; 

            strcpy(word, strlwr(tWord));

            strcpy(desc, ++pos);

      }

}; 

class ExampleParent {

      void func();

protected:

      void Add(int x, int y) {

            printf("\nsum = %d\n", x + y);

      } 

      void PrintNum(int i) {

            printf("\ni = %d\n", i);

      }

public: 

      ExampleParent() {

            func();

      } 

      virtual ~ExampleParent() {

      }

}; 

void ExampleParent::func() {

      puts("\nfunc");

} 

class ExampleChild:public ExampleParent {

      void Print(char *s) {

            puts(s);

      } 

      void Print(int i) {

            PrintNum(i);

      } 

      void Increment(int &i) {

            i++;

      }

public:

      int val;

      int operator++(int i); 

      friend void FriendFunc(ExampleChild &ob);

      ExampleChild():val(89) {    

            this->Add(10, 2);

            Print("Str"); 

            int i = 10;

            Increment(i);

            Print(i);

      }

}; 

int ExampleChild::operator++(int i) {

      return ++val;

} 

void FriendFunc(ExampleChild &ob) {

      puts("FriendFunc"); 

      int k = 0;

      ob.Increment(k);

      printf("\nk = %d\n", k);

} 

int main()

{

/*** EXAMPLE PART 

      ExampleChild ob1;

      FriendFunc(ob1);

      printf("\n ob++ = %d\n", ob1++);

***/ 

      char str[30];

      char desc[70]; 

      FileMgr file; 

      msg.About();

      msg.Rules(); 

      PlayerMgr pl; 

      int bPlayAgain = false;

      int bWordWasGuessed;

      char ch;

      do {

            file.GetWord(str, desc); 

            if (!strlen(str) || !strlen(desc)) {

                  bPlayAgain = true;

                  continue;   

            } 

            if (pl.GetCurrPlayer() != 1) pl.SetCurrPlayer(1); 

            Word word(str, desc);

            word.Show(); 

            bWordWasGuessed = false; 

            do {

                  ch = towlower(_getch()); 

                  //exit

                  if (ch == ESCAPE) {

                        msg.ExitConfirm();

                        if (ev.DlgConfirm()) return 0;

                        else msg.BackInGame();

                  } 

                  switch(word.TryLetter(ch)) {

                        //new letter was opened

                        case 1: if (word.CheckWord()) {

                                          msg.Congrats(pl.GetCurrPlayer()); 

                                          msg.NewWord();

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