Автор: Пользователь скрыл имя, 29 Июля 2014 в 12:36, курсовая работа
Цель курсовой работы – научиться реализовывать пошаговую игру. Результатом курсовой работы является рабочая игра «Угадай слово». Игра «Угадай слово» разработана с использованием компилятора MinGW. Исходный текст программы написан на языке C. В процессе разработки игры была изучена лексика языка C. Пояснительная записка выполнена в текстовом редакторе Microsoft Word 2010.
Задание
Реферат
Введение
Основная часть
Заключение
Библиографический список
Приложение А
Федеральное агентство железнодорожного транспорта
Омский государственный университет путей сообщения
Кафедра «Автоматика и системы управления»
К ЗАЩИТЕ ДОПУСТИТЬ
____________Е.А. Альтман
«___»__________________2013 г
ПРОГРАММА «УГАДАЙ СЛОВО»
Пояснительная записка к курсовой работе
по дисциплине «Технология программирования»
ИНМВ.300000.000 ПЗ
_________И.В. Сафонов
«__»__________2013 г.
Доцент кафедры АиСУ
________Е.А. Альтман
«__»_________ 2013 г.
Омск 2013
На языке C, используя знания, полученные в ходе семестра на лекциях, практиках лабораторных занятиях, а так же самостоятельно, написать игру «Угадай слово».
Правила игры:
Загадывается слово из пяти букв, игроки должны его отгадать. Игроки по очереди называют тестовые слова. Сообщается количество совпадений с загаданным словом, количество совершенных попыток. Выигрывает тот, кто быстрее угадал слово.
УДК 004.9
Пояснительная записка к курсовой работе содержит 22 страницы, 7 рисунков, 3 использованных источника, 1 приложение.
C, MinGW, NotePad++.
Объектом курсовой работы является игра «Угадай слово».
Цель курсовой работы – научиться реализовывать пошаговую игру.
Результатом курсовой работы является рабочая игра «Угадай слово».
Игра «Угадай слово» разработана с использованием компилятора MinGW. Исходный текст программы написан на языке C.
В процессе разработки игры была изучена лексика языка C.
Пояснительная записка выполнена в текстовом редакторе Microsoft Word 2010.
Курсовая работа является примером реализации задачи об игре «Угадай слово», написанной на языке высокого уровня C.
Особенность языка C заключается в том, что, будучи языком высокого уровня, он сохранил многие черты языка низкого уровня. Язык C расположен между языками высокого уровня и языками низкого уровня, и в этом заключаются его сильные и слабые стороны. Как и язык ассемблера (или любой другой язык низкого уровня), язык программирования C может непосредственно управлять памятью компьютера. С другой стороны, C обладает чертами языков высокого уровня, поэтому программы на языке C создавать и читать легче, чем программы на языке ассемблера. Язык C является очень удобным для написания системных программ, но иной раз в программе на языке C труднее разобраться, нежели в программах, написанных на других языках. Так же язык C имеет меньше возможностей для автоматической проверки программ, чем некоторые другие языки высокого уровня.
При запуске игры «Угадай слово», пользователю предоставляется выбор режима игры. Иллюстрацию выбора режима можно наблюдать на рисунке 1.
Рисунок 1 – Начало игры
Вне зависимости от выбора режима игры, загаданное слово берётся из словаря случайно. Если выбран режим двух игроков (1), то они по очереди пытаются угадать слово, при этом, после каждого ввода, им говорится, сколько совпадений с загаданным словом они имеют. Процесс ввода слов игроков и игровое поле представлены на рисунке 2. Также, перед игрой идет загрузка словаря с указанием, сколько слов загружено и сколько памяти на это ушло.
Рисунок 2 – Процесс игры режима 1
Во время ввода слов игроками идет единовременная проверка на наличие слова в словаре и на длину слова (оно должно состоять из 5 символов). Если слова нет в словаре или не учтена длина слова, то выдается ошибка. Текст ошибки представлен на рисунке 3.
Рисунок 3 – Ошибка при вводе слова
После того, как слова введены правильно, они, количество попыток и количество совпадений заносятся в игровое поле данных (Рисунок 4).
Рисунок 4 – Обновленное поле, после ввода слов
При выборе режима игры (2), принцип игры остается таким же, только лишь меняется вид игрового поля. Ну и конечно добавляется алгоритм игры компьютера. Игровое поле режима (2), а так же процесс ввода слов представлен на рисунке 5.
Рисунок 5 – Режим игры (2)
Ввиду сложности отгадывания слова, на каждой пятой попытке дается подсказка: выдается случайная буква из загаданного слова. Вид подсказки показан на рисунке 6.
Рисунок 6 – Подсказка
Если слово отгадано, то выдается сообщение о выигрыше и информация, кто и с какого раза угадал слово. Это показано на рисунке 6.
Рисунок 7 – Выигрыш
Описание функций:
В ходе курсовой работы была реализована игра «Угадай слово». В ней игроки (или игрок и компьютер) пытаются отгадать загаданное слово. На первый взгляд может показаться, что угадать слово не возможно, однако у игроков есть доступ к словам другого игрока, т.е. они видят и введенные слова, и количество совпадений друг друга, что упрощает задачу.
Программа была написана на языке программирования C в текстовом редакторе «NotePad++». Игра была разработана с помощью компилятора «MinGW».
В программе были использованы функции стандартных библиотек языка С, а так же возможности его синтаксиса. К программе подключен файл со словарем dict1.txt.
(обязательное)
Листинг программы
/*ИГРА: Отгадай слово.
Загадывается слово из пяти букв, игроки должны его отгадать.
Игроки называют тестовые слова.
Сообщается количество совпадений с загаданным словом, количество совершенных попыток.
Выигрывает тот, кто быстрее угадал слово.
*/
#include "stdio.h"
#include "math.h"
#include "time.h"
#include "string.h"
#include "conio.h"
#include "stdlib.h"
#define fdict "dict1.txt"
struct main //
{
int w1; //Количество попыток игрока 1
int w2; //Количество попыток игрока 2
int w3; //Количество попыток компьютера
char word1[20][5]; //Слова 1 игрока
char word2[20][5]; //Слова 2 игрока
char word0[5]; //Слово, которое загадал ведущий
int score1; //Cовпадений 1 игрока
int score2; //Совпадений 2 игрока
int score3; //Совпадений компьютера
};
struct word //
{
char w1[20]; //Введенное слово 1 игрока
char w2[20]; //Введенное слово 2 игрока
char w3[20]; //Введенное слово компьютера
int x; //Количество совпадений с загад. словом
};
void print_main(int x,struct main *st, struct word *wrd) //Функция печатает общее сoстояние игры
{
printf("\n===================\
if(x==1)
{
printf("Играют Игрок 1 и Игрок 2\n");
printf("Игрок 1 - попыток :%2i Игрок 2 - попыток:%2i\n",st->w1, st->w2);
printf("Игрок 1 - введенное слово :%s Игрок 2 - введенное слово:%s\n",wrd->w1, wrd->w2);
printf("Совпадения Игрока 1:%2i из 5 Совпадений Игрока 2:%2i из 5\n",st->score1, st->score2);
}
if(x==2)
{
printf("Играют Игрок 1 и Компьютер\n");
printf("Игрок 1 - попыток :%2i Компьютер - попыток:%2i\n",st->w1, st->w3);
printf("Игрок 1 - введенное слово :%s Компьютер - введенное слово:%s\n",wrd->w1, wrd->w3);
printf("Совпадения Игрока 1:%2i из 5 Совпадений Компьютера:%2i из 5\n",st->score1, st->score3);
}
}
void get_init(struct main *st, char **ap , int words) //Функция задания начального состояния игры
//Заполняет структуру main, начальное слово берется случайно
{
int x=1+rand()%words;
strcpy(st->word0, ap[x]);
st->w1=0;
st->w2=0;
st->score1=0;
st->score2=0;
}
void hint(struct main *st, struct word *wrd, char **ap , int words) //Функция подсказки(выдается на каждой пятой попытке)
{
int z=0+rand()%4;
char *str=st->word0;
int q=dict_word(ap, words, str);
if(st->w1%5==0&&st->w1!=0)
printf("\nПодсказка! Буква №%i это:%c\n",z+1,*(ap[q]+z));
}
void get_word(int x, struct main *st, struct word *wrd, char **ap , int words) //Вводит слова игроков и записывает их в структуру
{
char a[5];
char b[5];
st->score1=0;
st->score2=0;
if(x==1)
{
while((strlen(a)!=5)||(dict_
{
printf("Игрок 1. Введите слово для проверки\n");
fflush(stdin);scanf("%s",&a);
if((strlen(a)==5)&&(dict_word(
{
st->w1=st->w1+1;
strcpy(wrd->w1, a);
}
else printf("Cлово некоректно! Должно состоять из пяти символов и существовать!\n");
}
while((strlen(b)!=5)||(dict_
{
printf("Игрок 2. Введите слово для проверки\n");
fflush(stdin);scanf("%s",&b);
if(strlen(b)==5&&(dict_word(
{
st->w2=st->w2+1;
strcpy(wrd->w2, b);
}
else printf("Cлово некоректно! Должно состоять из пяти символов и существовать!\n");
}
}
if(x==2)
{
while((strlen(a)!=5)||(dict_
{
printf("Игрок 1. Введите слово для проверки\n");
fflush(stdin);scanf("%s",&a);
if((strlen(a)==5)&&(dict_word(
{
st->w1=st->w1+1;
strcpy(wrd->w1, a);
}
else printf("Cлово некоректно! Должно состоять из пяти символов и существовать!\n");
}
}
}
void get_comp(struct main *st, struct word *wrd, char **ap , int words) //Функция печати слова компьютером
{
if((st->w3)<=3)
{
int j=1+rand()%4897;
printf("Слово компьютера:\n%s\
st->w3=st->w3+1;
strcpy(wrd->w3,ap[j]);
getch();
}
else
{
int q;
char *str=st->word0;
q=dict_word(ap, words, str);
if(wrd->x==0) {
printf("Слово компьютера:\n%s\n", ap[q-3]);
strcpy(wrd->w3,ap[q-3]);
st->w3=st->w3+1; }
if(wrd->x==1) {
printf("Слово компьютера:\n%s\
strcpy(wrd->w3,ap[q+2]);
st->w3=st->w3+1; }
if(wrd->x==2) {
printf("Слово компьютера:\n%s\
strcpy(wrd->w3,ap[q-1]);
st->w3=st->w3+1;}
if(wrd->x==3) {
printf("Слово компьютера:\n%s\n", ap[q]);
strcpy(wrd->w3,ap[q]);
st->w3=st->w3+1;}
wrd->x=wrd->x+1;
getch();
}
}
void check_word(int x,int gamer,struct main *st, struct word *wrd) //Проверяет введенные слова игроков на соответсвтие с загаданным
{
if(x==1)
{
int i=0;
char *px=wrd->w1;
char *py=wrd->w2;
char *pa=st->word0;
while(i<5)
{
if(gamer==2)
{
if(pa[i]==py[i]) //если символ загаданного слова с введенным совпадает, то +1 к счету совпадений