Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Achakoo
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 40
#1

Кресты и Нолики, или как спасти студента - C++

16.03.2014, 15:18. Просмотров 229. Ответов 0
Метки нет (Все метки)

Написал небольшой код игры Крестики Нолики 5х5 с возможностью игры PvP (Игрок против Игрока). Ломаю голову как добавить в код возможность игры против Компьютера, а так же чтобы в начале ... при запуске был выбор ... играть против компьютера или против Игрока ... Помогите добавить в этот код необходимое для того, чтобы она запускалась как описано выше. Заранее СПАСИБО !!!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <iostream>
#include <locale.h>
char board[25] = {};
using namespace std;
void clearscreen()
{
     for(int i = 0; i<100; i++)
     {
            cout<<endl;
  }
}
 
void clearboard()
{
    for(int i = 0; i<26; i++)
    {
            board[i] = '-';
    }
 
}
 
bool has_wonQ(char player)
{
  int wins[12][5] = {{0,1,2,3,4}, {5,6,7,8,9}, {10,11,12,13,14}, {15,16,17,18,19}, {20,21,22,23,24}, {0,5,10,15,20},
                     {1,6,11,16,21}, {2,7,12,17,22}, {3,8,13,18,23}, {4,9,14,19,24}, {0,6,12,18,24}, {4,8,12,16,20}};
 
       for(int i = 0; i<12; i++)
       {
           int count = 0;
           for(int j = 0; j<5; j++)
           {
               if(board[wins[i][j]] == player)
               count++;
    }
    if(count == 5)
    {
       return true;
    }
  }
  return false;
}
 
void print_board(string indent)
{
  cout << endl;
  cout<<"\n   Таблица ваших ходов\n";
  cout<<"    --------------------- " << endl;  
  cout<<indent<<"    | "<<board[20]<<" | "<<board[21]<<" | "<<board[22]<<" | "<<board[23]<<" | "<<board[24]<<" |\n";
  cout<<"    --------------------- " << endl;
  cout<<indent<<"    | "<<board[15]<<" | "<<board[16]<<" | "<<board[17]<<" | "<<board[18]<<" | "<<board[19]<<" |\n";
  cout<<"    --------------------- " << endl;
  cout<<indent<<"    | "<<board[10]<<" | "<<board[11]<<" | "<<board[12]<<" | "<<board[13]<<" | "<<board[14]<<" |\n";
  cout<<"    --------------------- " << endl;
  cout<<indent<<"    | "<<board[5]<<" | "<<board[6]<<" | "<<board[7]<<" | "<<board[8]<<" | "<<board[9]<<" |\n";
  cout<<"    --------------------- " << endl;
  cout<<indent<<"    | "<<board[0]<<" | "<<board[1]<<" | "<<board[2]<<" | "<<board[3]<<" | "<<board[4]<<" |\n";
  cout<<"    --------------------- " << endl;
}
int get_move()
{
  cout<<"\nТаблица возможных ходов\n";  
  cout<<"      ---------------- " << endl;   
  cout<<"      |21|22|23|24|25| " << endl;
  cout<<"      ---------------- " << endl;   
  cout<<"      |16|17|18|19|20| " << endl;
  cout<<"      ---------------- " << endl; 
  cout<<"      |11|12|13|14|15| " << endl;
  cout<<"      ---------------- " << endl; 
  cout<<"      |6 |7 |8 |9 |10| " << endl;
  cout<<"      ---------------- " << endl; 
  cout<<"      |1 |2 |3 |4 |5 | " << endl;
  cout<<"      ---------------- " << endl; 
  cout<<"\n";
 
print_board("");
cout << "\nВведите цифру ячейки: ";
 
 
  int move;
  cin >> move;
  while (move > 25 || move < 1 || board[move - 1] != '-') 
  {
  cout<<"Введите число от 1 до 25:\n";
  cin >> move;
  }
  return move;
}
 
char play_and_get_winner()
{
    int turn = 1;
 
    while(!has_wonQ('X') && !has_wonQ('0'))
    {
           clearscreen();
           int move = get_move();
           clearscreen();
           if(turn%2 == 1){
              board[move-1]='X';
               if(has_wonQ('X'))
               {
               cout <<"Крестики победили!\n";
               return 'X';
               }
 
      }
       else
       {
              board[move-1]='0';
              if(has_wonQ('0'))
              {
              cout <<"Нолики выйграли!\n";
              return '0';
        }
      }
    turn++;
    if(turn == 26)
    {
    cout << "Нечья\n";
    return 'D';
    }
  }
}
 
int main()
{
    setlocale(LC_ALL,"RUSSIAN");
    string reply = "y";
    int x_wins=0, o_wins=0, ties=0;
 
    while(reply == "y")
    {
    clearboard();
    char winner = play_and_get_winner();
    print_board("");
    cout << "\n Хотите поиграть ещё? Да-(y), Нет-(n): ";
    cin  >> reply;
        while(reply != "y" && reply !="n")
        {
    cout << "!!! Сделайте выбор !!!(y/n):";
    cin  >> reply;
    }
 
   }
 
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2014, 15:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Кресты и Нолики, или как спасти студента (C++):

Структуры и файлы (посчитать средний балл каждого студента и вывести фамилию студента с наибольшим баллом) - C++
У меня есть структура и файл, в котором находятся фамилии и оценки учащихся, как мне посчитать средний балл каждого студента и вывести...

Спасти HDD или инфу - Жесткие диски
Доброго времени суток :) Вот случилось то, чего больше всего боялся. Полетел жесткий. (Инфу слить не успел, поэтому очень нужно...

Можно ли спасти диск, или в помойку? - Жесткие диски
Можно ли как то программно починить? Виснит все ужасно, или же отделить все эти блоки?

Пришли вилы видеокарте. Попробовать спасти ее или забить и купить новую? - Видеокарты
Ребята, в общем такая проблема: компьютер циклично перезагружается при включении не доходя даже до БИОСа. Попробовал поочередно вставлять...

При попытке включить комп возникает сообщение. Что нибудь можно сделать или спасти диск уже не удаться - Жесткие диски
при попытке включить систему возникает сообщение. Что нибудь можно сделать или спасти диск уже не удаться? другой диск ставлю - все...

Как спасти дизайн? - Web-дизайн
В общем-то, новичок в этом, делаю работу для экзамена. Как можно сделать оформление (по большому счету, - шапку) менее ужасным?

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2014, 15:18
Привет! Вот еще темы с ответами:

Как спасти соседей от ДК? - Кинотеатры
Я живу в старом доме с плохой шумоизоляцией. Думаю купить себе ДК, но меня останавливает то, что я могу тогда поругаться с соседями. Вокруг...

Как спасти диск. - Windows
Комп с 98 виндой. Загружается нормально, но ничего не работает, пишет что нет свободного места на диске. В свойствах диска все по нулям,...

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

Можно ли как-то спасти файлы? - Жесткие диски
Перестал корректно работать внешний жесткий диск (отображается, однако, не удается его прочесть). При первой попытке прочесть предлагал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.