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

Надо написать программу (игру) "Кости". Где ошибка? - C++

Восстановить пароль Регистрация
 
Facktor88
0 / 0 / 0
Регистрация: 15.01.2014
Сообщений: 7
15.01.2014, 21:16     Надо написать программу (игру) "Кости". Где ошибка? #1
Доброго времени. суток. Прошу помочь с решение "проблемы" по написанию программы (игры) в "Кости" на С++

Вот мой код:

C++
1
2
3
4
5
6
7
8
include <ctime>
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() { bool run = true; int us = 0, gus = 0, cs = 0, gcs = 0, d1, d2; srand(time(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(); }
Р.S. static const char *ds[] { - данную строку подчеркивает компилятор (Visual Studio 2012) - выдает ошибку - Error: Недопустимый не полный тип.

Подскажите пожалуйста , как исправить? И в чем здесь ошибка ? Сломал себе мозг

Заранее благодарю
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
15.01.2014, 21:18     Надо написать программу (игру) "Кости". Где ошибка? #2
Facktor88, Код очень красивый и отформатированный
Facktor88
0 / 0 / 0
Регистрация: 15.01.2014
Сообщений: 7
15.01.2014, 21:20  [ТС]     Надо написать программу (игру) "Кости". Где ошибка? #3
Извините за некорректность написания кода , я изучаю С++ не давно и не умею его форматировать. Пожалуйста объясните мою ошибку просидел над кодом уже несколько часов ....
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
15.01.2014, 21:33     Надо написать программу (игру) "Кости". Где ошибка? #4
Facktor88, Я не знаю что здесь нужно было сделать, ну вот, теперь хоть запускается
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
#include "stdafx.h"
#include <ctime>
#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() 
{ 
    setlocale(LC_ALL,"Russian");
    bool run = true;
    int us = 0, gus = 0, cs = 0, gcs = 0, d1, d2; 
    srand(time(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(); 
}
Dzzirt
0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 6
16.01.2014, 16:01     Надо написать программу (игру) "Кости". Где ошибка? #5
Программа симуляции игры Крэпс без ставок будет выглядеть как то так

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
// Craps simulation
#include <iostream>
#include <cstdlib>
#include <ctime>
 
 
using namespace std;
 
int rollDice(); // rolls dice, calculates and displays sum
 
int main()
{
    // enumeration with constants that represent the game status
    enum Status { CONTINUE, WON, LOST }; // all caps in constants
 
    int myPoint; // point if no win or loss on first roll
    Status gameStatus; // can contain CONTINUE, WON or LOST
 
    int sumOfDice;
    // randomize random number generator using current time
    srand( time( 0 ) );
 
        sumOfDice = rollDice(); //  roll of the dice
 
        switch ( sumOfDice )
        {
            case 7: // win with 7 on first roll
            case 11: // win with 11 on first roll
                gameStatus = WON;
                break;
            case 2: // lose with 2 on first roll
            case 3: // lose with 3 on first roll
            case 12: // lose with 12 on first roll
                gameStatus = LOST;
                break;
            default: // did not win or lose, so remember point
                gameStatus = CONTINUE; // game is not over
                myPoint = sumOfDice; // remember the point
                cout << "Point is " << myPoint << endl;
                break; // optional at end of switch
        } //end of switch
 
        // while game is not complete
        while( gameStatus == CONTINUE )// not WON or LOST
        {
            sumOfDice = rollDice(); // roll dice again
 
            // determine game status
            if ( sumOfDice == myPoint ) // win by making point
                gameStatus = WON;
            else
                if ( sumOfDice == 7 ) // lose by rolling 7 before point
                    gameStatus = LOST;
        } //end while
        if ( gameStatus == WON ) {
            cout << "Player wins\n" << endl;
 
        } // end if
 
        else {
            cout << "Player loses\n" << endl;
 
 
        } // end else
 
 
    return 0;
} // end of main
 
// roll dice, calculate sum and display results
int rollDice()
{
    // pick random die values
    int die1 = 1 + rand() % 6; // first die roll
    int die2 = 1 + rand() % 6; // second die roll
 
    int sum = die1 + die2; // compute sum of die values
 
    // display results of this roll
    cout << "Player rolled " << die1 << " + " << die2
    << " = " << sum << endl;
    return sum; // end function rollDice
} // end function rolldice
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
16.01.2014, 18:02     Надо написать программу (игру) "Кости". Где ошибка? #6
Игра "Кости". Упростить код
код один в один
Yandex
Объявления
16.01.2014, 18:02     Надо написать программу (игру) "Кости". Где ошибка?
Ответ Создать тему
Опции темы

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