Игра "Ним"

Разработка консольной программы, являющейся аналогией игры "Ним", используемые в данном процессе средства программирования на языке C. Исследование главных правил игры. Анализ работы приложения и создание инструкции пользователя. Листинг программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.02.2019
Размер файла 5,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Игра «Ним»

Введение

программа игра приложение пользователь

Курсовая работа подразумевает собой создание игры. Суть игры заключается в том, что на столе расположено определенное количество кучек с определенным количеством спичек. Игроки, путем постепенного взятия с любой кучки спичек (не менее одной), должны забрать последнюю спичку(и) в оставшейся кучки.

Условия завершения игры:

игрок победил - игрок забрал последнюю спичку на столе раньше, чем его соперник;

игрок проиграл - соперник взял последнюю спичку со стола раньше, чем игрок;

После окончания игры выводится сообщение - результат (выигрыш одного игрока(компьютера)).

1. Постановка задачи

Правила игры «Ним»:

Цель игры - забрать последнюю(ие) спичку(и) со стола.

Правила игры «Ним» довольно несложные: Игроки, путем постепенного взятия с любой кучки спичек (не менее одной), должны забрать последнюю спичку(и) в оставшейся кучки.

2. Работа приложения

В начале кода программы используются основные функции вывода на экран игрового меню. На рисунке 2 пользователю предоставлена возможность выбора пункта меню. Часть кода, отвечающая за вывод меню, представлена на Листинге 1.

system («cls»);

int i;

printf («\n\n\n\n\n»);

printf («1. Играть\n»);

printf («2. Помощь\n»);

printf («3. Выход \n»);

i=getch();

Листинг 1 - Вывод меню игры

Рисунок 2.1. Игровое меню

Перед пользователем выводится игровое меню. В случае выбора пункта «1. Играть», пользователь переходит в новое меню, рисунок 2.1.

Рисунок 2.2. Выбор противника

В случае выбора пункта «Игра против игрока - 1» пользователь начинает игру против живого противника. На экран выводится меню в котором пользователь может выбрать кто будет делать ход первым, рисунок 2.2.

Рисунок 2.3. Выбор первого хода для игроков

После того как пользователь сделал свой выбор «игрок 1», на экран выводится псевдографический рисунок стола со спичками, и 5 кучек с определенным количеством спичек, с которых игроки поочередно могут брать спички (не менее одной), рисунок 2.3.

Рисунок 2.4. Игрок 1 делает ход

Игрок 1 делает ход, после чего ход делает игрок 2, рисунок 2.4.

Рисунок 2.5. Игрок 2 делает ход

После того как кто-либо из игроков заберет последнюю(ии) спичку(и) со стола (к примеру Игрок 2), то на экран выводится поздравительное сообщение, рисунок 2.5.

Рисунок 2.6. Игрок 2 победил

В случае выбора пункта «Игра против компьютера - 2» пользователь начинает игру против компьютера. На экран выводится сообщение об ошибке, рисунок 3.

Рисунок 2.7. Сообщение об ошибке

В случае выбора в игровом меню пункта «2. Помощь» на экран выводятся правила игры, рисунок 4.

Рисунок 2.8. Правила игры «Ним»

В случае выбора в игровом меню пункта «3. Выход» производится выход из программы.

3. Заголовочные файлы

В программе были использованы два основных заголовочных файла:

- #include «stdio.h»

Первый подключаемый файл - stdio.h заголовочный файл стандартной библиотеки языка Си, содержащий определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода [2]. Функциональность унаследована от «портативного пакета ввода / вывода» («portable I/O package»), написанного Майком Леском из Bell Labs в начале 1970-х.C++ ради совместимости, также использует stdio.h наряду со схожим по функциональности заголовочным файлом cstdio.

Функции, объявленные в stdio.h, являются весьма популярными благодаря тому, что являясь частью Стандартной библиотеки языка Си, они гарантируют работу на любой платформе, поддерживающей Си. Приложения на отдельных платформах могут, тем не менее, иметь причины для использования функций ввода / вывода самой платформы вместо функций stdio.h.

Стандарт определяет такое понятие, как поток - последовательный набор информации, который может быть входным или выходным, может быть представлен как файлом, так и устройством (например, терминалом). Поток может быть текстовым или бинарным. Текстовый поток - поток символов, разделенных строками. Каждая строка заканчивается символом новой строки. Бинарный поток - поток байтов, которые могут прозрачно представлять любую информацию. Поток может быть в одном из трех состояний: неориентированном (по умолчанию), «широко символьном» или битовым. Состояние определяется последней функцией, которая использовала этот поток.

Библиографический список

программа игра приложение пользователь

1 Статья о библиотеке Stdio.h [Электронный ресурс] - Режим доступа: http://ru.wikipedia.org/wiki/Stdio.h

2 Статья о программировании на си [Электронный ресурс] - Режим доступа: http://cppstudio.com/cat/271/

3 Статья о функциях на си [Электронный ресурс] - Режим доступа: http://cpp.com.ru

Приложение

Листинг программы

#include «stdio.h»

#include «time.h»

#include «Windows.h» // несколько окон и консоль

Yep (int *b) { // Игровое меню

system («cls»);

int i;

printf («\n\n\n\n\n»);

printf («1. Играть\n»);

printf («2. Помощь\n»);

printf («3. Выход \n»);

i=getch();

while (i<49 || i>51) {

printf («Некорректное число\n»);

i=getch();

}

if (i==49) choosePlayer(b); // Выбор игрока

if (i==50) {

int t;

system («cls»);

printf («\nПравила игры:»);

Листинг А.1 - Файл «Ним», лист 1

printf («\n На столе находится некоторое количество кучек,»);

printf («\nс некоторым количеством спичек (например, 5 кучек с»);

printf («\n11, 2, 4, 15, 9 спичками). При своем ходе игрок может»);

printf («\nвзять из любой одной кучки любое число спичек, но»);

printf («\n не меньше одной. Выигрывает тот, кто берет последнюю»);

printf («\nспичку.»);

printf («\n\n1. Назад\n»);

printf («2. Выход»);

t=getch();

while (t<49||t>50) {

printf («Некорректное число\n»);

t=getch();

}

if (t==49) Yep(b);

if (t==50) exit(0);

}

if (i==51) exit(0);

}

main() {

int a, i, b[4];

srand (time(0));

Листинг А.1, лист 2

for (i=0; i<4; i++) {

a=rand()%20; // Выбирается рандомное кол-во спичек в диапозоне до 20

b[i]=a+1; // Массив инициализирующий колличество куч со спичками

}

Yep(b); // Функция печати приветствия и объяснения правил игры

}

choosePlayer (int *b) { // Выбираем с кем пользователь хочет играть

int a, c;

printf («\nИгра против игрока - 1»);

printf («\nИгра против компьютера - 2»);

printf («\nВыбор противника:»);

c=getch();

if (c==51) exit(0);

while (c<49||c>50)

{

printf («\nНеккоректное число, введите 1 либо 2 введите снова:»);

c=getch();

}

Листинг А.1, лист 3

if (c==49) {

printf («\nКто начнет игру - ?»);

printf («\nИгрок 1 - 1»);

printf («\nИгрок 2 - 2»);

printf («\nВыбор игрока:»);

a=getch();

while (a<49||a>50) // если введут не 1 и не 2 то выдается ошибка

{

printf («\nНеккоректное число, введите снова:»);

a=getch();

}

printKuchi1 ();

if (a==49) player1 (b);

if (a==50) player2 (b);

}

if (c==50) {

system («cls»);

printf («\nИгра против компьютера не доступна!»);

 //getch();

Sleep(1000); // ждет минуту (1000с=1 мин.) и переходит обратно в меню

system («cls»);

choosePlayer(b);

Листинг А.1, лист 4

rintKuchi1 () { // Рисуем стол

printf («\n\t\t»);

printf («\n\t\t»);

printf («\n\t\t /// /// »);

printf («\n\t\t //// / // /// // »);

printf («\n\t\t ////// /// /// ///// //// »);

printf («\n\t\t»);

printf («\n\t\t»);

}

 // - Игра между игроками-

player1 (int *b, int i) {

system («cls»); // Ходит игрок #1

printKuchi1 (b);

int choose, choose1, spichki, a;

 //choose - кучка

 //choose1 - кол-во спичек которые вы возьмете

 //spickki -

Листинг А.1, лист 5

 //a - кол-во кучек

printf («\n\n»);

printf («\n\t\tИгрок 1 ходит»);

printf («\n\n»);

printf («Колличество оставшихся спичек в кучках на столе:»);

printf («\n\t\t#-кучки Кол-во спичек\n»);

for (a=0; a<=4; a++)

{

printf («\n\t\tКучка-%i Спичек-%i», a, b[a]);

}

printf («\nС какой кучки вы бы хотели взять спичку(ки)?»);

printf («\nКучка:»);

while (! scanf(«%i», &choose))

{while (getchar()!= '\n');

printf («Введите еще раз»);

} getchar();

while (choose>4 || choose<0)

{

printf («\nНекорректно число.»);

printf («Введите еще раз:»);

scanf («%i»,&choose);

}

while (b[choose]==0)

Листинг А.1, лист 6

{

printf («\nВ этой кучке закончились спички!»);

printf («\nВыберете другую:»);

scanf («%i»,&choose);

}

printf («\nВы выбрали % i кучку.», choose);

printf («\nСколько спичек хотели бы вы взять с % i кучки:», choose);

while (! scanf(«%i», &choose1))

{while (getchar()!= '\n');

printf («Введите еще раз»);

} getchar();

while (choose1>b[choose] || choose1<1)

{

printf («\nНекорректное число, введите еще раз:»);

scanf («%i»,&choose1);

}

 //printf («%i, %i, %i», choose, choose1, b[choose]); // проверяем чему равна каждая переменная в функции и индек в массиве

b[choose]=b[choose] - choose1;

check(b);

}

player2 (int *b, int i) {

Листинг А.1, лист 7

 // Ходит игрок #2

system («cls»);

printKuchi1 (b);

int choose, choose1, spichki, a;

printf («\n\n»);

printf («\n\t\tИгрок 2 ходит»);

printf («\n\n»);

printf («Колличество оставшихся спичек в кучках на столе:»);

printf («\n\t\t#-кучки Кол-во спичек\n»);

for (a=0; a<=4; a++)

{

printf («\n\t\tКучка-%i Спичек-%i», a, b[a]);

}

printf («\nС какой кучки вы бы хотели взять спичку(ки)?»);

printf («\nКучка:»);

while (! scanf(«%i», &choose))

{while (getchar()!= '\n');

printf («Введите еще раз»);

} getchar();

while (choose>4 || choose<0) // Если число пользователя не входит в диапозон колличества кучек

{

Листинг А.1, лист 8

printf («\nНекорректное число!»);

printf («Введите еще раз:»);

scanf («%i»,&choose);

}

while (b[choose]==0) // Проверяем колличество спичек в куче, равно ли оно = 0

{

printf («\nВ этой кучке закончились спички!»);

printf («\nВыберете другую:»);

scanf («%i»,&choose);

}

printf («\nВы выбрали % i кучку», choose);

printf («\nСколько спичек хотели бы вы взять с % i кучки:», choose);

while (! scanf(«%i», &choose1))

{while (getchar()!= '\n');

printf («Введите еще раз»);

} getchar();

while (choose1>b[choose] || choose1<1)

{

printf («\nНекорректное число, введите еще раз:»);

scanf («%i»,&choose1);

}

 //printf (9% i, %i, %i», choose,

Листинг А.1, лист 9

choose1, b[choose]); // проверяем чему равна каждая переменная в функции и индек в массиве

b[choose]=b[choose] - choose1;

check1 (b);

}

check (int *b) { // Проверяем на победителя игрока #1

system («cls»);

int a=0, i=2;

if (b[0]==a && b[1]==a && b[2]==a && b[3]==a && b[4]==a) // Проверяем если все елементы в массиве т.е. колличество спичек во всех кучах равно 0 то игрок победил

{

system («color 5f»);

printf («\n\t\t Игрок №1 Выиграл!»);

printf («\n\n\nСыграть еще раз?\n»);

printf («\n1.ДА»);

printf («\n2.НЕТ\n»);

int x;

x=getch();

while (x<49||x>50) {

printf («Некорректное число,\n»);

Листинг А.1, лист 10

printf («введите еще раз…\n»);

x=getch();

}

if (x==49) main();

if (x==50) {system («color 5f»); exit(0);}

}

else player2 (b, i); // Иначе возращемся к след. Игроку

}

check1 (int *b) { // Проверяем на победителя игрока #2

system («cls»);

int a=0, i=2;

if (b[0]==a && b[1]==a && b[2]==a && b[3]==a && b[4]==a) // Проверяем если все елементы в массиве т.е. колличество спичек во всех кучах равно 0 то игрок победил

{

system («color 7d»);

printf («\n\t\t Игрок №2 Выиграл!»);

printf («\n\nСыграть еще раз?\n»);

printf («\n1.ДА»);

printf («\n2.НЕТ\n»);

int x;

x=getch();

while (x<49||x>50) {

Листинг А.1, лист 11

printf («Некорректное число,\n»);

printf («введите еще раз…\n»);

x=getch();

}

if (x==49) main();

if (x==50) {system («color 7d»); exit(0);}

}

else player1 (b, i); // Иначе возвращаемся к след. Игроку

}

Листинг А.1, лист 12

Размещено на Allbest.ru

...

Подобные документы

  • Описание принципа развивающей игры в слова "Виселица". Разработка программы, реализующей задачу данной игры на языке Delphi. Обоснование выбора среды программирования, листинг файла, результаты отладки и тестирования, руководство для пользователя.

    курсовая работа [572,7 K], добавлен 14.07.2012

  • Приемы программирования в Delphi. Алгоритм поиска альфа-бета отсечения, преимущества. Описание программного средства. Разработка программы, реализующая алгоритм игры "реверси". Руководство пользователя. Листинг программы. Навыки реализации алгоритмов.

    курсовая работа [357,1 K], добавлен 28.02.2011

  • Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.

    курсовая работа [1,5 M], добавлен 17.01.2011

  • Исследование общих правил игры в шашки, инструкции пользователя и программиста. Характеристика основных алгоритмов, исполняющих задачи класса Life Widget. Оценка ходов компьютера и человека. Построение дерева поиска лучшего хода исходя из оценки функций.

    контрольная работа [1,3 M], добавлен 20.12.2012

  • Разработка программы логической игры в "крестики-нолики" пять в ряд на поле размера 15х15 клеток с применением графики на языке Pascal с использованием объектно-ориентированного программирования. Структура алгоритма программы и описание ее работы.

    курсовая работа [821,5 K], добавлен 13.02.2012

  • История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.

    курсовая работа [168,1 K], добавлен 27.09.2013

  • Разработка и создание игры "Змейка". Использование динамически-активных принципов языка Java. Графические объекты программы. Описание игры, правила, теоретические сведения. Классы приложения. Типы данных. Реализация. Метод. Объект. Блок-схема игры.

    курсовая работа [12,4 K], добавлен 18.06.2008

  • Исследование базовых концепций программирования приложений под операционную систему Windows. Изучение истории создания универсального языка программирования Си. Разработка графического пользовательского интерфейса. Обзор правил игры и алгоритма работы.

    курсовая работа [58,2 K], добавлен 09.11.2012

  • Написание игры "Lines" на языке Object Pascal в среде Delphi. Алгоритм работы программы. Описание метода генерации поля. Используемые константы и переменные. Форма приложения после старта игрового процесса. Основные элементы формы и обработки событий.

    курсовая работа [225,0 K], добавлен 12.04.2012

  • Описание алгоритма хода ЭВМ в режиме "пользователь-компьютер" в игре "Морской бой". Описание совокупности классов, их полей и методов. Разработка интерфейса и руководства пользователя по проведению игры. Листинг программы, написанной на языке Java.

    курсовая работа [645,0 K], добавлен 26.03.2014

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

    курсовая работа [494,5 K], добавлен 20.06.2012

  • Объектно-ориентированное программирование: понятие и содержание, история зарождения и развития, особенности и принципы реализации. Структура и назначение разрабатываемой программы, используемые технические и программные средства, формирование инструкции.

    курсовая работа [1,2 M], добавлен 17.04.2013

  • Создание компьютерной игры посредством среды программирования Delphi. Инструменты разработки, компоненты и методы для разработки программы. Логическая и физическая структуры, основные функции и элементы управления программы, ее тестирование и отладка.

    курсовая работа [27,9 K], добавлен 26.07.2014

  • Создание программы на языке программирования С#, которая проверяет наличие в матрице хотя бы одного столбца, содержащего положительный элемент, поиск его номера. Упорядочивание его элементов по возрастанию. Листинг программы и инструкция по работе с ней.

    курсовая работа [1,9 M], добавлен 28.05.2014

  • Знакомство с интерфейсом пользователя и сценарием использования программы игры в крестики и нолики. Функциональные и нефункциональные требования для персонального компьютера. Исключительные ситуации и реакция программы. Пример кода игры и комментарии.

    курсовая работа [236,5 K], добавлен 27.01.2014

  • Реализация анкеты "Литературные предпочтения" средствами разработки PHP, MYSQL. Структура баз данных и приложения. Программная реализация анкеты на языке программирования php, руководство пользователя. Разработка PHP скриптов. Листинг программы.

    курсовая работа [351,1 K], добавлен 02.12.2010

  • Разработка программы казуальной игры "Zuma Deluxe" на языке С\С++. Использование стиля древних инков и ацтеков, возможностей графического движка HGE version 1.53. Назначение основных классов игры. Руководство пользователя, содержание главного меню.

    курсовая работа [8,3 M], добавлен 28.10.2014

  • Разработка эскизного и технического проекта программы игры "Собери картинку". Назначение и область применения, основные технические характеристики. Разработка рабочего проекта, разработка и спецификация программы игры. Описание и тестирование программы.

    курсовая работа [22,6 K], добавлен 10.06.2010

  • Разработка компьютерной программы, которая реализует игру "Арканоид". Освоение приемов программирования на языке С++ с использованием средств OpenGL, разбор структуры и логики игры, приобретение навыков работы с 3D графикой. Руководство пользователя.

    курсовая работа [1,2 M], добавлен 02.03.2017

  • Особенности визуальной среды программирования Microsoft Visual Studio 2015 Enterprise. Средства объектно-ориентированного программирования. Этапы проектирования программного комплекса. Отладка и тестирование программы игры "Виселица".

    курсовая работа [2,4 M], добавлен 31.01.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.