Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2015, 12:14   #1
Oxidous
Пользователь
 
Регистрация: 31.08.2007
Сообщений: 28
По умолчанию Игра в кости с применением класса - C++

Всем доброго времени суток,

Нужно написать игру в "кости". Играть должен юзер против в компьютера. Выигрывает тот, у кого больше очков.
Вот код самой программы. Да,он совсем простенький,но для моей задачи подходит.

Код:
#include <time.h>
#include <iostream>
#include <conio.h>
#include<windows.h>
using namespace std;
void show(int x)
{
    switch(x)
    {
    case 1:
cout <<"===========" <<endl;
cout <<"|         |" <<endl;
cout <<"|    0    |" <<endl;
cout <<"|         |" <<endl;
cout <<"===========" <<endl;
break;
 
case 2:
cout <<"===========" <<endl;
cout <<"|    0    |" <<endl;
cout <<"|         |" <<endl;
cout <<"|    0    |" <<endl;
cout <<"===========" <<endl;
break;
 
case 3:
cout <<"===========" <<endl;
cout <<"|  0      |" <<endl;
cout <<"|    0    |" <<endl;
cout <<"|      0  |" <<endl;
cout <<"===========" <<endl;
break;
 
case 4:
cout <<"===========" <<endl;
cout <<"|  0   0  |" <<endl;
cout <<"|         |" <<endl;
cout <<"|  0   0  |" <<endl;
cout <<"===========" <<endl;
break;
 
case 5:
cout <<"===========" <<endl;
cout <<"|  0   0  |" <<endl;
cout <<"|    0    |" <<endl;
cout <<"|  0   0  |" <<endl;
cout <<"===========" <<endl;
break;
 
case 6:
cout <<"===========" <<endl;
cout <<"|  0   0  |" <<endl;
cout <<"|  0   0  |" <<endl;
cout <<"|  0   0  |" <<endl;
cout <<"===========" <<endl;
break;
    }
}
 
void main()
{
 
    cout<< "Dobro pozalovat v igru 'Kosti'. "<<endl;
    cout<< "Pravila prostie: Viigrivaet tot, u kogo bolshe ockov. Udaci Vam!"<<endl;
    cout<<endl;
    srand(time(0));
 int i,igr1=0,igr2=0,a,b;
 do
 {
     cout <<"Nazmite [1] dlia broska, [2] - dlia prosmotra sceta, [3] - dlia vigoda iz igri. ";
        cin>>i;
     switch (i)
     {
         case 1:
 system("cls");
 a = rand() % 6+1;
  b = rand() % 6+1;
  cout<<"U Vas: "<<endl;
 show(a);
 igr1+=a;
  cout<<"U kompiutera: "<<endl;
 show(b);
 igr2+=b;
 break;
         case 2:
             if(igr1>igr2)
              cout<<"Vi viigrivaete so scetom: "<<igr1<<":"<<igr2<<endl;
              cout<<endl;
             if(igr2>igr1)
                 cout<<"Vi proigrivaete so scetom: "<<igr2<<":"<<igr1<<endl;
                 cout<<endl;
             if(igr1==igr2)
                 cout<<"Scet ravnii "<<igr1<<":"<<igr2<<endl;
                 cout<<endl;
    break;
   }
  }
  while(i!=3);
  _getch();
}
Очень хочу попросить помощи у знающих людей. Игра должна быть реализована через класс и объект класса.
Как можно переделать данную игру? Никак немогу понять, как пользоваться классами и потому не получается реальзовать игру через классы, а в самостоятельном задании написано,что игра должна быть реализована именно через класс.
Oxidous вне форума Ответить с цитированием
Старый 08.12.2015, 12:26   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

А что тут не понятного?

Код:
class Cube
{
  public:
  void show(int x)
  {
    // Всё что в отрисовке
  }
};

// Обращение
Cube *cube = new Cube;
cube->show(x);
И так далее.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 08.12.2015, 22:32   #3
Oxidous
Пользователь
 
Регистрация: 31.08.2007
Сообщений: 28
По умолчанию

Благодарю. за ответ
Вроде как реализовал,но работает не совсем корректно. После 3 попыток бросания - программа завершает работу...
Вот код:
Код:
#include <iostream>
#include <ctime>
#include <cstdlib>
 
namespace cf{
    
    class Bone{
        private:
            Bone(){}
        public:
            static void draw(size_t idx){
                switch(idx){
                    case 1:
                            std::cout <<"===========" <<std::endl;
                            std::cout <<"|         |" <<std::endl;
                            std::cout <<"|    0    |" <<std::endl;
                            std::cout <<"|         |" <<std::endl;
                            std::cout <<"===========" <<std::endl;
                            break;
                             
                    case 2:
                            std::cout <<"===========" <<std::endl;
                            std::cout <<"|    0    |" <<std::endl;
                            std::cout <<"|         |" <<std::endl;
                            std::cout <<"|    0    |" <<std::endl;
                            std::cout <<"===========" <<std::endl;
                            break;
                             
                    case 3:
                            std::cout <<"===========" <<std::endl;
                            std::cout <<"|  0      |" <<std::endl;
                            std::cout <<"|    0    |" <<std::endl;
                            std::cout <<"|      0  |" <<std::endl;
                            std::cout <<"===========" <<std::endl;
                            break;
                             
                    case 4:
                            std::cout <<"===========" <<std::endl;
                            std::cout <<"|  0   0  |" <<std::endl;
                            std::cout <<"|         |" <<std::endl;
                            std::cout <<"|  0   0  |" <<std::endl;
                            std::cout <<"===========" <<std::endl;
                            break;
                             
                    case 5:
                            std::cout <<"===========" <<std::endl;
                            std::cout <<"|  0   0  |" <<std::endl;
                            std::cout <<"|    0    |" <<std::endl;
                            std::cout <<"|  0   0  |" <<std::endl;
                            std::cout <<"===========" <<std::endl;
                            break;
                             
                    case 6:
                            std::cout <<"===========" <<std::endl;
                            std::cout <<"|  0   0  |" <<std::endl;
                            std::cout <<"|  0   0  |" <<std::endl;
                            std::cout <<"|  0   0  |" <<std::endl;
                            std::cout <<"===========" <<std::endl;
                            break;
                    default : std::cout << "UNKNOW BONE" << std::endl;
                }
            }
    };
Oxidous вне форума Ответить с цитированием
Старый 08.12.2015, 22:34   #4
Oxidous
Пользователь
 
Регистрация: 31.08.2007
Сообщений: 28
По умолчанию

А вот классы Player и Game:

Код:
class Player{
        private:
            int score;
        public:
            Player(){
                    score = 0;
            }
            void turn(){
                int scoreTurn = rand() % 6 + 1;
                score += scoreTurn;
                Bone::draw(scoreTurn);
            }
            int getScore() const{
                return score;
            }
            void resetScore(){
                score = 0;
            }
    };
    
    class Game{
        private:
            Game(){ }
            static void showMenu(){
                std::cout << "Menu :" << std::endl;
                std::cout << "   1 - TURN" << std::endl;
                std::cout << "   2 - SCORE" << std::endl;
                std::cout << "   3 - EXIT" << std::endl;   
            }
        public:
            static void run(size_t countTurns = 3){
                Player p1;
              Player p2;
                short itemMenu = 0;
                size_t currentTurn = 0;
                showMenu();
                while(currentTurn < countTurns){
                    std::cin >> itemMenu;
                    switch(itemMenu){
                        case 1 : 
                            p1.turn();
                            p2.turn();
                            ++currentTurn;
                            break;
                        case 2 : 
                            std::cout << "Player 1 :" << p1.getScore() << std::endl;
                            std::cout << "Player 2 :" << p2.getScore() << std::endl;
                            break;
                        case 3 :
                            std::cout << "Bay Bay ..." << std::endl;
                            return;
                            break;
                        default:
                            std::cout << "Unknow item menu." << std::endl;
                    }
                    std::cin.get();
                    showMenu();
                }
                std::cout << "Player 1 :" << p1.getScore() << std::endl;
                std::cout << "Player 2 :" << p2.getScore() << std::endl;
                if(p1.getScore() > p2.getScore())
                    std::cout << "Player 1 winner" << std::endl;
                else if(p1.getScore() < p2.getScore())
                    std::cout << "Player 2 winner" << std::endl;
                else
                    std::cout << "dead heat" << std::endl;
            }
    };
}
 
int main()
{
    srand(time(0));
    cf::Game::run();
    
    return 0;
}
Oxidous вне форума Ответить с цитированием
Старый 09.12.2015, 09:48   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Т.е. вы хотите сказать, что вы написали этот код и не понимаете, почему он работает только три раза?
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра кости Middler Помощь студентам 2 29.06.2015 22:26
Игра в кости Roma11 JavaScript, Ajax 0 02.06.2013 15:37
Игра кости Кристинка89 Общие вопросы C/C++ 1 30.10.2012 01:34
Игра в 12 (бросание кости) на VBA Excel Graham91 Помощь студентам 0 17.04.2012 14:08
Игра кости Азар Xameleon666 Помощь студентам 3 19.03.2012 22:39