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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Lena86
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 81
#1

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

22.08.2014, 15:10. Просмотров 2564. Ответов 15
Метки нет (Все метки)

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

Подскажите как написать игру "жизнь" - C++
Собственно интересует каким методом должна осуществлястя проверка, нашёл в интернете готовые решения - не стал глядеть, хотел бы понять

Как написать игру "Кости" - C++
Подскажите как правильно написать игру кости.

Как написать игру "Цепь"? - C++
• Данное приложение является реализацией известной логической игры. В данной реализации предусматривается игра двух игроков на квадратном...

Надо написать программу (игру) "Кости". Где ошибка? - C++
Доброго времени. суток. Прошу помочь с решение "проблемы" по написанию программы (игры) в "Кости" на С++ Вот мой код: include...

Написать игру "Угадай число", используя цикл while - C++
ку,нужно написать игру где компьютер угадывает число допустим за 7 попыток,использовать while.

Мне нужно написать игру "Шашки" - C++
Ребят, помогите, надо написать Шашки на Microsoft Visual C++, но я не знаю с чего начать. Я прочитал у вас почти все форумы по этой теме,...

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


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

Цитата Сообщение от Lena86 Посмотреть сообщение
Кубики отображаются с помощью символов.
Интересно, с помощью каких же это?
0
DieMore
3 / 3 / 2
Регистрация: 21.08.2014
Сообщений: 17
22.08.2014, 16:14 #3
Может быть,имелось в виду,что кубики отображаются с помощью цифр?
0
Lena86
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 81
22.08.2014, 16:16  [ТС] #4
Кубики отображаются с помощью символов.
0
КОП
361 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 762
22.08.2014, 16:21 #5
Цитата Сообщение от DieMore Посмотреть сообщение
Может быть,имелось в виду,что кубики отображаются с помощью цифр?
тогда логичнее было бы написать что-то типа "выпавшее число выводится на экран". А то мало-ли тут символьной графикой нарисовать кубики надо. А спецсимволов я не припомню.
Цитата Сообщение от Lena86 Посмотреть сообщение
Кубики отображаются с помощью символов.
Цитата Сообщение от КОП Посмотреть сообщение
Интересно, с помощью каких же это?
Или пример напишите, как должен выглядеть вывод.
0
Lena86
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 81
22.08.2014, 16:25  [ТС] #6
если бы я знала, я бы сама сделала это задание
0
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 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;
}
0
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";    
}
1
rikimaru2013
22.08.2014, 22:13
  #9

Не по теме:

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

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

Не по теме:

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

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

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

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

Требуется написать игру "Лагерь". Число палаток должно равняться числу деревьев - C++
Нуждаюсь в вашей помощи. Лагерь (&quot;Tents&quot;, &quot;Tents and Trees&quot;) представляет собой прямоугольную сетку, некоторые клетки которой содержат...

Написать программу, моделирующую карточную игру "Пьяница" и определяющую, кто из двух игроков выигрывает - C++
помогите. Я не могу понять. Пжлст. С++ Игорь с Артуром играют в &quot;Пьяницу&quot;. Это такая карточная игра, правила которой описаны ниже. В...

Написать игру на с++ "Балда" 5X5 - C++
Новичок. Не умею писать игры. Помогите написать игру. Или подскажите, что нужно для этого сделать, может похожие источники есть и пр. 1....

написать игру "кости" - C++
написать игру &quot;кости&quot; у компьютера и пользователя по 100 игровой валюты ставку делает компьютер потом пользователь


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
28.08.2014, 15:33
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru