Помощь в написании студенческих работ
Антистрессовый сервис

Разработка рабочего проекта

РефератПомощь в написанииУзнать стоимостьмоей работы

И заменяется эти выводы, т. е. место от куда их вырезали, выводом print_board (). В main прописывается вывод сообщения «the final board layout is: «в окне консоли «средством» cout<< и ниже пишется строка print_board () т. е. используется функция чтобы ещё раз напечатать доску (board). Создаётся функция void clearscreen () для очистки экрана консоли, для этого заводится цикл for (int i = 0; i<100… Читать ещё >

Разработка рабочего проекта (реферат, курсовая, диплом, контрольная)

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

Требуется разработать игровое приложение «крестики-нолики». Игровое поле состоит из 3×3 поля .

В данной игре должно быть реализовано создание:

  • 1. Интуитивно понятного интерфейса;
  • 2. Поле, где осуществляется игровой момент;
  • 3. Удобного для пользователя управления;
  • 4. Возможность в любой момент покинуть игру или продолжить.

компьютерный игра программирование интерфейс.

Описание алгоритма решение задачи

1) Создание доски в которой пользователь будит вводить данные. Подключается файл, в котором объявлен объект cout, при помощи директивы include. Далее создаётся функция main внутри которой расположены инструкции ограниченные фигурными скобками ({ }). Перед названием функции указывается тип возвращаемого значения. Ключевое слово int означает, что функция возвращает целое число. Вывод строки на экран с помощью объекта cout. Чтобы исключить конфликт имён все стандартные идентификаторы в языке С++ определены в пространстве имён std. Поэтому перед именем объекта cout необходимо указать название пространства имён. Между названием пространством имён и названием объекта указывается два двоеточия (cout). С помощью cout в окно выводится заголовок Menu hodov: и номирацию ячеек «-7-|-8-|-9-» и т. д. Строки заканчиваются операторами (оператор перехода на новую строчку) и endl в конце строк (;) Оператор return возвращает функции main () 0(ноль).

  • 2) Выводится ниже пустая доска с заголовком «Game board» (игровое поле) в которой и будут отображаться X или О. Для ввода X или О в ячейках пустой доски пользователь вводит цифру в строке ниже пустой доски, по средством ввода цифр отвечающих за данную клетку. К примеру введя цифру 5 для ячейки принадлежащей цифре 5 в доске «Menu hodov» и отобразится X или О, но в пустой доске расположенной ниже.
  • 3) Создаётся своя функция которая и будит рисовать доску. Что бы не загромождать main. В main останется главная логика (начать программу, взять у пользователя его выбор, нарисовать его на доске). Функция эта будит называться «get_move ()» (Получить ввод пользователя). Переносится в неё из main строки досок (в листинге выделены красным и в main останется только оператор return, возвращающий ноль 0;)и размещаются в { }, точка с запятой после закрывающей функцию фигурной скобки не ставится. Что бы получить вход пользователя создаётся переменная «move» и просим что бы пользователь ввёл эту переменную (число) при помощи «cin >>» и возвращаем оператором return значение «move». Но пользователь может ввести/описаться число меньше 1 и больше 9. Чтобы напомнить пользователю что цифры меньше 1 и больше 9 не играют, создаётся цикл «while» который проверяет: «пока вход который дал пользователь больше 9 (move > 9) или () вход меньше 1 (move < 1). Если пользователь ввёл число меньше 1 и больше 9 то выводится на экран при помощи cout<> у пользователя другой вход move (ввод числа от 1 до 9). В функции main пишется несколько строк что бы протестировать функцию. int move = get_move (); std: cout<< «the move you intereted is:»

<< move << endl; Пишется с помощью cout<< в окне консоли сообщение «the move you intereted is:» .

  • 4) Сейчас программа получает ход пользователя и рисует пустую доску. Чтобы отобразить ход (ввод)пользователя на доске переписывается нынешняя. Доска будит состоять из 9-и однобуквенных символов char. Заменяется переменная стринг (-) на переменную board[] с номером клетки, т.к. переменные начинаются с нуля, то вместо 1 пишется 0, вместо 2 пишется 1 и т. д. Пишется простой цикл for (int i=0; i<9; i++) для 9 ходов и два выражения ставятся в цикл int move = get_move () cout <<" the move you intereted is:" << move <
  • 5) Создаётся функция void print_board (){ … } которая будит выводить доску на экран. В фигурные скобки вырезается и переносится 4 строки:

cout << «Game board:» << endl;

cout << «-» <<<" -|-" <<<" -|-" <<<" - «;

cout << «-» <<<" -|-" <<<" -|-" <<<" - «;

cout << «-» <<<" -|-" <<<" -|-" <<<" - «;

И заменяется эти выводы, т. е. место от куда их вырезали, выводом print_board (). В main прописывается вывод сообщения «the final board layout is: «в окне консоли «средством» cout<< и ниже пишется строка print_board () т. е. используется функция чтобы ещё раз напечатать доску (board). Создаётся функция void clearscreen () для очистки экрана консоли, для этого заводится цикл for (int i = 0; i<100; i++) который отсчитывает от 0 до 100 и при каждом повторении цикла выводит на экран cout<<9; i++)) который в цикле проходит по всем 9-и ячейкам на доске. board[i] поставит туда пустышку = '-`. Это возвращает доску в своё изначальное состояние. Для этого она устанавливается в начале main. Остаётся char board[9] пустой массив {} потому, что есть функция clearboard () которая очистит доску когда запустится main.

  • 6)Создаётся функция bool win (char player) которая проверяет когда игра закончилась. Функция win возвращает bool (правда или ложь, т. е. bool это переменная с двумя состояниями либо 0(ноль) если состояние ложь и либо 1(единица) если состояние правда) и передаётся знак (char player) игрока которого проверяем. Ниже создаётся двухмерный массив wins[8][3](8 по 3) в котором перечисляются все выигрышные варианты и пишется рядом/ниже с доской (функцией которая очищает доску). Далее/ниже заводится цикл for который повторяется 8 раз (int i = 0; i<8; i++)и в этом цикле запускается ещё цикл for который повторяется 3 раза (int j = 0; j<3; j++). Этими циклами проверяется если у одного из игроков есть фишки на всех трёх местах из какой-нибудь из тройки. К примеру если один из игроков первым поставил крестики или нолики в клетках 1, 2, 3 (т.к. переменные отсчитываются с 0(ноля) тогда эквивалент клеток 1, 2, 3 в окне консоли в коде {0,1,2}) то он выиграл. После/ниже первого цикла for [i] прописывается переменнаяint счётчикcount и задаётся ей значение =0. Грубо говоря цикл for (int i = 0; i<8; i++)проверяет массив[8], а цикл for (int j = 0; j<3; j++) проверяет массив [3]. Далее: Ifесли (на boardдоске на квадратике который задан в массиве[wins]по элементу[i] и [j] будит ровняться player (проверяемого X или О (char player)) Если на этом месте в массиве доска стоит X то увеличивается count на единицу ++. В конце цикла говорится Ifесли (счётчикcount ровняется== 3) т. е. к примеру проходится троечка {0,1,2} и все три ровняются крестику (Х) или нолику (О) то возвращается return правда true (он выиграл), а если это не произошло то возвращается return ложь false (он не выиграл). В int main создаётся переменная turn (ход) типа int изначально будит первой ход и ровняться= 0. Ниже вместо цикла for пишется цикл while (не! выиграл пользователь win играющий иксом (X)('x') и&& не! выиграл пользователь win играющий ноликом (О)('О')) то выполняется код ниже. В if (i%2 == 0) заменяется i на turn (вход). В конце цикла говорится turn (ход) на единицу++
  • 7) Главная функция вынимается из main и переносится выше. Создаётся функция play_and_get_winner () она будит возвращать char (символ) т. е. сыграть в игру и получить выигравшего. После выбора Х или О говорится if если (win ('X') пользователь играющий за 'X' если он выиграл, то печатается поздравление «X, Pozdravlyau vi vuigrali!» и возвращает return из функции 'X' что пользователь играющий 'X' выиграл. Тоже самое прописывается для пользователя играющего `O'. Далее turn ход ++ увеличивается if если (turn вход == ровняется 10). Ecли ввод равен 10, то НЕЧЬЯ. T.е. ставить крестик или нолик некуда тогда выводится на экран сообщение «nechya» и оператор return возвращает значение D. Пишется чтобы функция print_board принимала стринг под названием индент, void print_board (string indent){}. Находится ниже print_board () и в скобках пишется пустой стринг (два двоеточие) print_board (««), а в функции main талб print_board (««). В главной функции main прописывается выполнение play_and_get_winner () (главный цикл) и дать char winner (выигравший). char winner ровняется = play_and_get_winner ()

8) В функции main первой строкой пишется строка для вывода приветственное сообщения «Privetstvuyu» средством cout и оператором <<, и ниже продекларировать стринг reply (ответ). reply (ответ) по началу «y» (то бишь ДА (YES)).Строится цикл while пока ответ положительный, т. е. пока ответ == ровняется «y». Пишится перечень переменных типа int x_wins=0(это количество раз когда пользователь играющий иксами выиграл), o_wins=0(это количество раз когда пользователь играющий ноликами выиграл), ties=0(количество нечьих) и всем присвоенно нулевое значение. Пишется switch (это конструкция «если, то» при разных значениях ((winner)выигравший) будут выполнятся разные куски кода). Первое значениеcase 'X', если выграл пользователь играющий иксами тогда переменная x_wins увеличивается на единицу++ и останавливается break. Второеое значениеcase 'О', если выграл пользователь играющий ноликами тогда переменнаяо_wins увеличивается на единицу++ и останавливается break. Третье значениеcase 'D', если нечья тогда переменнаяties увеличивается на единицу++ и останавливается break. Прописывается статистика, выводится статистика на экран/в окно консоли с помощью cout << «Winer statistic Player X: «<< x_wins, это сколько раз пользователь играющий Х выиграл, «Player 0: «<< o_wins << «and Ties: «<< ties << «это сколько раз пользователь играющий О выиграл. Сколько нечьих, «would you like to play again? (y/n):» задаётся вопрос: «желаете продолжить игру?», а с помощью объекта cin пользователь может ввести значениеreply (ответ) y, а если пользователь не хочет играть то нужно ввести n. Далее пишется цикл while (пока значениеreply (ответ) ≠не равно «y» или&& пока значение reply (ответ) ≠ не равно «n») то цикл бесконечен. Следующая строка просит пользователя ввести ещё значение, если до этого небыло введино y или n. Следующая строка с помощью объекта cin выводит на экран введённое пользователем значение и опять проверяется в цикле.

Показать весь текст
Заполнить форму текущей работой