Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРСОВАЯ БУРКОВА.docx
Скачиваний:
3
Добавлен:
26.09.2019
Размер:
139.87 Кб
Скачать

4.7 Данные к работе

Игроки выбирают числа от единицы до десяти при помощи клавиатуры. Если игроку необходимо выбрать число 10, он нажимает на клавишу “0”, и программа принимает ее за десятку.

Программа должна считывать символы с клавиатуры и отвечать пользователю определённым действием, результаты которого выводятся на экран. Таким образом, к входным формам относятся данные, считанные с клавиатуры, к выходным – изображение, выводимое на экран монитора.

5 Заключение

По результатам выполнения курсовой работы можно сделать следующие выводы:

  • проведением сравнительного анализа между языками программирования Си и Паскаль был выявлен оптимальный язык для реализации поставленного задания, язык Си. Также сравнительный анализ показал, что язык программирования Си является более удобным и гибким для реализации проектов различного вида;

  • разработан алгоритм решения задачи в условиях, когда игра идет между человеком и машиной, машиной и машиной, человеком и человеком. Поставлена задача создания программы «100 спичек» со следующими условиями: графический интерфейс и меню пользователя, ознакомление с правилами игры. Было написано компьютерное приложение «100 спичек» на языке высокого уровня Си. В результате работы был разработан алгоритм стратегии игры в трех режимах, получен опыт разработки графического интерфейса, игрового процесса;

  • создана игра «100 спичек», обладающая следующими функциями: возможность выбора пунктов меню с помощью клавиатуры, возможность игры в трех режимах, дружественный интерфейс игры, возможность ознакомления с правилами игры.

6 Список используемых источников

1. Компьютер – Википедия [Электронный ресурс]: энциклопедия. – URL: http://ru.wikipedia.org/wiki/Компьютер

2. Программирование на paskal [Электронный ресурс] – URL: http://pascal.yeremey.ru/?page_id=32

3. Р. Уинер «Язык Турбо Си». (Изд-во «Мир», 1991. 383 стр.)

4. М. Уэит, С. Прата, Д. Мартин «Язык Си. Руководство для начинающих» (изд-во «Мир», 1988).

5. Касаткин А.И. От Turbo C к Borland C++. – Минск.: Вышэйшая школа, 1992.

6. Язык PASKAL. Программирование для начинающих [Электронный ресурс] – URL: http://pas1.ru/

7. Харбинсон С.П., Стил Г.Л. Язык программирования С. – М.:Бином, 2003. – 528 стр.

8. Визуальный словарь [Электронный ресурс]: словарь. – URL: http://vslovar.org.ru

9. ГОСТ 19781-90. Обеспечение систем обработки информации программное. Термины и определения. – Введ. 01.01.1992. – М.: ИПК Издательство стандартов, 2001.

Приложение а (справочное)

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <graphics.h>

#include <dos.h>

#include <string.h>

int number = 100;

int firstComp, strateg;

void printRest(int rest) {

char buffer[5];

sprintf(buffer, "%d", rest);

settextstyle(DEFAULT_FONT, 0, 4);

setcolor(9);

outtextxy(300, 200, buffer);

settextstyle(DEFAULT_FONT, 0, 1);

}

void printTextWithNumber(int num, int type) {

setcolor(8);

char buffer[5];

sprintf(buffer, "%d", num);

switch(type) {

case 1:

setcolor(4);

outtextxy(220, 160, "You choose number = ");

outtextxy(380, 160, buffer);

break;

case 2:

setcolor(1);

outtextxy(220, 360, "Person ");

outtextxy(280, 360, buffer);

outtextxy(300, 360, "WIN!!!");

break;

case 3:

setcolor(1);

outtextxy(220, 360, "Computer ");

outtextxy(300, 360, buffer);

outtextxy(320, 360, "WIN!!!");

break;

case 4:

setcolor(4);

outtextxy(220, 160, "Random comp choose number = ");

outtextxy(440, 160, buffer);

break;

}

}

void printOpponentStep(int prevNumber) {

char buffer[5];

sprintf(buffer, "%d", prevNumber);

setcolor(4);

outtextxy(220, 280, "Opponent choose number = ");

outtextxy(420, 280, buffer);

}

void printPersonHead(int personId, int prevNumber) {

char buffer[5];

printOpponentStep(prevNumber);

sprintf(buffer, "%d", personId);

setcolor(4);

outtextxy(220, 320, "Step of person ");

outtextxy(340, 320, buffer);

}

int personStep(int personId, int prevNumber) {

int choosedNumber;

int wrongNumber = 0;

int color = 7;

char ch;

do {

cleardevice();

printRest(number);

if(wrongNumber) {

setcolor(color);

outtextxy(220, 360, "Wrong pressed key!");

setcolor(255);

}

printPersonHead(personId, prevNumber);

ch = getch();

if (ch < '0' || ch > '9') {

wrongNumber = 1;

color += 1;

if (color > 7) color = 2;

}

}while (ch < '0' || ch > '9');

choosedNumber = ch - 48;

if (choosedNumber == 0) choosedNumber = 10;

printTextWithNumber(choosedNumber, 1);

getch();

return (choosedNumber);

}

int computerStep(int id, int prevCompNumber, int prevPersonNumber) {

int result;

if (firstComp == 0) {

result = 11 - prevPersonNumber;

} else {

if (strateg == 0) {

int sum = prevCompNumber + prevPersonNumber;

if (sum != 11 && sum > 0) {

strateg = 1;

result = (number - 1) % 10;

} else {

result = 1;

}

} else {

result = (number - 1) % 10;

}

}

return result;

}

int randomComputerStep(int id, int prev) {

int result;

cleardevice();

printRest(number);

printOpponentStep(prev);

if (number < 11)

if (number > 1)

result = rand() % (number - 1) + 1;

else result = 1;

else

result = rand() % 10 + 1;

printTextWithNumber(result, 4);

delay(2500);

return result;

}

void printError(int errorType) {

switch (errorType) {

case 0:

printf("Number not in range[1...10]! Repeat:\n");

break;

case 1:

setcolor(6);

outtextxy(220, 380,"Number too many for rest! Repeat your choose");

getch();

break;

}

}

void initGraph() {

int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, "C:\\TurboC++\\Disk\\TurboC3\\BGI");

errorcode = graphresult();

if (errorcode != grOk) {

printf("Graphics error: %s\n", grapherrormsg(errorcode));

printf("Press any key to halt:");

getchar();

exit(1);

}

}

void closeGraph() {

closegraph();

}

void gamePersonVSPerson() {

int personId = 1;

int prevNumber = 0;

number = 100;

while(number > 0) {

int currentNumber = personStep(personId, prevNumber);

if (currentNumber > number ) {

printError(1);

continue;

}

number -= currentNumber;

prevNumber = currentNumber;

if (personId == 1) personId = 2;

else personId = 1;

}

printRest(number);

printTextWithNumber(personId, 2);

getchar();

}

void gamePersonVSComp() {

cleardevice();

setcolor(1);

outtextxy(220, 220, "First step of:");

outtextxy(220, 235, "Key 1 - Person");

outtextxy(220, 250, "Other - Computer");

char ch = getch();

int counter;

if (ch - 48 == 1) {

firstComp = 0;

counter = 1;

} else {

firstComp = 1;

counter = 0;

}

strateg = 0;

number = 100;

int prevCompNumber = 0;

int prevPersonNumber = 0;

while (number > 0) {

int currNumber;

if (counter % 2 == 0) {

currNumber = computerStep(counter % 2 + 1, prevCompNumber, prevPersonNumber);

prevCompNumber = currNumber;

} else {

currNumber = personStep(counter % 2 + 1, prevCompNumber);

if (currNumber > number) {

printError(1);

continue;

}

prevPersonNumber = currNumber;

}

number -= currNumber;

counter++;

}

if (counter % 2 == 0)

printTextWithNumber(firstComp % 2 + 1, 3);

else

printTextWithNumber(firstComp % 2 + 1, 3);

printRest(number);

getch();

}

void gameCompVSComp() {

cleardevice();

setcolor(1);

outtextxy(220, 220, "Random computer is:");

outtextxy(220, 235, "Key 1 - First computer");

outtextxy(220, 250, "Other - Second Computer");

char ch = getch();

int counter;

if (ch - 48 == 1) {

firstComp = 0;

counter = 1;

} else {

firstComp = 1;

counter = 0;

}

strateg = 0;

number = 100;

int prevCompNumber = 0;

int prevPersonNumber = 0;

while (number > 0) {

int currNumber;

if (counter % 2 == 0) {

currNumber = computerStep(counter % 2 + 1, prevCompNumber, prevPersonNumber);

prevCompNumber = currNumber;

} else {

currNumber = randomComputerStep(counter % 2 + 1, prevCompNumber);

prevPersonNumber = currNumber;

}

number -= currNumber;

counter++;

}

if (counter % 2 == 0)

printTextWithNumber(firstComp % 2 + 1, 3);

else

printTextWithNumber(firstComp % 2 + 1, 3);

printRest(number);

getch();

}

void drawPoint(int x, int y, int hide) {

if (hide == 1) setcolor(0);

circle(x, y, 3);

if (hide == 1) setcolor(2);

}

int drawMenu() {

cleardevice();

setbkcolor(7);

char ch;

int x = 210;

int y = 225;

setcolor(2);

drawPoint(x, y, 0);

outtextxy(220, 200, "Select game");

setcolor(1);

outtextxy(220, 125, "!!! WELCOME !!!");

setcolor(4);

outtextxy(200, 160, "THE GAME 100 MATCHES");

setcolor(255);

outtextxy(220, 225, "Person VS Person");

outtextxy(220, 240, "Person VS Computer");

outtextxy(220, 255, "Computer VS Computer");

outtextxy(220, 270, "Help");

outtextxy(220, 285, "Exit");

ch = getch();

while (ch != 13) {

ch = getch();

drawPoint(x, y, 1);

switch (ch) {

case 80:

y += 15;

if (y > 285) y = 225;

break;

case 72:

y -= 15;

if (y < 225) y = 285;

break;

}

drawPoint(x, y, 0);

}

return y;

}

void help() {

cleardevice();

FILE *h;

h=fopen("C:\\HELP.TXT","r");

if ((h)==NULL) printf("Error. File not open. Check your path to file");

setcolor(15);

char str[36];

for (int i=0; i<5; i++) //stroki

{

//str[i] = (char *)malloc(35 * sizeof(char));

fgets(str, 35, h);

setcolor(1);

outtextxy(230, 190 + 15 * i, str);

}

if (getch()==13)

{

cleardevice();

setbkcolor(7);

int x = 210;

int y = 225;

setcolor(2);

drawPoint(x, y, 0);

outtextxy(220, 200, "Select game");

setcolor(1);

outtextxy(220, 125, "!!! WELCOME !!!");

setcolor(4);

outtextxy(220, 160, "THE GAME 100 MATCHES");

setcolor(255);

outtextxy(220, 225, "Person VS Person");

outtextxy(220, 230, "Person VS Computer");

outtextxy(220, 255, "Computer VS Computer");

outtextxy(220, 270, "Help");

outtextxy(220, 285, "Exit");

drawPoint(0,0,0);

int y0 = drawMenu();

switch (y0) {

case 225:

gamePersonVSPerson();

break;

case 240:

gamePersonVSComp();

break;

case 255:

gameCompVSComp();

break;

case 270:

help();

break;

}

}

fclose(h);

}

void main() {

number = 100;

initGraph();

int y = 0;

do{

y = drawMenu();

switch (y) {

case 225:

gamePersonVSPerson();

break;

case 240:

gamePersonVSComp();

break;

case 255:

gameCompVSComp();

break;

case 270:

help();

break;

}

}while(y != 285);

closeGraph();

}