Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 22.07.2017
Сообщений: 57
1

Игра "Кубики" - упростить код

22.07.2017, 21:17. Показов 3168. Ответов 5
Метки нет (Все метки)

Всем привет! Нашел задачку:
Написать игру «Кубики». Пользователь и компьютер по очереди бросают 2 кубика. Победитель – тот, у кого по результатам 3х бросков сумма больше. Предусмотреть красивый интерфейс игры.
Написал) Все работает так как и хотел, но может есть какие-то замечания, или возможность упростить. Особенно придираюсь к лесенке else if, чет другого не придумал.
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
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int main (){
    srand(time(0));
    int n, one, two, co=0, ol, k=0, var, sum1=0, sum2=0;
    bool kto=true;
    cout << "Privet davaii sigraem v kosti.\nPobedit tot u kogo suma 3 broskov budet bolshe\n\n";
    while (k<3)
    {
        cout << "=========================\n1 - Brositj kubik\n2 - Vijti\nViberi variant: ";
        cin >> var;
        if (var==1)
        {
            for (int j=0; j<=1; j++)
                {
                    one=1+(rand()%6); 
                    two=1+(rand()%6);
                    cout << "=========================\n";
                    if (kto) cout << "\tTvoi kubiki\n";
                    if (!kto) cout << "\tMoi kubiki\n";
                    cout << "=========================\n";
                    for (int i=1; i<=5; i++)
                    {
                            if (i==1) n=1;
                            else if (i==2 && one==1) n=2;
                            else if (i==2 && one==3 || i==2 && one==2) n=3;
                            else if (i==2 && one==4 || i==2 && one==5 || i==2 && one==6) n=4;
                            else if (i==3 && one==3 || i==3 && one==1 || i==3 && one==5) n=5;
                            else if (i==3 && one==2 || i==3 && one==4) n=2;
                            else if (i==3 && one==6) n=4;
                            else if (i==4 && one==1) n=2;
                            else if (i==4 && one==3 || i==4 && one==2) n=6;
                            else if (i==4 && one==4 || i==4 && one==5 || i==4 && one==6) n=4;
                            else if (i==5) n=7;
                        switch (n){
                            case 1:
                            cout << (char)201 << (char)205  << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187;
                            break;
                            case 2:
                            cout << (char)186 << "       " << (char)186;
                            break;
                            case 3:
                            cout << (char)186 << " o     " << (char)186;
                            break;
                            case 4:
                            cout << (char)186 << " o   o " << (char)186;
                            break;
                            case 5:
                            cout << (char)186 << "   o   " << (char)186;
                            break;
                            case 6:
                            cout << (char)186 << "     o " << (char)186;
                            break;
                            case 7:
                            cout << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188;
                            break;
                        }
                        if (co%2==0) {
                            cout << "\t";
                            i--;
                            ol=one;
                            one=two;}
                        else {
                            cout << endl;
                            one=ol; }
                    co++;
                    }
                    if (kto){
                        sum1=sum1+one+two;
                        kto=false;
                        continue;
                    }
                    if(!kto){
                        sum2=sum2+one+two;
                        kto=true;
                    }
                }
            }
            else if (var==2) return 0;
            else {
                cout << "\n!!! Viberi variant 1 ili 2 !!!\n";
                continue;}
                k++;
    }
    cout << "\nTvoj rezultat = " << sum1 << endl << "Moj rezultat = " << sum2 << endl;
    if (sum1>sum2)
        cout << "\n\tTi pobedil ;)";
    else cout << "\n\tTi proigral :(";
    getch ();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.07.2017, 21:17
Ответы с готовыми решениями:

Игра "Кости". Упростить код
Дело в том , что нужно написать игру &quot;Кости&quot; на С++ Вот код: = { &quot; -----\n| ...

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

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

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

5
Любитель чаепитий
3547 / 1657 / 509
Регистрация: 24.08.2014
Сообщений: 5,618
Записей в блоге: 1
22.07.2017, 21:55 2
Цитата Сообщение от BeardVis Посмотреть сообщение
Предусмотреть красивый интерфейс игры.
Цитата Сообщение от BeardVis Посмотреть сообщение
Написал)
Цитата Сообщение от BeardVis Посмотреть сообщение
Privet davaii sigraem v kosti.\nPobedit tot u kogo suma 3 broskov budet bolshe
это красивый интерфейс? )
0
1 / 1 / 0
Регистрация: 22.07.2017
Сообщений: 57
22.07.2017, 22:00  [ТС] 3
Ну... Для меня да, я только недавно начал заниматься. Зато кубики классные вышли
0
с++
1256 / 501 / 220
Регистрация: 15.07.2015
Сообщений: 2,517
23.07.2017, 04:58 4
Цитата Сообщение от BeardVis Посмотреть сообщение
Зато кубики классные вышли
Как совет что можно сделать: ну разложи на функции, поставь Коментарии, по ровняй, можно разделить на файлы.
1
Любитель чаепитий
3547 / 1657 / 509
Регистрация: 24.08.2014
Сообщений: 5,618
Записей в блоге: 1
23.07.2017, 10:48 5
для начала варнинги исправьте хотя бы.
Код
a.cpp: In function 'int main()':
a.cpp:9:15: warning: conversion to 'unsigned int' from 'time_t {aka long int}' may change the sign of the result [-Wsign-conversion]
     srand(time(0));
           ~~~~^~~
a.cpp:31:43: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
                             else if (i==2 && one==3 || i==2 && one==2) n=3;
                                      ~~~~~^~~~~~~~~
a.cpp:32:43: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
                             else if (i==2 && one==4 || i==2 && one==5 || i==2 && one==6) n=4;
                                      ~~~~~^~~~~~~~~
a.cpp:32:79: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
                             else if (i==2 && one==4 || i==2 && one==5 || i==2 && one==6) n=4;
                                                                          ~~~~~^~~~~~~~~
a.cpp:33:43: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
                             else if (i==3 && one==3 || i==3 && one==1 || i==3 && one==5) n=5;
                                      ~~~~~^~~~~~~~~
a.cpp:33:79: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
                             else if (i==3 && one==3 || i==3 && one==1 || i==3 && one==5) n=5;
                                                                          ~~~~~^~~~~~~~~
a.cpp:34:43: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
                             else if (i==3 && one==2 || i==3 && one==4) n=2;
                                      ~~~~~^~~~~~~~~
a.cpp:37:43: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
                             else if (i==4 && one==3 || i==4 && one==2) n=6;
                                      ~~~~~^~~~~~~~~
a.cpp:38:43: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
                             else if (i==4 && one==4 || i==4 && one==5 || i==4 && one==6) n=4;
                                      ~~~~~^~~~~~~~~
a.cpp:38:79: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
                             else if (i==4 && one==4 || i==4 && one==5 || i==4 && one==6) n=4;
                                                                          ~~~~~^~~~~~~~~
a.cpp:42:43: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)201 << (char)205  << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187;
                                           ^~~
a.cpp:42:56: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)201 << (char)205  << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187;
                                                        ^~~
a.cpp:42:70: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)201 << (char)205  << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187;
                                                                      ^~~
a.cpp:42:83: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)201 << (char)205  << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187;
                                                                                   ^~~
a.cpp:42:96: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)201 << (char)205  << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187;
                                                                                                ^~~
a.cpp:42:109: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)201 << (char)205  << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187;
                                                                                                             ^~~
a.cpp:42:122: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)201 << (char)205  << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187;
                                                                                                                          ^~~
a.cpp:42:135: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)201 << (char)205  << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187;
                                                                                                                                       ^~~
a.cpp:42:148: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)201 << (char)205  << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)187;
                                                                                                                                                    ^~~
a.cpp:45:43: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)186 << "       " << (char)186;
                                           ^~~
a.cpp:45:69: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)186 << "       " << (char)186;
                                                                     ^~~
a.cpp:48:43: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)186 << " o     " << (char)186;
                                           ^~~
a.cpp:48:69: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)186 << " o     " << (char)186;
                                                                     ^~~
a.cpp:51:43: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)186 << " o   o " << (char)186;
                                           ^~~
a.cpp:51:69: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)186 << " o   o " << (char)186;
                                                                     ^~~
a.cpp:54:43: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)186 << "   o   " << (char)186;
                                           ^~~
a.cpp:54:69: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)186 << "   o   " << (char)186;
                                                                     ^~~
a.cpp:57:43: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)186 << "     o " << (char)186;
                                           ^~~
a.cpp:57:69: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)186 << "     o " << (char)186;
                                                                     ^~~
a.cpp:60:43: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188;
                                           ^~~
a.cpp:60:56: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188;
                                                        ^~~
a.cpp:60:69: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188;
                                                                     ^~~
a.cpp:60:82: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188;
                                                                                  ^~~
a.cpp:60:95: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188;
                                                                                               ^~~
a.cpp:60:108: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188;
                                                                                                            ^~~
a.cpp:60:121: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188;
                                                                                                                         ^~~
a.cpp:60:134: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188;
                                                                                                                                      ^~~
a.cpp:60:147: warning: use of old-style cast [-Wold-style-cast]
                             cout << (char)200 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)205 << (char)188;
                                                                                                                                                   ^~~
a.cpp:79:34: warning: 'ol' may be used uninitialized in this function [-Wmaybe-uninitialized]
                         sum2=sum2+one+two;
                              ~~~~^~~~
a.cpp:40:25: warning: 'n' may be used uninitialized in this function [-Wmaybe-uninitialized]
                         switch (n){
                         ^~~~~~
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
23.07.2017, 20:09 6
Здесь проще переписать заново)
Вот тебе "красивый" интерфейс, остальное доделай сам:
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
#include <iostream>
 
const size_t LINES_PER_DICE = 5;
const size_t DICES_COUNT = 6;
 
const char* dicePictures[DICES_COUNT][LINES_PER_DICE] = {
    { "-------",
        "-     -",
        "-  .  -",
        "-     -",
        "-------" },
    { "-------",
        "- .   -",
        "-     -",
        "-   . -",
        "-------" },
    { "-------",
        "-  .  -",
        "-  .  -",
        "-  .  -",
        "-------" },
    { "-------",
        "- . . -",
        "-     -",
        "- . . -",
        "-------" },
    { "-------",
        "- . . -",
        "-  .  -",
        "- . . -",
        "-------" },
    { "-------",
        "- ... -",
        "-     -",
        "- ... -",
        "-------" },
};
 
void drawDices(unsigned char value1, unsigned char value2)
{
    if (value1 < 1 || value1 > 6
        || value2 < 1 || value2 > 6)
        return;
 
    // построчно рисует два кубика
    for (size_t i = 0; i < LINES_PER_DICE; i++) {
        std::cout << dicePictures[value1 - 1][i] << " " << dicePictures[value2 - 1][i] << std::endl;
    }
}
 
int main()
{
    srand(time(0));
 
    while (true) {
 
        drawDices(rand() % 6 + 1, rand() % 6 + 1);
 
        std::cin.get();
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2017, 20:09

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,...

Консольная "графика", игра "Тетрис". Фигуры перестают прорисовываться на определенном этапе
Доброго времени! Написал на днях тетрис (в консоле) с использованием, кажется это называется...

"Крестики-нолики": проверить, закончена ли игра выигрышем "крестиков"
Клеточное поле размером 5х5 является результатом игры в крестики-нолики. проверить, закончена игра...

Обработка данных структуры "Кубики"
Нужно сделать через структуры. Задано сведения о кубики: размер кубика (длина ребра), цвет...


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

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

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