Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
3 / 3 / 0
Регистрация: 01.02.2019
Сообщений: 67

Консольная игра, не могу разобраться со ссылками

04.05.2019, 18:35. Показов 4503. Ответов 36
Метки нет (Все метки)

Всем приветик! Делаю игру, в которой игрок и комп бросают кубик

класс игрока:

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
#include <string>
#include <iostream>
#pragma once
using namespace std;
 
class Player
{
public:
    string name;
    int playerScore;
    int playerThrows;
 
    Player()
    {
 
    }
    
    void playerThrow(int& playerScore, int& playerThrows, bool& gameover, string& goOn)
    {
        int t = 1 + rand() % 6; //t=throw
        if (t == 1)
        {
            playerScore = t * 0;
        }
        else playerScore += t;
 
        playerThrows += 1;
        gameover = (playerScore >= 0);
 
        
        cout << "Your throw was: " << t << endl;
        cout << "Your total score = " << playerScore << endl;
        cout << "You throw a bone " << playerThrows << endl;
        cout << "Wanna do one more throw? [y/n]" << endl;
 
        cin >> goOn;
    }
};
сама программа

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
#include "Player.h"
#include "Computer.h"
#include <iostream>
 
 
using namespace std;
 
 
 
int main()
{
    string name;
    string goOn;
    bool gameover = false;
 
    cout << "Tell me your name?" << endl;
    getline(cin, name);
    cout << "Hey, " << name << "!" << endl;
 
    Player firstPlayer;
 
    
    firstPlayer.name = name;
    firstPlayer.playerScore = 0;
    firstPlayer.playerThrows = 0;
    
 
    Computer comp;
    comp.name = "Computer";
    comp.compScore = 0;
    comp.compThrows = 0;
    
    int playerFirstThrow = 1 + rand() % 6;
    int compFirstThrow = 1 + rand() % 6;
    cout << "Player's first throw was: " << playerFirstThrow << endl;
    cout << "Comp's first throw was: " << compFirstThrow << endl;
    cout << endl;
 
    if (playerFirstThrow >= compFirstThrow)
    {
        //игрок делает первым серию бросков
        cout << endl;
        cout << "Player throws first!" << endl;
        cout << endl;
 
        while (!gameover)
        {
            do
            {
                firstPlayer.playerThrow(firstPlayer.playerScore, firstPlayer.playerThrows, gameover, goOn);
            } while (goOn == "y" && firstPlayer.playerScore > 0 && !gameover);
                if (gameover) break;
        
            cout << endl;
            cout << ">>>> It's computer's turn now!" << endl;
            cout << endl;
 
            do
            {
                comp.compThrow(comp.compScore, comp.compThrows, gameover);
            } while (comp.compScore > 0 && !gameover);
        }
    }
    else {
        //компьютер делает первым серию бросков
        cout << endl;
        cout << "Comp throws first!" << endl;
        cout << endl;
 
        while (!gameover)
        {
            do
            {
                comp.compThrow(comp.compScore, comp.compThrows, gameover);
            } while (comp.compScore > 0 && !gameover);
                
                cout << endl;
                cout << ">>>> It's player's turn now!" << endl;
                cout << endl;
            do
            {
                firstPlayer.playerThrow(firstPlayer.playerScore, firstPlayer.playerThrows, gameover, goOn);
            } while (goOn == "y" && firstPlayer.playerScore > 0 && !gameover);
            
            if (gameover) break;
        }
    }
 
    if (firstPlayer.playerScore > comp.compScore)
    {
        cout << firstPlayer.name << " won with the score: " << firstPlayer.playerScore << endl;
    }
 
    else if (comp.compScore > firstPlayer.playerScore)
    {
        cout << comp.name << " won with the score: " << comp.compScore << endl;
    }
 
    else
        cout << "Draw! Friendship won!" << endl;
 
 
    system("pause");
    return 0;
}
Никак не получается сделать, чтобы метод firstPlayer.playerThrow(firstPlayer.play erScore, firstPlayer.playerThrows, gameover, goOn) работал с переменной bool gameover = false;
В момент, когда доходит до gameover = (playerScore >= 0); - она принимает значение true и игра заканчивается

Добавлено через 15 минут
Ещё получается он записывает счёт в переменную playerScore, а должен в firstPlayer.playerScore
чуть обновила метод
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void playerThrow(int playerScore, int playerThrows, bool gameover, string goOn)
    {
        this->playerScore = playerScore;
        this->playerThrows = playerThrows;
 
        int t = 1 + rand() % 6; //t=throw
        if (t == 1)
        {
            playerScore = t * 0;
        }
        else playerScore += t;
 
        playerThrows += 1;
        gameover = (playerScore >= 0);
 
        
        cout << "Your throw was: " << t << endl;
        cout << "Your total score = " << playerScore << endl;
        cout << "You throw a bone " << playerThrows << endl;
        cout << "Wanna do one more throw? [y/n]" << endl;
 
        cin >> goOn;
    }
теперь счёт записывается правильно, а gameover по прежнему true ставит. Как сделать, чтобы метод работал с тем bool gameover = false;, который в main инициализирован?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.05.2019, 18:35
Ответы с готовыми решениями:

Консольная игра в 21
Вообще это только реализация алгоритма игры, но работает. Если кому сильно заняться нечем-гляньте нормально получилось или говнокод? ...

Полиморфизм и консольная игра
Всем привет! Можно ли написать какую-то консольную игру вроде змейки на c++, но используя полиморфизм? Заранее спасибо

Консольная игра с кубиком
Решил написать консольную игру: игрок и компьютер кидают кубик и счет выводится на экран. Дело в том, что функция showscore счет компьютера...

36
3 / 3 / 0
Регистрация: 01.02.2019
Сообщений: 67
04.05.2019, 20:22  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
еще раз:
помогло, наконец комп может первым начать раунд

Цитата Сообщение от XLAT Посмотреть сообщение
я могу отрефакторить ваш код, но вы его не узнаете
получилось так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
while (firstPlayer.playerScore < 100 || comp.compScore < 100)
        {
            do
            {
                firstPlayer.playerThrow(throwover, goOn);
            } while (goOn == "y" && firstPlayer.playerScore > 0 && !throwover);
            //if (throwover) break;
        
            cout << endl;
            cout << ">>>> It's computer's turn now!" << endl;
            cout << endl;
 
            do
            {
                comp.compThrow(throwover);
            } while (comp.compScore > 0 && !throwover);
 
            if (firstPlayer.playerScore >= 100 || comp.compScore >= 100) break;
        }
Я выбила 101 балл, ход перешёл к компьютеру, он проиграл с 1 броска

правда теперь сомнения, нужно ли тут (firstPlayer.playerScore < 100 || comp.compScore < 100)
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
04.05.2019, 20:34
Цитата Сообщение от kulichiki96 Посмотреть сообщение
правда теперь сомнения, нужно ли тут (firstPlayer.playerScore < 100 || comp.compScore < 100)
подходит для того чтобы решить продолжить ли игру, но этого, как мы понимаем не достаточно,
а знам, нужен вариант наверняка )
0
3 / 3 / 0
Регистрация: 01.02.2019
Сообщений: 67
04.05.2019, 20:41  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
подходит для того чтобы решить продолжить ли игру, но этого, как мы понимаем не достаточно,
а знам, нужен вариант наверняка )
т.е. пока условия firstPlayer.playerScore < 100 || comp.compScore < 100 соблюдаются, крутится цикл while

как только ктото наберёт 100 и более очков - программа обратится к if (firstPlayer.playerScore >= 100 || comp.compScore >= 100) break; и прервёт цикл?
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
04.05.2019, 21:52
Лучший ответ Сообщение было отмечено kulichiki96 как решение

Решение

kulichiki96,
вот чуток подшаманил ваш код,
главная фишка: избавился ваще от переменной gameover
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include <string>
#include <iostream>
 
#include <conio.h> //_getch   (); // для паузы.
 
#pragma once
using namespace std;
 
///----------------------------------------------------------------------------|
/// У игрока и компа равные права, поэтому и класс один на всех. :)
///----------------------------------------------------------------------------:
class cPlayer
{   public:
        string name;
        int playerScore;
        int playerThrows;
        bool trowover;
 
        cPlayer(string _name) : name        (_name),
                                trowover    (false),
                                playerScore (0),
                                playerThrows(0)
        {
        }
 
        cPlayer() :             name        ("Computer"),
                                trowover    (false),
                                playerScore (0),
                                playerThrows(0)
        {
        }
 
        void playerThrow()
        {   
            int t;
            while(!trowover)
            {
                t = 1 + rand() % 6; //t=throw
                if (t == 1)
                {   playerScore = t * 0;
                }
                else playerScore += t;
 
                playerThrows += 1;
                trowover = (playerScore >= 0) && (playerThrows%2 == 0);
            }
 
            cout << name << " throw was:     " << t            << endl;
            cout << name << " total score =  " << playerScore  << endl;
            cout << name << " throw a bone   " << playerThrows << endl;
 
        }
};
 
///----------------------------------------------------------------------------|
/// Теперь игроков будет судить арбитер. :)
///----------------------------------------------------------------------------:
class cArbiter
{   
public:
    cArbiter(cPlayer* p1, cPlayer* p2) : steps(0)
    {   players[0] = p1;
        players[1] = p2;
        init();
    }
    int  steps;
 
    enum e
    {   eMAN = 0,
        eCOMP
    }ePLAYER;
 
    void init()
    {
        int playerFirstThrow = 1 + rand() % 6;
        int compFirstThrow   = 1 + rand() % 6;
        cout << players[eMAN]->name  << " first throw was: " 
             << playerFirstThrow << "\n";
        cout << players[eCOMP]->name << " first throw was: "
             << playerFirstThrow << "\n" << endl;
 
        if (playerFirstThrow >= compFirstThrow)
        {   ePLAYER = eMAN;
            cout << players[eMAN]->name  << " ваш ход!\n";
            
        }
        else
        {   ePLAYER = eCOMP;
            cout << players[eCOMP]->name  << " ходит первым!\n";
        }
 
        cout << "\nЧтобы начать нажмите что-нибудь!\n\n";
        _getch   ();
        
    }
 
    bool check_win()
    {
        if(steps%2 == 0 &&  (players[eMAN ]->playerScore > 100 
                        ||   players[eCOMP]->playerScore > 100) )
        {
            if (players[eMAN]->playerScore > players[eCOMP]->playerScore)
            {   cout << players[eMAN]->name << " won with the score: "
                     << players[eMAN]->playerScore << endl;
            }
 
            else if (players[eMAN]->playerScore < players[eCOMP]->playerScore)
            {   cout << players[eCOMP]->name << " won with the score: " 
                     << players[eCOMP]->playerScore << endl;
            }
 
            else
                cout << "Draw! Friendship won!" << endl;
            return true; /// Игра окончена!
 
        }
        
        return false;
    }
 
    cPlayer* players[2];
};
 
 
#include <time.h>
///----------------------------------------------------------------------------|
/// MAIN
///----------------------------------------------------------------------------:
int main()
{   setlocale   (0, "");
    srand(static_cast<unsigned int>(time(NULL)));
    
    //string goOn;
 
    cPlayer player;
    cout << "Tell me your name?" << endl;
    getline(cin, player.name);
    cout << "Hey, " << player.name << "!" << endl;
 
    cPlayer comp;
 
    cArbiter Arbiter(&player, &comp);
 
    while (!Arbiter.check_win())
    {   
        switch(Arbiter.ePLAYER)
        {
            case cArbiter::eMAN :
            {   Arbiter.steps++;
                Arbiter.ePLAYER = cArbiter::eCOMP;
                player.playerThrow();
            }
 
            case cArbiter::eCOMP :
            {   Arbiter.steps++;
                Arbiter.ePLAYER = cArbiter::eMAN;
                comp.playerThrow();
            }
        }
    }
 
    _getch   ();
    return 0;
}
имхо, щас мне легко тестить и вносить изменения
cубъективно, конеш, извините.
1
5 / 5 / 0
Регистрация: 04.05.2019
Сообщений: 32
04.05.2019, 21:53
Объективно такой вариант прозрачнее
1
3 / 3 / 0
Регистрация: 01.02.2019
Сообщений: 67
04.05.2019, 22:12  [ТС]
XLAT, спасибо)) буду изучать ваш вариант

у меня так получилось

player

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
#include <string>
#include <iostream>
#include <fstream>
#pragma once
using namespace std;
 
class Player
{
public:
    string name;
    int playerScore;
    int playerThrows;
 
    Player()
    {
 
    }
    
    void playerThrow(bool& throwover, string& goOn)
    {
        this->playerScore = playerScore;
        this->playerThrows = playerThrows;
 
        int t = 1 + rand() % 6; //t=throw
        if (t == 1)
        {
            playerScore = t * 0;
        }
        else playerScore += t;
 
        playerThrows += 1;
        throwover = (playerScore >=100);
 
        
        cout << "Your throw was: " << t << endl;
        cout << "Your total score = " << playerScore << endl;
        cout << "You throw a bone " << playerThrows << endl;
        cout << "Wanna do one more throw? [y/n]" << endl;
 
        cin >> goOn;
    }
 
    void savePlayer()
    {
        string fileName = "gameResult.txt";
        ofstream fout(fileName);
        fout << name << " did " << playerThrows << " throws and won with the score: " << playerScore << "\n";
        fout.close();
    }
};
Computer

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
#include <string>
#include <iostream>
#pragma once
using namespace std;
 
class Computer
{
public:
    string name;
    int compScore;
    int compThrows;
 
    void compThrow(bool& throwover)
    {
        this->compScore = compScore;
        this->compThrows = compThrows;
 
        int t = 1 + rand() % 6; //t=throw
        if (t == 1)
        {
            compScore = t * 0;
        }
        else compScore += t;
 
        compThrows += 1;
        throwover = (compScore >= 100);
 
 
        cout << "Comp's throw was: " << t << endl;
        cout << "Comp's total score = " << compScore << endl;
        cout << "Comp throw a bone " << compThrows << endl;
        cout << endl;
    }
    void saveComp()
    {
        string fileName = "gameResult.txt";
        ofstream fout(fileName);
        fout << name << " did " << compThrows << " throws and won with the score: " << compScore << "\n";
        fout.close();
    }
};
main

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
#include "Player.h"
#include "Computer.h"
#include <iostream>
#include <time.h>
 
 
using namespace std;
 
 
 
int main()
{
    srand(static_cast<unsigned int>(time(NULL)));
    string name;
    string goOn;
    bool throwover = false;
 
    cout << "Tell me your name?" << endl;
    getline(cin, name);
    cout << "Hey, " << name << "!" << endl;
 
    Player firstPlayer;
 
    
    firstPlayer.name = name;
    firstPlayer.playerScore = 0;
    firstPlayer.playerThrows = 0;
    
 
    Computer comp;
    comp.name = "Computer";
    comp.compScore = 0;
    comp.compThrows = 0;
    
    int playerFirstThrow = 1 + rand() % 6;
    int compFirstThrow = 1 + rand() % 6;
    cout << "Player's first throw was: " << playerFirstThrow << endl;
    cout << "Comp's first throw was: " << compFirstThrow << endl;
    cout << endl;
 
    if (playerFirstThrow >= compFirstThrow)
    {
        //игрок делает первым серию бросков
        cout << endl;
        cout << "Player throws first!" << endl;
        cout << endl;
 
        while (firstPlayer.playerScore < 100 || comp.compScore < 100)
        {
            do
            {
                firstPlayer.playerThrow(throwover, goOn);
            } while (goOn == "y" && firstPlayer.playerScore > 0 && !throwover);
            //if (throwover) break;
        
            cout << endl;
            cout << ">>>> It's computer's turn now!" << endl;
            cout << endl;
 
            do
            {
                comp.compThrow(throwover);
            } while (comp.compScore > 0 && !throwover);
 
            if (firstPlayer.playerScore >= 100 || comp.compScore >= 100) break;
        }
        
    }
    else {
        //компьютер делает первым серию бросков
        cout << endl;
        cout << "Comp throws first!" << endl;
        cout << endl;
 
        while (firstPlayer.playerScore < 100 || comp.compScore < 100)
        {
            do
            {
                comp.compThrow(throwover);
            } while (comp.compScore > 0 && !throwover);
                
                cout << endl;
                cout << ">>>> It's player's turn now!" << endl;
                cout << endl;
            do
            {
                firstPlayer.playerThrow(throwover, goOn);
            } while (goOn == "y" && firstPlayer.playerScore > 0 && !throwover);
            
            if (firstPlayer.playerScore >= 100 || comp.compScore >= 100) break;;
        }
    }
 
    if (firstPlayer.playerScore > comp.compScore)
    {
        cout << firstPlayer.name << " won with the score: " << firstPlayer.playerScore << endl;
        firstPlayer.savePlayer();
    }
 
    else if (comp.compScore > firstPlayer.playerScore)
    {
        cout << comp.name << " won with the score: " << comp.compScore << endl;
        comp.saveComp();
    }
 
    else
        cout << "Draw! Friendship won!" << endl;
 
 
    system("pause");
    return 0;
}
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
04.05.2019, 23:33
Лучший ответ Сообщение было отмечено kulichiki96 как решение

Решение

Цитата Сообщение от kulichiki96 Посмотреть сообщение
у меня так получилось
поздравляю!

мой рефакт еще не отлажен, писал на коленке и изменения вносил прямо тут, исправлю чуть позже...

Добавлено через 23 минуты
kulichiki96,
вот, при первом приближении, тут все работает:
русский текст сделан чисто под виндоз, в линуксе надо убрать его реализацию.
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
///----------------------------------------------------------------------------|
/// Правила:
/// 1. Два игрока делают по очереди ходы.
/// 2. Гарантируется ЧЕТНОЕ число ходов.
/// 3. Ход каждого игрока это серия бросков Игрального Кубика.
/// 4. Ход переходит к другому игроку если выпала ЕДИНИЦА.
/// 5. Игра заканчивается, если один(два) игрок(а) набрал(и) больше 100 очков.
/// 6. Побеждает тот игрок, который набрал очков больше другого игрока.
///
///----------------------------------------------------------------------------:
 
#include <string>
#include <iostream>
 
#include <conio.h> //_getch   (); // для паузы.
 
/// Для перевода русского текста в исходниках в OEM866:
#include<windows.h> 
char bufRus[256];
char* R(const char* text)
{   CharToOemA(text, bufRus);
return bufRus;
}
 
#pragma once
using namespace std;
 
///----------------------------------------------------------------------------|
/// У игрока и компа равные права, поэтому и класс один на всех. :)
///----------------------------------------------------------------------------:
class cPlayer
{   public:
        string name;
        int playerScore;
        int playerThrows;
        bool throwover;
 
        cPlayer(string _name) : playerScore (0),
                                playerThrows(0)
        {
            cout << R("Как вас зовут?\n");
            getline(cin, name);
            cout << R("Привет, ") << name << "!\n";
        }
 
        cPlayer() :             name        ("Computer"),
                                playerScore (0),
                                playerThrows(0)
        {
        }
 
        void playerThrow()
        {   playerThrows = 0;
            throwover    = true;
 
            int t = 0;
            while(throwover)
            {   playerThrows++;
                t = 1 + rand() % 6; //t=throw
                if (t == 1)
                {   t = 0;
                    throwover = false;
                }
                else
                {   playerScore += t;
                    cout << name << R(" бросил:     ") << t            << endl;
                }
            }
            cout << name << " total score =  " << playerScore  << endl;
            cout << name << " throw a bone   " << playerThrows << endl;
 
        }
};
 
///----------------------------------------------------------------------------|
/// Теперь игроков будет судить арбитер. :)
///----------------------------------------------------------------------------:
class cArbiter
{   
public:
    cArbiter(cPlayer* p1, cPlayer* p2) : steps(0)
    {   players[0] = p1;
        players[1] = p2;
        init();
    }
    int  steps;
 
    enum e
    {   eMAN = 0,
        eCOMP
    }ePLAYER;
 
    void init()
    {
        cout << R("Жребий решит кто ходит первым!\n");
        int playerFirstThrow = 1 + rand() % 6;
        int compFirstThrow   = 1 + rand() % 6;
        cout << players[eMAN]->name  << R(" бросил: ") 
             << playerFirstThrow << "\n";
        cout << players[eCOMP]->name << R(" бросил: ") 
             << compFirstThrow  << "\n\n";
 
        if (playerFirstThrow >= compFirstThrow)
        {   ePLAYER = eMAN;
            cout << players[eMAN]->name  << R(" ваш ход!\n");
            
        }
        else
        {   ePLAYER = eCOMP;
            cout << players[eCOMP]->name  << R(" ходит первым!\n");
        }
 
        cout << R("\nЧтобы начать нажмите что-нибудь!\n\n");
        _getch   ();
        
    }
 
    bool check_win()
    {
        if(steps%2 == 0 &&  (players[eMAN ]->playerScore > 100 
                        ||   players[eCOMP]->playerScore > 100) )
        {
            if (players[eMAN]->playerScore > players[eCOMP]->playerScore)
            {   cout << players[eMAN]->name << R(" выграл со счетом: ")
                     << players[eMAN]->playerScore << endl;
            }
 
            else if (players[eMAN]->playerScore < players[eCOMP]->playerScore)
            {   cout << players[eCOMP]->name << R(" выграл со счетом: ")
                     << players[eCOMP]->playerScore << endl;
            }
 
            else
                cout << R("Победила дружба!") << endl;
 
            return false; /// Игра окончена!
        }
        
        return true;
    }
 
    cPlayer* players[2];
};
 
 
#include <time.h>
///----------------------------------------------------------------------------|
/// MAIN
///----------------------------------------------------------------------------:
int main()
{   srand(static_cast<unsigned int>(time(NULL)));
    
    //string goOn;
 
    cPlayer player("");
    cPlayer comp;
 
    cArbiter Arbiter(&player, &comp);
 
    while (Arbiter.check_win())
    {   
        switch(Arbiter.ePLAYER)
        {
            case cArbiter::eMAN :
            {   cout << "\n------------------------------------eMAN\n";
                Arbiter.steps++;
                player.playerThrow();
                Arbiter.ePLAYER = cArbiter::eCOMP;
                break;
            }
 
            case cArbiter::eCOMP :
            {   cout << "\n-----------------------------------eCOMP\n";
                Arbiter.steps++;
                comp.playerThrow();
                Arbiter.ePLAYER = cArbiter::eMAN;
                break;
            }
        }
    }
 
    _getch   ();
    return 0;
}
1
3 / 3 / 0
Регистрация: 01.02.2019
Сообщений: 67
04.05.2019, 23:35  [ТС]
XLAT, спасибо огромное)) сделаю как второй вариант заодно поучусь грамотно писать программу)

а как в ваш вариант добавить сохранение результатов игры в файл?
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
05.05.2019, 00:19
Цитата Сообщение от kulichiki96 Посмотреть сообщение
а как в ваш вариант добавить сохранение результатов игры в файл?
а какой формат нужен?
0
3 / 3 / 0
Регистрация: 01.02.2019
Сообщений: 67
05.05.2019, 00:46  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
а какой формат нужен?
в моем сохраняет в txt вот так Computer did 22 throws and won with the score: 100
т.е. сколько бросков сделал и общий счёт игрока. Сейчас ещё думаю как вывести счёт второго игрока, т.к. метод сохранения в файл в каждом классе отдельный

C++
1
2
3
4
5
6
7
void savePlayer()
    {
        string fileName = "gameResult.txt";
        ofstream fout(fileName);
        fout << name << " did " << playerThrows << " throws and won with the score: " << playerScore << "\n";
        fout.close();
    }
C++
1
2
3
4
5
6
7
void saveComp()
    {
        string fileName = "gameResult.txt";
        ofstream fout(fileName);
        fout << name << " did " << compThrows << " throws and won with the score: " << compScore << "\n";
        fout.close();
    }
Добавлено через 6 минут
было бы здорово чтото вроде
Computer did 22 throws and won with the score: 100
Player did 20 thorows and loose with the score: 71


Добавлено через 1 минуту
Я сделала 2 метода, т.к. в первом плеер выиграл комп проиграл, а во втором комп выиграл, плеер проиграл. Чтобы лишние if потом на использовать. Только пока не знаю как в метод плеера данные забрать по броскам и счёту компьютера)))
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
05.05.2019, 00:48
Цитата Сообщение от kulichiki96 Посмотреть сообщение
было бы здорово чтото вроде
можно сделать что будет писать в файл все что на экране.
или нужно только избранное?
0
3 / 3 / 0
Регистрация: 01.02.2019
Сообщений: 67
05.05.2019, 00:52  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
или нужно только избранное?
Игрок сделал X бросков и выиграл со счётом Y
Компьютер сделал X проско и прогирал со счётом Y

X и Y это переменные, остальное просто текст
всё, что на экране не надо, только результаты матча))
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
05.05.2019, 01:40
Лучший ответ Сообщение было отмечено kulichiki96 как решение

Решение

Цитата Сообщение от kulichiki96 Посмотреть сообщение
Игрок сделал X бросков и выиграл со счётом Y
Компьютер сделал X проско и прогирал со счётом Y
X и Y это переменные, остальное просто текст
всё, что на экране не надо, только результаты матча))
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
///----------------------------------------------------------------------------|
/// Правила:
/// 1. Два игрока делают по очереди ходы.
/// 2. Гарантируется ЧЕТНОЕ число ходов.
/// 3. Ход каждого игрока это серия бросков Игрального Кубика.
/// 4. Ход переходит к другому игроку если выпала ЕДИНИЦА.
/// 5. Игра заканчивается, если один(два) игрок(а) набрал(и) больше 100 очков.
/// 6. Побеждает тот игрок, который набрал очков больше другого игрока.
///
///----------------------------------------------------------------------------:
 
#include <string>
#include <iostream>
#include <fstream>
#include <conio.h> //_getch   (); // для паузы.
 
/// Для перевода русского текста в исходниках в OEM866:
#include<windows.h> 
char bufRus[256];
char* R(const char* text) // имя на русском в консоле
{   CharToOemA(text, bufRus);
return bufRus;
}
char* R1251(const char* text) // имя на русском в файле
{   OemToCharA(text, bufRus);
return bufRus;
}
 
#pragma once
using namespace std;
 
///----------------------------------------------------------------------------|
/// У игрока и компа равные права, поэтому и класс один на всех. :)
///----------------------------------------------------------------------------:
class cPlayer
{   
public:
    string name;
    string res;
    int Score;
 
    cPlayer(string _name) : Score (0),
                            Throws(0)
    {
        cout << R("Как вас зовут?\n");
        getline(cin, name);
        cout << R("Привет, ") << name << "!\n";
    }
 
    cPlayer() :             name  ("Computer"),
                            Score (0),
                            Throws(0)
    {
    }
 
    void playerThrow()
    {   int  throws_   = 0;
        bool throwover = true;
 
        int t = 0;
        while(throwover)
        {   throws_++;
 
            t = 1 + rand() % 6; //t=throw
            if (t == 1)
            {   t = 0;
                throwover = false;
            }
            else
            {   Score += t;
                cout << name << R(" бросил:     ") << t            << endl;
            }
        }
        cout << name << " total score =  " << Score  << endl;
        cout << name << " throw a bone   " << throws_ << endl;
 
        Throws += throws_;
    }
 
    int  Throws;
private:
    
};
 
///----------------------------------------------------------------------------|
/// class cGame
///----------------------------------------------------------------------------:
class cGame
{   
public:
    cGame() : steps(0), man("")
    {   init();
        game();
        save_result();
    }
   ~cGame()
    {   
    }
 
private:
 
    int  steps;
 
    enum e
    {   eMAN = 0,
        eCOMP
    }ePLAYER;
 
    void init()//---------------------------------------------------------init()
    {
        cout << R("Жребий решит кто ходит первым!\n");
        int playerFirstThrow = 1 + rand() % 6;
        int compFirstThrow   = 1 + rand() % 6;
        cout << man.name  << R(" бросил: ") 
             << playerFirstThrow << "\n";
        cout << comp.name << R(" бросил: ") 
             << compFirstThrow  << "\n\n";
 
        if (playerFirstThrow >= compFirstThrow)
        {   ePLAYER = eMAN;
            cout << man.name  << R(" ваш ход!\n");
        }
        else
        {   ePLAYER = eCOMP;
            cout << comp.name  << R(" ходит первым!\n");
        }
 
        cout << R("\nЧтобы начать нажмите что-нибудь!\n\n");
        _getch   ();
    }
 
    void game()//---------------------------------------------------------game()
    {
        while (check_win())
        {   
            switch(ePLAYER)
            {
            case cGame::eMAN :
                {   cout << "\n------------------------------------eMAN\n";
                steps++;
                man.playerThrow();
                ePLAYER = cGame::eCOMP;
                break;
                }
 
            case cGame::eCOMP :
                {   cout << "\n-----------------------------------eCOMP\n";
                steps++;
                comp.playerThrow();
                ePLAYER = cGame::eMAN;
                break;
                }
            }
        }
 
        cout << R("Было сделано общее количество ходов: ") << steps << "\n";
        if(steps%2 != 0) cout << R("Нарушено правило №2");
    }
 
    bool check_win()//-----------------------------------------------check_win()
    {
        if(steps%2 == 0 &&  ( man.Score > 100 
                        ||   comp.Score > 100) )
        {
            cout << R("\n===Игра закончена!===\n");
            if (man.Score > comp.Score)
            {   cout << man.name << R(" выграл со счетом: ")
                     << man.Score << endl;
 
                man.res  = "выграл";
                comp.res = "проиграл";
            }
            else if (man.Score < comp.Score)
            {   cout << comp.name << R(" выграл со счетом: ")
                     << comp.Score << endl;
 
                man.res  = "проиграл";
                comp.res = "выграл";
            }
            else
            {   cout << R("Победила дружба!\n");
                man.res  = "съиграл в ничью";
                comp.res = "съиграл в ничью";
            }
 
            return false; /// Игра окончена!
        }
 
        return true;
    }
 
    /// Пишем в файл:----------------------------------------------save_result()
    void save_result()
    {   std::cout << R("Пишем в файл!") << "\n";
        std::ofstream file("my.txt");
 
        file << "\n"<< R1251(man.name.c_str()) 
             << " сделал "    << man.Throws 
             << " бросков и " << man.res << " со счётом " 
             << man.Score     << "\n"
 
             << "Компьютер сделал " << comp.Throws 
             << " бросков и "       << comp.res << " со счётом " 
             << comp.Score << "\n"
 
             << "Всего бросков: " << comp.Throws + man.Throws
             << "\n";
        
        file.close();
    }
 
    cPlayer man;
    cPlayer comp;
};
 
 
#include <time.h>
///----------------------------------------------------------------------------|
/// MAIN
///----------------------------------------------------------------------------:
int main()
{   srand(static_cast<unsigned int>(time(NULL)));
 
    cGame game;
 
    _getch   ();
    return 0;
}
1
3 / 3 / 0
Регистрация: 01.02.2019
Сообщений: 67
05.05.2019, 02:05  [ТС]
XLAT,
Я вот тут думала, как мне реализовать сохраниние данных о бросках компьютера в своей программе иу меня вот такой вопрос возник:

я же создаю переменные в main

C++
1
2
3
4
5
6
7
8
9
10
11
12
Player firstPlayer;
 
    
    firstPlayer.name = name;
    firstPlayer.playerScore = 0;
    firstPlayer.playerThrows = 0;
    
 
    Computer comp;
    comp.name = "Computer";
    comp.compScore = 0;
    comp.compThrows = 0;
потом они в процессе игры заполняются.

в классе игрока есть такой метод

C++
1
2
3
4
5
6
7
void savePlayer()
    {
        string fileName = "gameResult.txt";
        ofstream fout(fileName);
        fout << name << " did " << playerThrows << " throws and won with the score: " << playerScore << "\n";
        fout.close();
    }
он сохраняет данные игрока. И чтобы он сохранял ещё и данные компьютера, мне надо сделать так:

C++
1
2
3
4
5
6
7
8
void savePlayer(int& compScore, int& compThrows)
    {
        string fileName = "gameResult.txt";
        ofstream fout(fileName);
        fout << name << " did " << playerThrows << " throws and won with the score: " << playerScore << "\n";
        fout << "Computer did " << compThrows << " and loose with the score: " << compScore << "\n";
        fout.close();
    }
какбы ссылки прописать на результаты компьютера

а вызвать таким образом:

C++
1
firstPlayer.savePlayer(comp.compThrows, comp.compScore);
чтобы он принял результаты бросков компьтера и сколько он очков набил?

Добавлено через 6 минут
Или ссылки не обязательно и просто сделать void savePlayer(int compScore, int compThrows)?
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
05.05.2019, 03:55
Цитата Сообщение от kulichiki96 Посмотреть сообщение
Только пока не знаю как в метод плеера данные забрать по броскам и счёту компьютера)))
ок,
Цитата Сообщение от kulichiki96 Посмотреть сообщение
в классе игрока есть такой метод
в точку!
можно так:
каждый объект класса сPlayer пусть сам заботится о сохранении своих данных.
Но вызывать мы их будем снаружи.
вот рабочий вариант:
Код целиком:
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
///----------------------------------------------------------------------------|
/// Правила:
/// 1. Два игрока делают по очереди ходы.
/// 2. Гарантируется ЧЕТНОЕ число ходов.
/// 3. Ход каждого игрока это серия бросков Игрального Кубика.
/// 4. Ход переходит к другому игроку если выпала ЕДИНИЦА.
/// 5. Игра заканчивается, если один(два) игрок(а) набрал(и) больше 100 очков.
/// 6. Побеждает тот игрок, который набрал очков больше другого игрока.
///
///----------------------------------------------------------------------------:
 
#include <string>
#include <iostream>
#include <fstream>
#include <conio.h> //_getch   (); // для паузы.
 
/// Для перевода русского текста в исходниках в OEM866:
#include<windows.h> 
char bufRus[256];
char* R(const char* text) // имя на русском в консоле
{   //CharToOemA(text, bufRus);
    return (char*)text;//bufRus;
}
/*
char* RR(const char* text) // имя на русском в консоле
{   CharToOemA(text, bufRus);
    return bufRus;
}*/
char* R1251(const char* text) // имя на русском в файле
{   OemToCharA(text, bufRus);
    return bufRus;
}
 
#pragma once
using namespace std;
 
///----------------------------------------------------------------------------|
/// У игрока и компа равные права, поэтому и класс один на всех. :)
///----------------------------------------------------------------------------:
class cPlayer
{   
public:
    string name;
    string res;
    int Score;
 
    cPlayer(string _name) : Score (0),
                            Throws(0)
    {
        cout << R("Как вас зовут?\n");
        getline(cin, name);
        name = R1251(name.c_str());
        cout << R("Привет, ") << name << "!\n";
    }
 
    cPlayer() :             name  ("Computer"),
                            Score (0),
                            Throws(0)
    {
    }
 
    void playerThrow()
    {   int  throws_   = 0;
        bool throwover = true;
 
        int t = 0;
        while(throwover)
        {   throws_++;
 
            t = 1 + rand() % 6; //t=throw
            if (t == 1)
            {   t = 0;
                throwover = false;
            }
            else
            {   Score += t;
                cout << name << R(" бросил:     ") << t            << endl;
            }
        }
        cout << name << " total score =  " << Score  << endl;
        cout << name << " throw a bone   " << throws_ << endl;
 
        Throws += throws_;
    }
 
    void   save(std::ofstream& file)
    {   
        file << "|---------------------------------:\n"
             << "Игрок "               << name   << " " << res << "!\n"
             << "Количество бросков: " << Throws << "\n"
             << "Количество очков:   " << Score  << "\n";
    }
 
    int  Throws;
private:
    
};
 
///----------------------------------------------------------------------------|
/// class cGame
///----------------------------------------------------------------------------:
class cGame
{   
public:
    cGame() : steps(0), man("")
    {   init();
        game();
        //save_result();
        save_result2();
    }
   ~cGame()
    {   
    }
 
private:
 
    int  steps;
 
    enum e
    {   eMAN = 0,
        eCOMP
    }ePLAYER;
 
    void init()//---------------------------------------------------------init()
    {
        cout << R("Жребий решит кто ходит первым!\n");
        int playerFirstThrow = 1 + rand() % 6;
        int compFirstThrow   = 1 + rand() % 6;
        cout << man.name  << R(" бросил: ") 
             << playerFirstThrow << "\n";
        cout << comp.name << R(" бросил: ") 
             << compFirstThrow  << "\n\n";
 
        if (playerFirstThrow >= compFirstThrow)
        {   ePLAYER = eMAN;
            cout << man.name  << R(" ваш ход!\n");
        }
        else
        {   ePLAYER = eCOMP;
            cout << comp.name  << R(" ходит первым!\n");
        }
 
        cout << R("\nЧтобы начать нажмите что-нибудь!\n\n");
        _getch   ();
    }
 
    void game()//---------------------------------------------------------game()
    {
        while (check_win())
        {   
            switch(ePLAYER)
            {
                case cGame::eMAN :
                {   cout << "\n------------------------------------eMAN\n";
                    steps++;
                    man.playerThrow();
                    ePLAYER = cGame::eCOMP;
                    break;
                }
 
                case cGame::eCOMP :
                {   cout << "\n-----------------------------------eCOMP\n";
                    steps++;
                    comp.playerThrow();
                    ePLAYER = cGame::eMAN;
                    break;
                }
            }
        }
 
        cout << R("Было сделано общее количество ходов: ") << steps << "\n";
        if(steps%2 != 0) cout << R("Нарушено правило №2");
    }
 
    bool check_win()//-----------------------------------------------check_win()
    {
        if(steps%2 == 0 &&  ( man.Score > 100 
                        ||   comp.Score > 100) )
        {
            cout << R("\n===Игра закончена!===\n");
            if (man.Score > comp.Score)
            {   cout << man.name << R(" выграл со счетом: ")
                     << man.Score << endl;
 
                man.res  = "выграл";
                comp.res = "проиграл";
            }
            else if (man.Score < comp.Score)
            {   cout << comp.name << R(" выграл со счетом: ")
                     << comp.Score << endl;
 
                man.res  = "проиграл";
                comp.res = "выграл";
            }
            else
            {   cout << R("Победила дружба!\n");
                man.res  = "съиграл в ничью";
                comp.res = "съиграл в ничью";
            }
 
            return false; /// Игра окончена!
        }
 
        return true;
    }
 
    /// Пишем в файл:----------------------------------------------save_result()
    void save_result()
    {   std::cout << R("Пишем в файл!") << "\n";
        std::ofstream file("my.txt");
 
        file << "\n"<< man.name
             << " сделал "    << man.Throws 
             << " бросков и " << man.res << " со счётом " 
             << man.Score     << "\n"
 
             << "Компьютер сделал " << comp.Throws 
             << " бросков и "       << comp.res << " со счётом " 
             << comp.Score << "\n"
 
             << "Всего бросков: " << comp.Throws + man.Throws
             << "\n";
        
        file.close();
    }
 
    void save_result2()
    {   std::cout << R("Пишем в файл!") << "\n";
        std::ofstream file("my.txt", ios::app); // Добавить запись.
 
         man.save(file);
        comp.save(file);
        file << "Всего бросков: " << comp.Throws + man.Throws << "\n\n";
        
        file.close();
        
    }
 
    cPlayer man;
    cPlayer comp;
};
 
#include <time.h>
///----------------------------------------------------------------------------|
/// MAIN
///----------------------------------------------------------------------------:
int main()
{   srand(static_cast<unsigned int>(time(NULL)));
    setlocale   (0,"");
 
    cGame game;
 
    _getch ();
    return 0;
}
1
3 / 3 / 0
Регистрация: 01.02.2019
Сообщений: 67
05.05.2019, 20:19  [ТС]
XLAT,
подскажите, что значит структура

C++
1
2
3
4
5
6
7
case cGame::eCOMP:
            {   cout << "\n-----------------------------------eCOMP\n";
            steps++;
            comp.playerThrow();
            ePLAYER = cGame::eMAN;
            break;
            }
кейс: игрок - eComp, steps++ - подсчет бросков? ePLAYER = cGame::eMAN; - это не поняла, что значит


и ещё момент - в Вашем варианте получается набрать больше 105 очков. Т.е. выкидываю я, например, 99 очков. Т.к. это меньше 100, и последний бросок был не "1" - я имею право бросить кубик ещё раз. Если выпадет максимальное число 6, общий счёт 105 и на этом моя игра завершена. Дальше пытает удачу компьютер пока не дойдёт до 100 или не выбросит "1"
исправила этот момент с помощью while (throwover && Score < 100)


|---------------------------------:
Player Olka lost!
Number of throws: 22
Number of points: 76
|---------------------------------:
Player Computer won!
Number of throws: 38
Number of points: 137
Overall throws: 60
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
05.05.2019, 21:16
Цитата Сообщение от kulichiki96 Посмотреть сообщение
steps++ - подсчет бросков?
русский перевод - ходы
steps обеспечивает контроль выполнения пункта №2 из свода правил.

Цитата Сообщение от kulichiki96 Посмотреть сообщение
в Вашем варианте получается набрать больше 105 очков
Читайте правила в верху исходника.
Тамошний код я сделал согласно тем 6 пунктам правил.
Чтобы внести смысловые правки в код, нужно сначала поменять(дополнить) правила.
Как то так.

Цитата Сообщение от kulichiki96 Посмотреть сообщение
кейс: игрок - eComp
C++
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/// Тут вся наша игра:
void game()//---------------------------------------------------------game()
{
    while (check_win())
    {   
        switch(ePLAYER) // ePLAYER это переменная перечисления номера игрока.
        {
            case cGame::eMAN : /// cGame::eMAN - тупо число 0 закрепленное за игроком человека.
            {   cout << "\n------------------------------------eMAN\n";
                steps++; /// Ход делает человек. Инкремент общего счетчика ходов.
                man.playerThrow();      /// Броски человека.
                ePLAYER = cGame::eCOMP; /// Передаем ход компу.
                break;
            }
 
            case cGame::eCOMP :/// cGame::eCOMP - тупо число 1 закрепленное за игроком компьютер.
            {   cout << "\n-----------------------------------eCOMP\n";
                steps++; /// Ход делает компьютер. Инкремент общего счетчика ходов.
                comp.playerThrow();    /// Броски компа.
                ePLAYER = cGame::eMAN; /// Передаем ход человеку.
                break;
            }
        }
    }
 
        cout << R("Было сделано общее количество ходов: ") << steps << "\n";
        if(steps%2 != 0) cout << R("Нарушено правило №2");
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2019, 21:16

Моя первая консольная игра :D
Всем доброго времени суток! Сегодня я хочу показать вам свою первую игру, правда пока она работает в консоли :( В ней вы можете прыгать и...

Не могу разобраться с ссылками и все!!
Первоначальный вид ссылок!! Код HTML &lt;a href=&quot;?tip=1&quot; class=&quot;menu&quot;&gt;Главная&lt;/a&gt; &lt;a href=&quot;?tip=2&quot;...

Не могу разобраться в проекте Игра в напёрстки
Уважаемые форумчане, помогите, пожалуйста, написать код &quot;javascript&quot; или &quot;jquery&quot; в этой простейшей игре в напёрстки. HTML и СSS я...

Игра крестики нолики, не могу разобраться с циклом не нахожу ошибку
Код еще не дописан во функции main но компилятор уже ругается на цикл whileбподстажите что нужно сделать чтобы заработал( #include...

2D консольная игра
Хотел сделать с графикой ТЕТРИС, но потом подумал, что неплохо попробовать прощупать сначала такую штуку, как консоль, мне кажется, это...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2. Задача: контроль уникальности строк в. . .
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
24 Мат модель здравосохранения: функциональные требования к строительству пищеблока
anaschu 18.06.2026
СРесурсами1: финансовый SD-контур, калькулятор функциональных требований пищеблока Сегодня разделили затраты в агенте Экономика по образцу модели НАСОСЫ, добавили расчёт ROI и построили первый. . .
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов • Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp • Смежный проект:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru