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

Как написать игру "Кубики"? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Lena86
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 80
22.08.2014, 15:10     Как написать игру "Кубики"? #1
Условие: имеется два игральных кубика со значениями от 1 до 6. Игра происходит с компьютером, кубики бросаются поочередно.Побеждает тот, у кого сумма выпавших очков по итогам пяти бросков больше. Предусмотрите возможность получения первого хода человеком или компьютером.Кубики отображаются с помощью символов. В КОНЦЕ ИГРЫ НЕОБХОДИМО ВЫВОДИТЬ СРЕДНЮЮ СУММУ ПО БРОСКАМ ДЛЯ ОБОИХ УЧАСНИКОВ
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2014, 15:10     Как написать игру "Кубики"?
Посмотрите здесь:

Подскажите как написать игру "жизнь" C++
Как написать игру "Цепь"? C++
написать игру "кости" C++
C++ Как написать игру "Кости"
C++ Надо написать программу (игру) "Кости". Где ошибка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
22.08.2014, 16:12     Как написать игру "Кубики"? #2
Какие-нибудь наработки, мысли, догадки. Иначе вам к фрилиансерам. Ну или к более продвинутым сокурсникам с шоколадкой.
 Комментарий модератора 
Нарушение правил п. 5.9 Запрещено отсылать пользователей из тематических разделов в разделы фриланса...
Еще раз увижу подобное оторву пальцы по самые локти.


Добавлено через 13 минут
Воу-Воу, прошу прощения)) Надеюсь, сокурсники таковыми не считаются.

Цитата Сообщение от Lena86 Посмотреть сообщение
Кубики отображаются с помощью символов.
Интересно, с помощью каких же это?
DieMore
3 / 3 / 2
Регистрация: 21.08.2014
Сообщений: 17
22.08.2014, 16:14     Как написать игру "Кубики"? #3
Может быть,имелось в виду,что кубики отображаются с помощью цифр?
Lena86
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 80
22.08.2014, 16:16  [ТС]     Как написать игру "Кубики"? #4
Кубики отображаются с помощью символов.
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
22.08.2014, 16:21     Как написать игру "Кубики"? #5
Цитата Сообщение от DieMore Посмотреть сообщение
Может быть,имелось в виду,что кубики отображаются с помощью цифр?
тогда логичнее было бы написать что-то типа "выпавшее число выводится на экран". А то мало-ли тут символьной графикой нарисовать кубики надо. А спецсимволов я не припомню.
Цитата Сообщение от Lena86 Посмотреть сообщение
Кубики отображаются с помощью символов.
Цитата Сообщение от КОП Посмотреть сообщение
Интересно, с помощью каких же это?
Или пример напишите, как должен выглядеть вывод.
Lena86
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 80
22.08.2014, 16:25  [ТС]     Как написать игру "Кубики"? #6
если бы я знала, я бы сама сделала это задание
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
22.08.2014, 16:43     Как написать игру "Кубики"? #7
Как-то так. Ошибки присутсвуют, допилишь сам.

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
/*
Условие: имеется два игральных кубика со значениями от 1 до 6.
Игра происходит с компьютером, кубики бросаются поочередно.
Побеждает тот, у кого сумма выпавших очков по итогам пяти бросков больше.
Предусмотрите возможность получения первого хода человеком или компьютером.
Кубики отображаются с помощью символов.
В КОНЦЕ ИГРЫ НЕОБХОДИМО ВЫВОДИТЬ СРЕДНЮЮ СУММУ ПО БРОСКАМ ДЛЯ ОБОИХ УЧАСНИКОВ
*/
 
#include <stdlib.h>
#include <ctime>
#include <iostream>
#include <time.h>
#include <numeric>
 
const int max_try = 5;
const int max_bone_num = 6;
const int human = 1;
const int machine = 2;
 
int get_rand_bone(void) { return (rand() % max_bone_num) + 1; }
 
bool game(int who_is_first);
int human_try(void);
int machine_try(void);
 
int main(void)
{
    setlocale(0, "rus");
    srand(static_cast<unsigned int>(time(NULL)));
 
    bool end_game = false;
 
    do {
        system("cls");
 
        std::cout << "=== ИГРА КУБИКИ ===\n\n";
        std::cout << "Кто первый бросает? [1 - человек, 2 - компьютер, 0 - выход] : ";
        
        int result;
        std::cin >> result;
        std::cout << "\n";
 
        end_game = (result != 0) ? game(result) : true;
    } while (!end_game);
 
    return 0;
}
 
bool game(int who_is_first)
{
    bool end_game = false;
 
    int human_results[max_try];
    int machine_results[max_try];
 
    std::cin.clear();
 
    for (int i = 0; i < max_try; ++i)
    {
        std::cout << "\n" << "ПОПЫТКА №" << i + 1 << "\n\n";
 
        if (who_is_first == human)
        {
            human_results[i] = human_try();
            std::cout << "\n";
            machine_results[i] = machine_try();
        } else
        {
            machine_results[i] = machine_try();
            std::cout << "\n";
            human_results[i] = human_try();
        }
    }
 
    int human_result = std::accumulate(human_results, human_results + max_try, 0);
    int machine_result = std::accumulate(machine_results, machine_results + max_try, 0);
 
    std::cout << "\n";
    if (human_result > machine_result)
        std::cout << "Вы победили! :) \n\n";
    else if (machine_result > human_result)
        std::cout << "Вы проиграли! :( \n\n";
    else
        std::cout << "Ничья!\n\n";
 
    std::cout << "СТАТИСТИКА: \n"
        << "Человек: Средний бросок: " << human_result / max_try << "\n"
        << "Компьютер: Средний бросок " << machine_result / max_try << "\n\n";
 
    std::cout << "Ещё раз? (0 - нет, 1 - да) : ";
    int res;
    std::cin >> res;
    end_game = (res == 0);
 
    return end_game;
}
 
int human_try(void)
{
    std::cout << "Ваш ход! Нажмите ENTER для броска.";
    
    std::cin.get();
    int bone_1 = get_rand_bone();
    int bone_2 = get_rand_bone();
 
    int result = bone_1 + bone_2;
    std::cout << "Вы бросили: " << bone_1 << " " << bone_2 << " (" << result <<")\n";
    return result;
}
 
int machine_try(void)
{
    std::cout << "Ход компьютера...\n";
 
    int bone_1 = get_rand_bone();
    int bone_2 = get_rand_bone();
 
    int result = bone_1 + bone_2;
    std::cout << "Компьютер бросил: " << bone_1 << " " << bone_2 << " (" << result <<")\n";
    return result;
}
Donnerwetter
40 / 40 / 12
Регистрация: 04.02.2014
Сообщений: 144
22.08.2014, 18:43     Как написать игру "Кубики"? #8
вот, писал как-то такую игру, пользуйтесь:

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 <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
//Программа "Игра в кубики"
//функция графического отображения кубиков
void Throw(int Dice)
{
    switch (Dice)
    {
    case 1:
    cout <<"===========" <<endl;
    cout <<"|         |" <<endl;
    cout <<"|         |" <<endl;
    cout <<"|    *    |" <<endl;
    cout <<"|         |" <<endl;
    cout <<"|         |" <<endl;
    cout <<"===========" <<endl;
        break;
    case 2:
    cout <<"===========" <<endl;
    cout <<"|         |" <<endl;
    cout <<"|    *    |" <<endl;
    cout <<"|         |" <<endl;
    cout <<"|    *    |" <<endl;
    cout <<"|         |" <<endl;
    cout <<"===========" <<endl;
        break;
    case 3:
    cout <<"===========" <<endl;
    cout <<"|         |" <<endl;
    cout <<"|  *      |" <<endl;
    cout <<"|    *    |" <<endl;
    cout <<"|      *  |" <<endl;
    cout <<"|         |" <<endl;
    cout <<"===========" <<endl;
        break;
    case 4:
    cout <<"===========" <<endl;
    cout <<"|         |" <<endl;
    cout <<"|  *   *  |" <<endl;
    cout <<"|         |" <<endl;
    cout <<"|  *   *  |" <<endl;
    cout <<"|         |" <<endl;
    cout <<"===========" <<endl;
        break;
    case 5:
    cout <<"===========" <<endl;
    cout <<"|         |" <<endl;
    cout <<"|  *   *  |" <<endl;
    cout <<"|    *    |" <<endl;
    cout <<"|  *   *  |" <<endl;
    cout <<"|         |" <<endl;
    cout <<"===========" <<endl;
        break;
    case 6:
    cout <<"===========" <<endl;
    cout <<"|         |" <<endl;
    cout <<"|  *   *  |" <<endl;
    cout <<"|  *   *  |" <<endl;
    cout <<"|  *   *  |" <<endl;
    cout <<"|         |" <<endl;
    cout <<"===========" <<endl;
        break;
    }
}
//функция выпавших кубиков и вывод на экран суммарного результата с графическим отображением
int Res()
{
    int Dice_1=rand()%5+1;
    Throw(Dice_1);
    int Dice_2=rand()%5+1;
    Throw(Dice_2);
    int Result;
    Result=Dice_1+Dice_2;
    cout<<"Result: "<<Result<<"\n\n";
    return Result;
}
void main()
{
    srand(time (NULL));
    cout <<"Hello! Let's play in dices?" <<endl;
    char Turn;
    int ManScore=0;
    int CompScore=0;
    //определение очередности ходов
    do
    {
        cout<<"\nLet's see who will start the game. Throw dices (press s)! "<<endl;
        cin>>Turn;
    }
    while (Turn!='s');
    int ManRes, CompRes;
    do
    {
        ManRes=Res();
        cout<<"Your result: "<<ManRes<<endl;
        cout<<"\n...Now it's computer turn"<<endl;
        CompRes=Res();
        cout <<"Computer result: "<<CompRes<<endl;
    }
    while (ManRes==CompRes);
    //по результатам жеребьевки игру начинает человек
    //каждый игрок делает по 5 ходов, на экран выводится общий результат каждого игрока
    if (ManRes>CompRes)
    {
        cout <<"\nYou start...\n" <<endl;
        for (int i=1; i<=5; i++)
        {
            do
            {
                cout<<"\nThrow! (press s)"<<endl;
                cin>>Turn;
            }
            while (Turn!='s');
            ManScore+=Res();
            CompScore+=Res();
 
        }
        cout<<"Your total score: "<<ManScore<<endl;
        cout<<"\nComp total score: "<<CompScore<<endl;
    }
    //по результатам жеребьевки игру начинает человек
    //каждый игрок делает по 5 ходов, на экран выводится общий результат каждого игрока
    else
    {
        cout<<"\nComputer starts...\n"<<endl;
        for (int i=1; i<=5; i++)
        {
            CompScore+=Res();
            do
            {
                cout<<"\nThrow! (press s)"<<endl;
                cin>>Turn;
            }
            while (Turn!='s');
            ManScore+=Res();
            
        }
        cout<<"Your total score: "<<ManScore<<endl;
        cout<<"Computer total score: "<<CompScore<<endl;
    }
    //определение победителя
    if (ManScore==CompScore)
    {
        cout<<"\n\nDraw game!\n\n"<<endl;
    }
    else
    {
        if (ManScore>CompScore)
        {
            cout<<"\n\nYou won! Congratulations!\n\n"<<endl;
        }
        if(ManScore<CompScore)
        {
            cout<<"\n\nComputer won! Good luck next time!\n\n"<<endl;
        }
    }
    //статистика игры (среднее арифметическое выпавших значений)
    cout<<"Game statistics:\n\n";
    cout<<"Your range: "<<ManScore/5.0<<endl;
    cout<<"Computer range: "<<CompScore/5.0<<endl;
    cout<<"\n";    
}
rikimaru2013
22.08.2014, 22:13
  #9

Не по теме:

Странно, что в задании написано "игра". Где тут игра? Компьютер генерирует рендом вам и себе, а вы только жмёте 1 кнопку дальше ( что кстате можно реализовать компьютером за вас и оставить его на час пусть "играет" *сарказм*).

FraidZZ
22.08.2014, 23:59
  #10
 Комментарий модератора 
-NEURON-,Во-первых, Запрещено публично обсуждать действия администрации форума, касающиеся их прямых обязанностей.
Во-вторых, Оскорбление, пренебрежение и другие проявления неуважения к администрации форума и ее действиям недопустимы, и могут повлечь применение санкций, вплоть до бана. (это к
Цитата Сообщение от -NEURON- Посмотреть сообщение
админ явно был пьян когда их ставил.
)
Продолжение данного обсуждения понесёт за собой санкции.
-NEURON-
23.08.2014, 07:06
  #11

Не по теме:

Цитата Сообщение от FraidZZ Посмотреть сообщение
Продолжение данного обсуждения понесёт за собой санкции.
Да всё все, понял я, исправлюсь, ехехе, просто само слово "санкции" в последнее время так популярно стало, что улыбнуло

Lena86
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 80
28.08.2014, 14:55  [ТС]     Как написать игру "Кубики"? #12
у меня такой вопрос..почему нужно нажимать именно "s"? у меня это не работает
Donnerwetter
40 / 40 / 12
Регистрация: 04.02.2014
Сообщений: 144
28.08.2014, 15:14     Как написать игру "Кубики"? #13
Цитата Сообщение от Lena86 Посмотреть сообщение
у меня такой вопрос..почему нужно нажимать именно "s"? у меня это не работает
Необязательно 's', можете назначить любую клавишу, внеся соответствующее изменение в код.
P.S. Кстати, при работе программы какая раскладка клавиатуры активна? Нужна английская, может поэтому и не работает.
Lena86
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 80
28.08.2014, 15:28  [ТС]     Как написать игру "Кубики"? #14
активна английская раскладка. а как вносить изменения в код?

Добавлено через 8 минут
и еще вопрос не совсем по теме...но все же..возможно ли в фунции в return вложить несколько значений. например, не return x; а return x,y????
dvano
 Аватар для dvano
131 / 62 / 16
Регистрация: 18.06.2014
Сообщений: 216
Завершенные тесты: 1
28.08.2014, 15:33     Как написать игру "Кубики"? #15
Цитата Сообщение от Lena86 Посмотреть сообщение
активна английская раскладка. а как вносить изменения в код?
С помощью текстового редактора. Скачать можно в интернете.

Добавлено через 1 минуту
Цитата Сообщение от Lena86 Посмотреть сообщение
и еще вопрос не совсем по теме...но все же..возможно ли в фунции в return вложить несколько значений. например, не return x; а return x,y????
Возвращающая функция не может возвращать одновременно больше одного значения.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2014, 15:42     Как написать игру "Кубики"?
Еще ссылки по теме:

C++ Требуется написать игру "Лагерь". Число палаток должно равняться числу деревьев
C++ Написать программу которaя запрашиваeт у пользователя номер дня недели, затем выводит одно из сообщений "рабочий день", "суббота", "воскресенье"
Мне нужно написать игру "Шашки" C++

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

Или воспользуйтесь поиском по форуму:
_Ivana
2185 / 1390 / 124
Регистрация: 01.03.2013
Сообщений: 4,142
Записей в блоге: 2
28.08.2014, 15:42     Как написать игру "Кубики"? #16
Можно вернуть ключи от квартиры, где лежат не только деньги, и и нужные x и y....
Yandex
Объявления
28.08.2014, 15:42     Как написать игру "Кубики"?
Ответ Создать тему
Опции темы

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