Автор: Пользователь скрыл имя, 18 Декабря 2011 в 17:51, курсовая работа
Дана  курсова робота утворює оболонку користувача, за допомогою якої можна запускати деякі програми не виходячи в операційну систему, і після завершення роботи програми повертатись до самої операційної системи.
     У даній курсовій роботі була розроблена гра «Lines» її інтерфейс та наведено приклади її використання. Для розробки використовувалося середовище Java, консольна версія програми.
ВСТУП
АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБҐРУНТУВАННЯ ЗАВДАННЯ НА РОБОТУ …7
РОЗРОБКА ІНТЕРФЕЙСУ. ПРИКЛАДИ ВИКОРИСТАННЯ………………………………………...11
РОЗРОБКА ДІАГРАМИ КЛАСІВ ТА ДІАГРАМИ ВЗАЄМОДІЙ……………………………………19
РОЗРОБКА ЯДРА ПРОГРАМИ………………………………………………………………………....23
РОЗРОБКА ПІДСИСТЕМИ ФОРМУВАННЯ ЗОБРАЖЕННЯ..........………………………………...28
РОЗРОБКА ПІДСИСТЕМИ ОБМІНУ ПО МЕРЕЖІ..............................................................................31
ІНСТРУКЦІЯ КОРИСТУВАЧА………………………………………………………………………....33
ВИСНОВКИ……………………………………………………………………………………………....34
ПЕРЕЛІК ПОСИЛАНЬ…………………………………………………………………………………..35
ДОДАТКИ………………………………………………………………………………………………..36
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(
      } 
~Alphabet() {
delete []letters;
      } 
void Show() {
            _cputs("\
for (int i = 0; i < length; i++) {
                  _putch(
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) {
                        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(
            aWord = new Letter[length]; 
for (int i = 0; i < length; i++)
                  aWord[i].
            SetDescription(
      } 
~Word() {
delete []aWord;
      } 
void Show() {
msg.Line();
            printf("
            _cputs("Word:     
for (int i = 0; i < length; i++) {
                  aWord[i].
}
_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[
                        bLette
}
            } 
            int bLetterWasUsed = abc.RefreshLetters(letter); 
if (bLetterWasGuessed) {
                  msg.
Show();
return 1; //new letter was opened
            } 
if (!bLetterWasUsed) {
                  msg.
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(
MAX_PLAYERS = maxPl;
      } 
void SetCurrPlayer(int val) {
nCurrPlayer = val;
            msg.ShowPlayer(
      } 
int GetCurrPlayer() {
return nCurrPlayer;
      } 
void ChangePlayer() {
            int nextPl; 
if ( GetCurrPlayer() >= MAX_PLAYERS ) nextPl = 1;
            else nextPl = GetCurrPlayer() + 1; 
            SetCurrPlayer(
}
}; 
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.
                  ev.PressKey(
                  exit(EXIT_
            } 
            currWord[strlen(
      } 
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(
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.
if (ev.DlgConfirm()) return 0;
else msg.BackInGame();
                  } 
                  switch(word.
//new letter was opened
case 1: if (word.CheckWord()) {