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

Задачи для тренировки и лучшего понимания - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Возможно переписать программу? http://www.cyberforum.ru/cpp/thread153534.html
Есть программа Upgrade UA.exe хочу запустить ее на windows mobile 6. Возможно ли ее переписать.
C++ scanf Пусть нужно читать из текста слова, пропуская все символы, кроме a-z и A-Z. То есть из текста Hello, world! ololo O_o получить только Hello world ololo O o Меня интересует, можно ли это... http://www.cyberforum.ru/cpp/thread153153.html
C++ Вернуть stdin в консоль
Допустим я перенаправил поток stdin/stdout в файл с помощью функции freopen. Как заставить его снова работать с консолью? Добавлено через 9 минут Нашел. #include <cstdlib> #include <stdio.h>...
Прошу помочь.Подключение dll на неуправляемом С/С++ C++
Возникла проблема.Есть рабочая dll, необходимо подключить к CLR приложению. Подключение происходит нормально. Все функции работают нормально кроме одной(хотя dll проверял все работает в обычных...
C++ Не сразу закрывающаяся программа http://www.cyberforum.ru/cpp/thread152799.html
Есть команды в терминале.. вроде telnet или sql, эти программы запускаешь и они остаются открытыми пока не дашь команду, например, quit. Во время работы программы она показывает знак приглашения...
C++ Парсер на С вопшем есть файл с текстом..... в етом файле есть какие даные(мусор)...и есть дни: Понедельник,Вторник,среда......с етого файла нада вывести ети дни в порядке нахождениэ... ето походу несложная... подробнее

Показать сообщение отдельно
neske
1503 / 870 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
16.08.2010, 15:05
Хотел написать ХО, игрок-компьютер.
Пока компьютер выбирает клетку случайными образом.

Программа компилируется, но не видит победы игрока.
Так же буду рад услышать рекомендации об улучшении

Код:
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
#include <iostream>
#include <ctime>
 
class XO
{
public:
    XO ();
    void start_game ();
    void show ();
 
    bool win (int);
    bool drawn ();
private:
    static const int SIZE=3;
    int POLE[SIZE][SIZE];
    int player_cell; // ход игрока.
    int computer_cell; // ход компьютера.
};
 
XO::XO ()
{
    for (size_t i=0; i<SIZE; i++)
        for (size_t j=0; j<SIZE; j++)
            POLE[i][j]=0;
}
 
void XO::start_game ()
{
    srand (time (NULL));
    for (;;)
    {
        // ходит игрок
        std::cout << "Input number of cell (1..9): ";
        std::cin >> player_cell;
        --player_cell;
        POLE [(player_cell)/SIZE][(player_cell)%SIZE]=1;
        this->show();
 
        if (this->win (player_cell))
        {
            std::cout << "Player WIN!";
            break;
        }
        if (this->drawn ())
        {
            std::cout << "Drawn game!";
            break;
        }
        // ходит компьютер
        std::cout << "Computer cell:\n";
        for (;;)
        {
            computer_cell=rand()%8;
            if (POLE[computer_cell/SIZE][computer_cell%SIZE]==0)
            {
                POLE[computer_cell/SIZE][computer_cell%SIZE]=-1;
                break;
            }
        }
        this->show();
        if (this->win (computer_cell))
        {
            std::cout << "Computer WIN!";
            break;
        }
        if (this->drawn ())
        {
            std::cout << "Drawn game!";
            break;
        }
    }
 
    std::cout << std::endl;
}
 
bool XO::win (int course)
{
    int x=course/SIZE;
    int y=course%SIZE;
 
    if ((POLE[y][0]==POLE[y][1]) && (POLE[y][1]==POLE[y][2]) && (POLE[y][0]!=0)) return true;
    if ((POLE[0][x]==POLE[1][x]) && (POLE[1][x]==POLE[2][x]) && (POLE[0][x]!=0)) return true;
    if (((POLE[0][0]==POLE[1][1]) && (POLE[1][1]==POLE[2][2]) && (POLE[0][0]!=0) ||
       ((POLE[0][2]==POLE[1][1]) && (POLE[1][1]==POLE[2][0]) && POLE[0][2]!=0))) return true;
 
    return false;
}
 
bool XO::drawn ()
{
    for (size_t i=0; i<SIZE; i++)
        for (size_t j=0; j<SIZE; j++)
            if (POLE[i][j]==0) return false;
    return true;
}
 
 
void XO::show ()
{
    std::cout << "_______\n";
    for (size_t i=0; i<SIZE; i++)
    {
        for (size_t j=0; j<SIZE; j++)
        {
            std::cout << "|";
            if (POLE[i][j]==1) std::cout << "X";
            else if (POLE[i][j]==-1) std::cout << "0";
            else std::cout << " ";
        }
        std::cout << "|"
                  << "\n"
                  << "_______"
                  << "\n";
    }
}
 
 
int main (void)
{
    XO game;
    game.start_game ();
 
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru