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

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

Войти
Регистрация
Восстановить пароль
 
Nikolay_1
0 / 0 / 0
Регистрация: 15.01.2014
Сообщений: 24
#1

Игра "Кости". Упростить код - C++

15.01.2014, 23:25. Просмотров 926. Ответов 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
[#include <ctime>
#include <locale>
#include <cstdlib>
#include <iostream>
using namespace std;
 
void roll(int &s) {
    static const char *ds[] = {
        " -----\n|     |\n|  .  |\n|     |\n -----\n",
        " -----\n|.    |\n|     |\n|    .|\n -----\n",
        " -----\n|.    |\n|  .  |\n|    .|\n -----\n",
        " -----\n|.   .|\n|     |\n|.   .|\n -----\n",
        " -----\n|.   .|\n|  .  |\n|.   .|\n -----\n",
        " -----\n|.   .|\n|.   .|\n|.   .|\n -----\n"
    };
    int d1 = rand() % 6 + 1, d2 = rand() % 6 + 1;
    cout << ds[d1 - 1] << ds[d2 - 1] << "выброшено: " << d1 + d2 << "; всего: " << (s += d1 + d2);
}
 
int main() {
    srand(static_cast<unsigned>(time(0)));
    locale::global(locale(""));
    bool run = true;
    int us = 0, gus = 0, cs = 0, gcs = 0;
    while (run) {
        cout << "\nваш бросок (нажмите Enter)";
        char c = cin.get();
        roll(us);
        cout << "\nбросок компа:\n";
        roll(cs);
        if (cs >= 36 || us >= 36) {
            if (cs == us) continue;
            cout << (cs > us ? "\nкомп выиграл этот раунд" : "\nвы выиграли этот раунд")
                << "; общий счет: вы - " << (gus += us > cs) << "; комп - " << (gcs += cs > us)
                << "\nпродолжить игру (введите 1 для продолжения или 0 для окончания) ";
            if (cin.get() != '1') run = false;
            cin.sync();
            cs = us = 0;
        }
    }
    cout << (gus == gcs ? "ничья\n" : gus > gcs ? "вы выиграли\n" : "вы проиграли\n")
        << "нажмите Enter для выхода";
    cin.get();
}
А нужно что-то типо этого :

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
#include <conio.h>
using namespace std;
 
void main() {
    SetConsoleOutputCP(1251);
    srand(GetTickCount());
 
    int playerCounter = 0;
    int computerCounter = 0;
 
    int playerThrow = 0;
    int computerThrow = 0;
 
    int choice = 0;
 
    while (1) {
        cout<<"\tИгра \"Кости\""<<endl;
        cout<<"Нажмите Esc, чтобы выйти или любую другую клавишу, чтобы сделать бросок"<<endl;
        cout<<"Ваш счёт: "<<playerCounter<<"\tСчёт соперника: "<<computerCounter<<endl;
        choice = getch();
        if (choice == 27) {
            break;
        } else {
            playerThrow = rand() % 6 + 1;
            computerThrow = rand() % 6 +1;
            cout<<"Ваш бросок: "<<playerThrow<<"\tБросок соперника: "<<computerThrow<<endl;
            if (playerThrow >computerThrow) {
                cout<<"Вы выиграли"<<endl;
                playerCounter++;
            } else if (computerThrow > playerThrow) {
                cout<<"Соперник выиграл"<<endl;
                computerCounter++;
            } else cout<<"Ничья"<<endl;
        }
        system("pause");
        system("cls");
    }
}
P.S. Нужно оставить принцип тот-же , но как-нибудь по другому (с помощью циклов)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2014, 23:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Игра "Кости". Упростить код (C++):

Игра "кости" - C++
написал простенькую игру #include&lt;iostream&gt; #include&lt;ctime&gt; using namespace std; int main() { setlocale(0,&quot;&quot;); ...

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

Игра в кости. Исправьте код - C++
Вот мой код : // Игра в кубики #include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int main() { ...

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

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

Смоделировать выбор "наугад" одной кости домино из полного набора костей этой игры - C++
Помогите пожалуйста:cry: Смоделировать выбор &quot;наугад&quot; одной кости домино из полного набора костей этой игры (0–0, 0–1, ..., 6–6). Вывести...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MrGluck
Модератор
Эксперт CЭксперт С++
7210 / 4376 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
16.01.2014, 02:05 #2
Цитата Сообщение от Nikolay_1 Посмотреть сообщение
Нужно оставить принцип тот-же , но как-нибудь по другому (с помощью циклов)
тут итак с помощью циклов. Что вас конкретно не устраивает в этом коде?
Nikolay_1
0 / 0 / 0
Регистрация: 15.01.2014
Сообщений: 24
16.01.2014, 02:53  [ТС] #3
Мне дали задание изменить данный код так , чтобы он не был похож на предыдущий , (т.е. два варианта решения с помощью циклов) я нашел только одно ... Имеется ввиду , возможно ли вообще его как-нибудь переписать , чтобы смысл (код программы) остался тот же но немного по-другому чтобы они не были одинаковы.
MrGluck
Модератор
Эксперт CЭксперт С++
7210 / 4376 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
16.01.2014, 06:08 #4
Цитата Сообщение от Nikolay_1 Посмотреть сообщение
данный код так , чтобы он не был похож на предыдущий
второй - данный, первый - предыдущий?
Цитата Сообщение от Nikolay_1 Посмотреть сообщение
чтобы смысл (код программы) остался тот же но немного по-другому чтобы они не были одинаковы.
ничего не понятно. Код тот же, но программы разные? Нет - это нереально. Код разный, но программы при выполнении ведут себя одинаково - перепишите все под С++11 с <random> и через std::bind. Вас тяжело понять.
Nikolay_1
0 / 0 / 0
Регистрация: 15.01.2014
Сообщений: 24
16.01.2014, 06:22  [ТС] #5
Цитата Сообщение от MrGluck Посмотреть сообщение
второй - данный, первый - предыдущий?

ничего не понятно. Код тот же, но программы разные? Нет - это нереально. Код разный, но программы при выполнении ведут себя одинаково - перепишите все под С++11 с <random> и через std::bind. Вас тяжело понять.
да первый это "сложный" для меня код. Я еще этого не изучал а вот второй это как раз то что нужно..

Дело в том что мне дали домашнее задание , сделать игру "Кости" несколькими вариантами (используя операторы и циклы) , я смог написать только через while , if / else , еще можно как-то через switch и нужно что-бы игра вела счёт до бесконечного числа. Как это написать через swich , первый пост код в этой теме возможно переделать на подобии второго? Этот вопрос меня и беспокоит как это сделать используя другие операторы и\или возможно использовать цикл for , я заранее прошу прошения если где-то не корректно выражаюсь , изучаю С++ всего лишь месяц , очень интересно , но в книгах ничего не понятно ... Вот разобрался только в этом и то с горем пополам. Если можно покажите пример кода написанный через оператор switch.
Очень надо.Заранее благодарю.

Добавлено через 4 минуты
Цитата Сообщение от MrGluck Посмотреть сообщение
второй - данный, первый - предыдущий?

ничего не понятно. Код тот же, но программы разные? Нет - это нереально. Код разный, но программы при выполнении ведут себя одинаково - перепишите все под С++11 с <random> и через std::bind. Вас тяжело понять.
Нет , Программы одни и те же , коды написаны разными людьми первый человеком мне не знакомым (помог) написал по-своему (с какими-то мне пока еще не известным способом + он использовал "псевдографику" (сам так сказал) , а второй написал я , но мне преподаватель дал задание написать игру двумя способами через if/else и через switch , что касается последнего я затрудняюсь , так как элементарно нет опыта. Вот в принципе и всё что мне нужно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2014, 06:22
Привет! Вот еще темы с ответами:

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

Программа, имитирующая игру в "Кости" - C++
Написать программу, которая имитирует игру в кости. Игроки (2 человека) кидают по 2 кубика (генерировать значения генератором случайных...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

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


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

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

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