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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
HelloWorld56
5 / 5 / 1
Регистрация: 29.03.2012
Сообщений: 62
#1

Игра в кубики - C++

02.05.2012, 18:27. Просмотров 1285. Ответов 6
Метки нет (Все метки)

Игра «кубики». Условие: имеется два игральных кубика со значениями от 1 до 6. Игра происходит с компьютером, кубики бросаются поочередно. Побеждает тот, у кого сумма выпавших очков по итогам пяти бросков больше.

C++ (Qt)
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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int brosok (); // Прототип функции, которая генерирует случайное чило от 1 до 6
 
int main ()
 
{
    setlocale (LC_CTYPE, "Russian");
 
    int summ_1 = 0; // Накопление очков копмьютера
    int summ_2 = 0; // Накопление очков пользователя
    int number;     // Суда будет вводиться переименная, чтобы игрок бросил кубик
    int k_1 = 0;    // Суда присваивается сгенерированное число для компьютера
    int k_2 = 0;    // Суда присваивается сгенерированное число для пользователя
 
 
    //Первый бросок
    cout<<"\t\t\tПервый бросок\n";
    cout<<"Первый бросает компьютер."<<"\n"; 
    k_1 = brosok (); // Суда присваивается сгенерированное число для компьютера
    cout<<"Компьютеру выпало "<<k_1<<"\n\n"; //Вывод сгенерированного  числа для компьютера
    summ_1 = summ_1 + k_1; // Накопление очков копмьютера
    k_1 = 0; // Обнуление перемменной
     
    
    cout<<"Теперь ваш бросок, чтобы бросить нажмите 1: "<<"\n";
    cin>>number; // Ввод перемменной, чтобы бросить
    k_2 = brosok (); //Суда присваивается сгенерированное число для пользователя
    cout<<"Вам выпало "<<k_2<<"\n\n"; //Вывод сгенерированного  числа для пользователя
    summ_2 = summ_2 + k_2; //Накопление очков пользователя
    k_2 = 0; //Обнуление перемменной
 
    cout<<"\t\t\tВторой бросок\n\n";
    
 
 
    
    //Второй бросок
    cout<<"Бросок компьютера."<<"\n";
    k_1 = brosok ();
    cout<<"Компьютеру выпало "<<k_1<<"\n\n";
    summ_1 = summ_1 + k_1;
    k_1 = 0;
    
 
    cout<<"Теперь ваш бросок, чтобы бросить нажмите 1: "<<"\n";
    cin>>number;
    k_2 = brosok ();
    cout<<"Вам выпало "<<k_2<<"\n\n";
    summ_2 = summ_2 + k_2;
    k_2 = 0;
 
    cout<<"\t\t\tТретий бросок\n";
    //Третий бросок
    cout<<"Бросок компьютера."<<"\n";
    k_1 = brosok ();
    cout<<"Компьютеру выпало "<<k_1<<"\n\n";
    summ_1 = summ_1 + k_1;
    k_1 = 0;
    
    
    cout<<"Теперь ваш бросок, чтобы бросить нажмите 1: "<<"\n";
    cin>>number;
    k_2 = brosok ();
    cout<<"Вам выпало "<<k_2<<"\n\n";
    summ_2 = summ_2 + k_2;
    k_2 = 0;
    
    //Проверка результата
    if (summ_1 > summ_2)
    {
        cout<<"\t\t\tВыиграл компьютер"<<"\n";
    }
    if (summ_2 > summ_1)
    {
        cout<<"\t\t\tВы победили!"<<"\n";
    }
    else if (summ_1 == summ_2)
    {
        cout<<"\t\t\tНичья"<<"\n";
    }
 
    return 0;
}
 
int brosok ()
{
    srand( time( 0 ) );
    int a;
    a = 1 + rand() % 6;
    return a;
    
}
На скриншотах ниже видно, что количество брошенных очков компьютером и игроком постоянно совпадают, хотя и задействована функция rand ()



Что не так, объясните пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2012, 18:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Игра в кубики (C++):

Игра «кубики» - C++
Игра «кубики». Условие: имеется два игральных кубика со значениями от 1 до 6. Игра происходит с компьютером, кубики бросаются поочередно....

Игра кубики: почему броски пользователя генерируются неправильно? - C++
Поскажите пожалуйста, почему броски от пользователя генерируются не правильно ? #include&lt;iostream&gt; #include&lt;stdlib.h&gt; ...

Вывести среднюю сумму по броскам для обоих участников (игра "кубики") - C++
Игра «кубики». Условие: имеется два игральных кубика со значениями от 1 до 6. Игра происходит с компьютером, кубики бросаются поочередно....

игра "кубики" - C++
привет! знаю, что такая тема уже когда-то была на форуме, но, увы, тамошние варианты как-то не очень мне помогли(((. пожалуйста, помогите...

Игра "Кубики" - C++
Помогите, пожалуйста, решить следующую задачу (№2) про кубики. Вот она:

В коробке перемешались кубики - C++
В коробке перемешались кубики. На всех гранях каждого кубика нарисованы одинаковые буквы или цифры. Нужно разложить их в разные коробки:...

6
JokerNN
133 / 129 / 36
Регистрация: 29.12.2011
Сообщений: 359
02.05.2012, 19:01 #2
C++
1
srand(time(NULL));
Вынесите в начало main() а из функции бросок уберите. Также рекоммендую в цикле каждую пару бросков организоват для пущей гибкости (если я например 10 раз захочу кинуть кости, 10 раз нужно будет одни и те же строчки писать?)

Забыл добавить: такое происходит потому, что вы каждый раз вызывали srand() перед функцией получения случайного значения. Происходило это всё с разницей менее 1 секунды, а для одинаковых значений, скармливаемых srand(), будут одинаковые значения rand().
1
Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
02.05.2012, 19:13 #3
JokerNN, да не, для одного и того же srand ф-я rand() будет выдавать одно и тоже значение вроде
upd: это я к тому, что по логике, в main не нужно выносить srand
0
JokerNN
133 / 129 / 36
Регистрация: 29.12.2011
Сообщений: 359
02.05.2012, 19:24 #4
Ну я это и написал) А если не убрать srand() из функции - он будет вызываться каждый раз, а вызов функции который вызывает srand() происходит 2 раза подряд без пауз. То есть время в секундах выдаётся одно и то же, соответственно и рандом одинаковый, то есть решение проблемы сабжа - либо вызывать srand() один раз в программе, либо ставить паузу между вызовами, либо искать медленную машину
0
Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
02.05.2012, 19:26 #5
аа, при rand() srand() тоже меняется.
0
GAGAn
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 37
02.10.2012, 19:01 #6
Раскоментируйте пожалуйста вот эту часть кода
C++
1
2
3
4
5
6
7
8
int brosok ()
{
    srand( time( 0 ) );
    int a;
    a = 1 + rand() % 6;
    return a;
    
}
0
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
02.10.2012, 19:11 #7
Цитата Сообщение от GAGAn Посмотреть сообщение
Раскоментируйте пожалуйста вот эту часть кода
Может быть закомментируйте?

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
int brosok ()// функция бросок
{
    srand( time( 0 ) ); // задаёт начальное значение (зерно)
    int a;
    a = 1 + rand() % 6; // а присваивает случайные значения от 1 до 6
    return a; // возвращает а
    
}
1
02.10.2012, 19:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2012, 19:11
Привет! Вот еще темы с ответами:

Задача про кубики - C++
Есть столбики указанных размеров. Задание такое: Какое наименьшое количество перекладываний необходимо сделать, что бы высота 2х любых...

Кубики, динамическое программирование - C++
Здраствуйте! Есть задача ( на украинском) Незважаючи на те, що Петрик П’яточкін ходить до школи, він все ще продовжує...

Реализовать игру в кости (кубики) - C++
Вот мы по си сейчас проходим Указатели и шаблоны функций ! Нам задали вот такую задачку. Помогите пожалуйста!!! Написать...

Ваня и кубики. Олимпиадная задача - C++
Ване на день рождения подарили n кубиков. Он с друзьями решил построить из них пирамиду. Ваня хочет построить пирамиду следующим образом:...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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