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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Заполнение массива с клавы, и подсчет суммы элементов с функцией http://www.cyberforum.ru/cpp-beginners/thread1120868.html
#include <iostream> using namespace std; int sum(int arr , int size) { int rezult = 0; for (int i = 0; i < size; i++) { rezult += arr;
C++ Вопросы по работе с файлами, например, просмотр содержимого ZIP-архивов #include <iostream> #include <stdio.h> #include <conio.h> #include <math.h> #include <windows.h> #include <string> #include <codecvt> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread1120865.html
C++ Ошибка в сортировке
Помогите исправить ошибку в сортировке. Вот код: #include <iostream> #include <stdlib.h> #include <time.h> #include <iomanip> using namespace std; int** made(const int nstr, const int nstb){
C++ Работа с массивами
помогите написать программу на Borland C++ 3.1 с обязательным применением динамических массивов и функций Удалить из массива целых чисел все нули. Сформировать два новых массива. В первый массив переписать все четные элементы заданного массива, во второй – все нечетные. Упорядочить первый массив по убыванию, второй – по возрастанию. Создать функции для удаления элемента и для сортировки. ...
C++ Определить номера строк в матрице, в которых элементов, принадлежащих отрезку[А,В], больше, чем элементов, принадлежащих отрезкам[-бесконечность,А],[В http://www.cyberforum.ru/cpp-beginners/thread1120824.html
Определить номера строк в матрице, в которых элементов, принадлежащих отрезку, больше, чем элементов, принадлежащих отрезкам,.
C++ Заменить каждое из данных чисел на соответствующее данному условию значение Даны действительные числа X,Y. Если X,Y отрицательные, то каждое заменить его модулем; если отрицательно е одно из них, то об а значения увеличить на 0,5; в остальных случаях X и Y оставить без изменения заранее спасибо подробнее

Показать сообщение отдельно
Achakoo
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 34
16.03.2014, 15:18     Кресты и Нолики, или как спасти студента
Написал небольшой код игры Крестики Нолики 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru