Автор: Пользователь скрыл имя, 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()) {