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

Игра "кости" - C++

Восстановить пароль Регистрация
 
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
12.01.2013, 03:39     Игра "кости" #1
написал простенькую игру
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
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
    setlocale(0,"");
srand(time(0));
int s=0,f=0,x,i=1,a,b,c,d;
a=rand() % 7;
b=rand() % 7;
c=rand() % 7;
d=rand() % 7;
cout<<"введите кол-во попыток: "<<endl;
cin>>d;
while(i<=d){ 
 
s+=c+d;
cout<<"игрок: "<<s<<endl;
f+=a+b;
cout<<"компьютер: "<<f<<endl;
i+=1;
}
if(s>f){cout<<"вы выйграли"<<endl;}
if(s==f){cout<<"ничья"<<endl;}
if(s<f){cout<<"вы проиграли"<<endl;}
system("pause");
return 0;
}
программа работает но как то странно генерирует числа особенно когда ставишь количество попыток больше 1 раза.
вот например 1 раз оно с генерировало числа у игрока в суме получилось 7 а у компьютера 10 и оно в последующем тупо складывает эти числа как видно на картинке т.е следующий бросок счет будет 14:10 патом 21:30 и так далее не могу понять что не так
Миниатюры
Игра "кости"  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.01.2013, 06:25     Игра "кости" #2
Цитата Сообщение от илья1995 Посмотреть сообщение
вот например 1 раз оно с генерировало числа у игрока в суме получилось 7 а у компьютера 10 и оно в последующем тупо складывает эти числа как видно на картинке т.е следующий бросок счет будет 14:10 патом 21:30 и так далее не могу понять что не так
Сами так написали )
Вот это нужно?:
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
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
    setlocale(0,"");
srand(time(0));
int s=0,f=0,i=1,a,b,c,d;
 
cout<<"введите кол-во попыток: "<<endl;
cin>>d;
while(i<=d){ 
 a=rand() % 6+1;
b=rand() % 6+1;
c=rand() % 6+1;
d=rand() % 6+1;
s+=c+d;
cout<<"игрок: "<<s<<endl;
f+=a+b;
cout<<"компьютер: "<<f<<endl;
i+=1;
}
if(s>f){cout<<"вы выйграли"<<endl;}
if(s==f){cout<<"ничья"<<endl;}
if(s<f){cout<<"вы проиграли"<<endl;}
system("pause");
return 0;
}
Ogniel
 Аватар для Ogniel
24 / 24 / 1
Регистрация: 30.05.2011
Сообщений: 127
12.01.2013, 13:22     Игра "кости" #3
тебе поможет randomise() перед рандомами

Добавлено через 1 минуту
иначе программа будет рандомить одно число подряд

Добавлено через 28 минут
тьфу, randomize()
JlightenDev_C++
 Аватар для JlightenDev_C++
61 / 61 / 7
Регистрация: 12.08.2012
Сообщений: 150
12.01.2013, 16:07     Игра "кости" #4
Вот пример.
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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
 
bool check(std::string sname);
std::string winner(const int iplayer, const int ibot, std::string sname);
 
int main()
{
    std::string sname;
    int imax(0), isump(0), isumb(0);
    do
    {
    std::cout << "What is your name: ";
    getline(std::cin, sname);
    }while(check(sname));
    std::cout << "How many rounds: ";
    std::cin >> imax;
    srand(time(NULL));
    for(int icount(0); icount < imax; icount++)
    {
        std::cout << "\n\nPress any key for action.";
        getch();
        int iplayer(rand()%6+1), ibot(rand()%6+1);
        std:: cout << "\nRound " << icount + 1 << ": " << sname << " " << iplayer;
        std:: cout << "\nRound " << icount + 1 << ": bot " << ibot;
        isump += iplayer;
        isumb += ibot;
    }
    std::cout << "\n\nWinner " << winner(isump, isumb, sname) << " congratulation!";
    getch();
    return 0;
}
 
bool check(std::string sname)
{
     int len = sname.size();
     for(int i = 0; i < len; i++)
     {
         if((sname[i] - 48) >= 0 && (sname[i] - 48) < 10)
         {
             system("CLS");
             std::cout << "Incorrect name.\n";
             return true;
         }
     }
     return false;
}
 
std::string winner(const int iplayer, const int ibot, std::string sname)
{
     return iplayer > ibot ? sname : "bot";
}
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
12.01.2013, 17:12  [ТС]     Игра "кости" #5
я немного переделал программу теперь пользователь вводит свои два числа. как ограничить вводимые числа чтобы он в переменную c,d можно было вводить только числа 1,2,3,4,5,6
знаю что примерно так
C++
1
2
c={1,2,3,4,5,6};
d={1,2,3,4,5,6};
но так не работает
QVO
 Аватар для QVO
636 / 447 / 32
Регистрация: 26.10.2010
Сообщений: 1,261
Записей в блоге: 4
Завершенные тесты: 2
14.01.2013, 23:27     Игра "кости" #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
while ( true )
{
cin >> number
if ( number > 0 && number < 7 )
{
c = number;
break;
}
else
{
cout << "re-enter the number" << endl;
}
}
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
14.01.2013, 23:32     Игра "кости" #7
C++
1
srand (time(NULL) + rand())
Вот такая функция srand будет генерировать более случайные числа
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2014, 10:16     Игра "кости"
Еще ссылки по теме:

C++ Игра "Кости"
C++ Игра "Однорукий бандит". Кольцевая очередь. Двусвязный список

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

Или воспользуйтесь поиском по форуму:
ВикаCat
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 7
08.04.2014, 10:16     Игра "кости" #8
Ребята, так какая правильная программа Игра "Кости"?
Yandex
Объявления
08.04.2014, 10:16     Игра "кости"
Ответ Создать тему
Опции темы

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