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

Как оптимизировать данный код игры крестики нолики? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как правильно можно узнать количество хранимых в строке символов? http://www.cyberforum.ru/cpp-beginners/thread1238240.html
Есть строка с юникод символами. Как правильно можно узнать количество хранимых в строке символов?int main() { std::wifstream wifs("file.txt"); std::wstring wstr; wifs >> wstr; // 5 юникод символов std::cout << "Size: " << wstr.size() << "\n"; //выводит 15 return 0; }
C++ DevCpp не вводятся спец символы (масти карт) Для программы необходимо использование спец символов обозначающих масти карт: ♥ ♦ ♣ ♠ . Но при копировании этих символов в редактор или попытки ввести через альткод выводятся(в самом редакторе при наборе кода) либо знаки вопросов либо "¦". http://www.cyberforum.ru/cpp-beginners/thread1238234.html
Как сделать, чтобы цикл продолжался только после нажатия кнопки? C++
for (int i=0; i<n;i++) pl=dieroll (); нужно чтобы пользователь перед каждой иттерацией жал любую (можно заданную, можно нет) кнопку, подскажите пожалуйста как это сделать
C++ Error C2601: main: недопустимые локальные определения функций
#include <iostream> #include <ctime> using namespace std; int dieroll (){ int chance=0; srand (time(NULL)); chance=rand()%1000; chance%=7; return chance;
C++ Нахождение обратной матрицы http://www.cyberforum.ru/cpp-beginners/thread1238196.html
Помогите,пожалуйста доделать или переделать нужно найти обратную матрицу тут маленько наброски есть методом гаусса но не могу доделать или вообще сделать код формирование матрицы и попытки того что пытался. #include <iostream> #include <iomanip> using namespace std; //Функция ввода элементов матрицы void matr( double **mat, int n,int m) { for (int i=0; i<n; i++) for (int j=0; j<m;...
C++ Создать такое меню как в Far Cry 3 Только Windows 7+ Вот все игры и не тоько имеют необычный интерфейс и особенно стиль окон и кнопок вот допустим игра far cry 3 имеет синий фон с интересными кнопками.Поэтому пожалуйста ответьте что отвечает за такой интерфейс. такое создается с помощью н-р wxWidgets,...? нет? тогда Ваш вариант))) подробнее

Показать сообщение отдельно
Oleg98
9 / 9 / 4
Регистрация: 05.12.2013
Сообщений: 42
06.08.2014, 22:32  [ТС]     Как оптимизировать данный код игры крестики нолики?
Как вам такое:
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
#include <iostream>
#include <locale>
#include <conio.h>
 
void fieldConstruction (char gf[3][3]) 
{
    std::cout << "-------------\n";
    std::cout << "| " << gf[0][0] << " | " << gf[0][1] << " | " << gf[0][2] << " |\n";
    std::cout << "-------------\n";
    std::cout << "| " << gf[1][0] << " | " << gf[1][1] << " | " << gf[1][2] << " |\n";
    std::cout << "-------------\n";
    std::cout << "| " << gf[2][0] << " | " << gf[2][1] << " | " << gf[2][2] << " |\n";
    std::cout << "-------------\n";
}
 
char testWinner (char gf[3][3])
{
    if ((gf[0][0] != ' ')&&(gf[0][0] == gf[1][1])&&(gf[1][1]==gf[2][2])) return gf[0][0]; else
    if ((gf[2][0] != ' ')&&(gf[2][0] == gf[1][1])&&(gf[1][1]==gf[0][2])) return gf[2][0]; else 
    if ((gf[0][0] != ' ')&&(gf[0][0] == gf[0][1])&&(gf[0][1]==gf[0][2])) return gf[0][0]; else 
    if ((gf[1][0] != ' ')&&(gf[1][0] == gf[1][1])&&(gf[1][1]==gf[1][2])) return gf[1][0]; else 
    if ((gf[2][0] != ' ')&&(gf[2][0] == gf[2][1])&&(gf[2][1]==gf[2][2])) return gf[2][0]; else
    if ((gf[0][0] != ' ')&&(gf[0][0] == gf[1][0])&&(gf[1][0]==gf[2][0])) return gf[0][0]; else 
    if ((gf[0][1] != ' ')&&(gf[0][1] == gf[1][1])&&(gf[1][1]==gf[2][1])) return gf[0][1]; else 
    if ((gf[0][2] != ' ')&&(gf[0][2] == gf[1][2])&&(gf[1][2]==gf[2][2])) return gf[0][2]; else
    return 'n';
}
 
int main()
{
    setlocale (LC_ALL, "Russian");
 
    char gameField[3][3] = {{' ', ' ', ' '}, 
                            {' ', '+', ' '}, 
                            {' ', ' ', ' '}};
    int x(1), y(1);
    int player = 1;
    int freeCell = 9; 
    int key;
    bool winner = false;
    char whoWinner;
    char contentCell(' ');
 
    std::cout << "Добро пожаловать!!! \nДанная игра называется \"Крестики нолики\"\n";
    std::cout << "Управление в игре:\n";
    std::cout << "Управление в игре осуществляется стелкали Вверх, Вниз, Вправо, Влево. \nПри нажатии ENTER на текущей, свободной, ячейке будет установлен Х или 0 в зависимости чей ход.\n";
    std::system ("pause");
    std::system ("cls");
    while (freeCell != 0 && !winner)
    {
        std::cout << player << " игрок ходит\n";
        fieldConstruction(gameField);
        key = getch();
        if (key == 224 || key == 13)
        {
            key = (key != 13) ? getch() : 13;
            switch (key)
            {
            case 72:
                if (y > 0)
                {
                    gameField[y][x] = contentCell;
                    y--;
                    contentCell = gameField[y][x];
                    gameField[y][x] = '+';
                }
                break;
            case 77:
                if (x < 2)
                {
                    gameField[y][x] = contentCell;
                    x++;
                    contentCell = gameField[y][x];
                    gameField[y][x] = '+';
                }
                break;
            case 80:
                if (y < 2)
                {
                    gameField[y][x] = contentCell;
                    y++;
                    contentCell = gameField[y][x];
                    gameField[y][x] = '+';
                } 
                break;
            case 75:
                if (x > 0)
                {
                    gameField[y][x] = contentCell;
                    x--;
                    contentCell = gameField[y][x];
                    gameField[y][x] = '+';
                }
                break;
            default:
                if (contentCell == ' ')
                {
                    freeCell--;
                    if (player == 1)
                    {
                        gameField[y][x] = 'X';
                        player = 2;
                    }
                    else
                    {
                        gameField[y][x] = '0';
                        player = 1;
                    }
                    contentCell = gameField[y][x];
                }
            }
        }
        std::system("cls");
 
        // проверка на победу.
        whoWinner = testWinner(gameField);
 
        winner = (whoWinner != 'n') ? true : false;
    }
 
    fieldConstruction(gameField);
    
    if (whoWinner == 'X') std::cout << "Победил 1 игрок!!!\n"; else
    if (whoWinner == '0') std::cout << "Победил 2 игрок!!!\n"; else
    std::cout << "Ничья!!! \n";
 
    std::system ("pause");
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru