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

Объявление

Наш баннер

Сайт Обучонок содержит исследовательские работы и проекты учащихся, темы творческих проектов по предметам и правила их оформления, обучающие программы для детей.
Будем благодарны, если установите наш баннер!
Баннер сайта Обучонок
Код баннера:
<a href="https://obuchonok.ru/" target="_blank"> <img src="https://obuchonok.ru/banners/banob2.gif" width="88" height="31" alt="Обучонок. Исследовательские работы и проекты учащихся"></a>
Все баннеры...
Тематика: 
Информатика
Автор работы: 
Громакова Екатерина Сергеевна, Усольцева Елизавета Юрьевна
Руководитель проекта: 
-
Учреждение: 
МБОУ «Гимназия имени Подольских курсантов»
Класс: 
9

Итоговый индивидуальный проект по информатике на тему "Создание игры "Tic Tac Toe" на C++" содержит информацию по 9 классу об основах языка программирования C++, среди которых можно назвать работу с функциями, классами, конструкторами. Учащимися была разработана полноценная игра ‘Tic-Tac-Toe’, позволяющая двум игрокам соревноваться друг с другом используя доску размером 3x3.

В процессе проведения исследовательской работы по информатике на тему «Создание игры "Tic Tac Toe" на C++» обучающиеся 9 класса сделали анимацию хода игроков с отображением ходов на экране, а также была создана система подсчета очков, что облегчает определение победителя игры по количеству набранных очков.

Подробнее о работе:


Содержание готового индивидуального проекта по информатике «Создание игры "Tic Tac Toe" на C++» отражает выводы учениц 9 класса о том, что разработанная ими игра по сути достаточно проста, но при этом очень увлекательна, также она поможет закрепить полученные знания и одновременно приобрести новые навыки в программирования. В итоге проекта имеет место полноценная, хорошо работающая игра.

Оглавление

Введение

  1. Псевдокод
  2. Разработка кода

Заключение

Введение


На сегодняшний день существует множество языков программирования, с помощью которых программисты могут решить любую задачу.

C++ - один из самых известных и востребованных языков по всему миру. На нем работают миллионы программистов. С помощью C++ создается множество различных игр.

Первые версии языка C++ появились в начале 1980-х годов благодаря датскому программисту Бьерну Страуструпу. В 1985 вышло первое издание «Языка программирования C++», обеспечивающее первое описание этого языка.

Перечислим несколько причин, почему разработчики игр выбирают язык C++:

  1. Производительность. Грамотно написанный, рабочий код работает впечатляюще быстро.
  2. Универсальность. Он кроссплатформенный и подходит для любых целей.
  3. Гибкость. C++ поддерживает различные стили программирования (процедурное программирование, абстракцию данных, объектно-ориентированное программирование).

В нашей работе речь пойдет о создании игры “Tic-Tac-Toe" на языке C++.
Цель работы: узнать, возможно ли создать школьнику игру на C++, а также выявить сложности написания кода.
Задача: создать рабочий код на языке программирования C++.

Псевдокод

Для облегчения главной задачи - написания кода - мы решили написать псевдокод, план действий программы:

  1. Вывод правил игры на экран;
  2. Создание и отображение пустого поля;
  3. Определение, кто будет ходить первым;
  4. Пока никто не победил и не наступила ничья:
  5. 4.1. Если ход пользователя: получение хода пользователя, обновление игровое поле;
    4.2. Иначе: вычисление хода компьютера, обновление игрового поля;
    4.3. Отображение игрового поля;

  6. Объявление победителя или ничьи.

Разработка кода


#include
using namespace std;

char X = 'X', O = '0', NO_ONE = 'N', EMPTY = ' ', DRAW = 'D';
int human_score = 0, computer_score = 0;

void instruction()
{
cout << "Welcome to the game where you will bravely fight with me!\n";
cout << "I'm a computing machine, but you can just call me Robo =)\n";
cout << "You can make your move by entering a number from 0 to 8. This number will mean the number of the cell where you want to go.\n\n";
cout << "0 | 1 | 2\n";
cout << "---------\n";
cout << "3 | 4 | 5\n";
cout << "---------\n";
cout << "6 | 7 | 8\n\n";
cout << "Let the fun begin!\n\n";
}

int ask_number(string s, int high, int low)
{
int number;
do{
cout << s << " (" << low << " - " << high << "): ";
cin >> number;
} while(number > high || number < low);
return number;
}

char ask(string s)
{
char answer;
cout << s << "(Y/N): ";
cin >> answer;
while(answer != 'Y' && answer != 'N') {
cout << "Enter 'Y' or 'N': ";
cin >> answer;
}
return answer;
}

char humanChoice()
{
char fi = ask("Do you want to make the first move?");
if(fi == 'Y'){
cout << "Okay, get started!\n";
return X;
}
else {
cout << "Thanks for giving me this opportunity! I will go first.\n";
return O;
}
}

char opponent(char letter)
{
if(letter == X)
return O;
else
return X;
}

void display(vector & board)
{
cout << "\n\t" << board[0] << " | " << board[1] << " | " << board[2];
cout << "\n\t---------";
cout << "\n\t" << board[3] << " | " << board[4] << " | " << board[5];
cout << "\n\t---------";
cout << "\n\t" << board[6] << " | " << board[7] << " | " << board[8];
cout << "\n\n";
}

char winner(vector & board)
{
int WIN_ROWS[8][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8},
{0, 3, 6},
{1, 4, 7},
{2, 5, 8},
{0, 4, 8},
{2, 4, 6}};

for(int row = 0; row < 8; row++){
if(board[WIN_ROWS[row][0]] != EMPTY && board[WIN_ROWS[row][1]] == board[WIN_ROWS[row][0]] && board[WIN_ROWS[row][2]] == board[WIN_ROWS[row][0]]){
return board[WIN_ROWS[row][0]];
}
if(count(board.begin(), board.end(), EMPTY) == 0){
return DRAW;
}
}
return NO_ONE;
}

bool is_legal(int step, const vector& board)
{
return (board[step] == EMPTY);
}

int human_move(const vector & board)
{
int step = ask_number("Where will you move?", (board.size() - 1), 0);
while(!is_legal(step, board)){
cout << "This square is already occupied, try again!" << endl;
step = ask_number("Where will you move?", (board.size() - 1), 0);
}
return step;
}

int computer_move(vector board, char computer)
{
int step = 0;
bool found = false;

while(!found && step < board.size()){
if(is_legal(step, board)){
board[step] = computer;
found = winner(board) == computer;
board[step] = EMPTY;
}
if(!found) ++step;
}

if(!found){
step = 0;
char human = opponent(computer);
while(!found && step < board.size()) {
if(is_legal(step, board)){
board[step] = human;
found = winner(board) == human;
board[step] = EMPTY;
}
if(!found) ++step;
}
}

if(!found){
step = 0;
int i = 0;
const int BEST_MOVES[] = {4, 0, 2, 6, 8, 1, 3, 5, 7};
while(!found && i < board.size()){
step = BEST_MOVES[i];
if(is_legal(step, board)) found = true;
i++;
}
}

cout << "I want to take a number " << step << endl;
return step;
}

void okWinner(char winner, char computer, char human)
{
if(winner == computer){
cout << "This was expected =) A computer can still surpass a human!" << endl;
computer_score++;
}
else if(winner == human){
cout << "It can't be! I got distracted, let's do it again!";
human_score++;
}
else {
cout << "Ok, it's a tie.. You won't leave me next time! I'll give you and myself a point each, if you don't mind.";
human_score++;
computer_score++;
}
}

int main() {

int step;

int num = 9;
instruction();
cout << "Our score is: " << human_score << " - " << computer_score << endl;
do {
vector board(num, EMPTY);
char human = humanChoice();
char computer = opponent(human);
char turn = X;
display(board);
while(winner(board) == NO_ONE) {
if(turn == human){
step = human_move(board);
board[step] = human;
}
else{
step = computer_move(board, computer);
board[step] = computer;
}
display(board);
turn = opponent(turn);
}
okWinner(winner(board), computer, human);
cout << "Our score is: " << human_score << " - " << computer_score << endl;
} while(ask("Do you want to play again? ") != 'N');

return 0;
}

Заключение

В ходе выполнения итогового индивидуального проекта по информатике “Игра ‘Tic-Tac-Toe’ на языке программирования C++” мы реализовали все поставленные задачи и цели. Была разработана полноценная игра ‘Tic-Tac-Toe’, которая позволяет двум игрокам соревноваться друг с другом на доске 3x3. В ходе реализации проекта мы изучили основы языка программирования C++, такие как работа с функциями, классами, конструкторами.

Мы реализовали анимацию хода игроков и отображение их ходов на экране.
Кроме того, в рамках проекта мы создали система подсчета очков и определения победителя игры. Благодаря этому, игроки могут самостоятельно определять, кто победил в игре, основываясь на количестве набранных очков.

Мы успешно завершили индивидуальный проект по информатике. Разработанная игра "Tic-Tac-Toe" представляет собой простой, но увлекательный геймплей, который поможет закрепить полученные знания и приобрести новые навыки в области программирования. Результатом проекта стала полноценная, работающая игра.

Источники литературы

  1. Skillfactory Media: Кому и для чего нужен C++;
  2. Майкл Доусон: Изучаем C++ через программирование игр;
  3. C++ Википедия


Если страница Вам понравилась, поделитесь в социальных сетях:

Объявление

Статистика