Форум программистов, компьютерный форум CyberForum.ru

Крестики-нолики. Выбор между игрой с компьютером или игрой с Человеком - C++

Восстановить пароль Регистрация
 
Achakoo
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 34
19.03.2014, 15:36     Крестики-нолики. Выбор между игрой с компьютером или игрой с Человеком #1
Написал небольшой код игры Крестики Нолики 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2014, 15:36     Крестики-нолики. Выбор между игрой с компьютером или игрой с Человеком
Посмотрите здесь:

C++ Крестики Нолики
C++ проблема с игрой змейка,при нажатии клавиши игра просто останавливается
Помогите с игрой! C++
C++ Крестики нолики
C++ крестики-нолики
C++ Не могу разобраться с 2D игрой
C++ Программа следящая за футбольной игрой

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 05:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru