Игра

Тема в разделе "Оффтоп", создана пользователем Георгий, 8 авг 2011.

  1. Георгий
    Оффлайн

    Георгий Активный пользователь

    Сообщения:
    36
    Симпатии:
    10
    Вот пишу игру с использованием стека, может ктонибуть поможет не могу никак нормально создать 52 объекта стека, точнее также не могу связать их указателями, вот код:

    PHP:

    #include <iostream>
    #include <time.h>

    using namespace std;

    enum Cards { peak_duce, deuce_of_clubs, deuce_of_hearts, deuce_of_diamonds,
                 peak_three, three_of_clubs, three_of_hearts, three_of_diamonds,
                 peak_four, four_of_clubs, four_of_hearts, four_of_diamonds,
                 peak_five, five_of_clubs, five_of_hearts, five_of_diamonds,
                 peak_six, six_of_clubs, six_of_hearts, six_of_diamonds,
                 peak_seven, seven_of_clubs, seven_of_hearts, seven_of_diamonds,
                 peak_eight, eight_of_clubs, eight_of_hearts, eight_of_diamonds,
                 peak_nine, nine_of_clubs, nine_of_hearts, nine_of_diamonds,
                 peak_ten, ten_of_clubs, ten_of_hearts, ten_of_diamonds,
                 peak_jack, jack_of_clubs, jack_of_hearts, jack_of_diamonds,
                 peak_lady, lady_of_clubs, lady_of_hearts, lady_of_diamonds,
                 peak_king, king_of_clubs, king_of_hearts, king_of_diamonds,
                 peak_ace, ace_of_clubs, ace_of_hearts, ace_of_diamonds,
                };




    class dec_card {
    public:
        //конструктор
        dec_card(){
            //*pHead = NULL;
            lenght = 0;
            maxlenght = 52;
        }
        dec_card mix_cards() { //создаем 52 объекта стека, и возвращаем указатель на последний
            for (int i = 0; i < maxlenght; i++){
                dec_card *pHead = new dec_card;
            }
            return *pHead;
        }
        void take_card(int count_need_cards){ //игрок берет столько карт со стека сколько ему нужно
            card = 0;
            for (int i = 0; i < count_need_cards; i++){
                card = rand()%52;
                switch (card){
                    case 1 :  cout << "Пиковая двойка";
                    case 2 :  cout << "Червовая двойка";
                    case 3 :  cout << "Трефова двойка";
                    case 4 :  cout << "Бубновая двойка";
                    case 5 :  cout << "Пиковая тройка";
                    case 6 :  cout << "Червовая тройка";
                    case 7 :  cout << "Трефовая тройка";
                    case 8 :  cout << "Бубновая тройка";
                    case 9 :  cout << "Пиковая четверка";
                    case 10:  cout << "Червовая четверка";
                    case 11:  cout << "Трефовая четверка";
                    case 12:  cout << "Бубновая четверка";
                    case 13:  cout << "Пиковая пятерка";
                    case 14:  cout << "Червовая пятерка";
                    case 15:  cout << "Трефовая пятерка";
                    case 16:  cout << "Бубновая пятерка";
                    case 17:  cout << "Пиковая шестекрка";
                    case 18:  cout << "Червовая шестерка";
                    case 19:  cout << "Трефовая шестерка";
                    case 20:  cout << "Бубновая шестерка";
                    case 21:  cout << "Пиковая семерка";
                    case 22:  cout << "Червовая семерка";
                    case 23:  cout << "Трефовая семерка";
                    case 24:  cout << "Бубновая семерка";
                    case 25:  cout << "Пиковая восьмерка";
                    case 26:  cout << "Червовая восьмерка";
                    case 27:  cout << "Трефовая восьмерка";
                    case 28:  cout << "Бубновая восьмерка";
                    case 29:  cout << "Пиковая девятка";
                    case 30:  cout << "Червовая девятка";
                    case 31:  cout << "Трефовая девятка";
                    case 32:  cout << "Бубновая девятка";
                    case 33:  cout << "Пиковая десятка";
                    case 34:  cout << "Червовая десятка";
                    case 35:  cout << "Трефовая десятка";
                    case 36:  cout << "Бубновая десятка";
                    case 37:  cout << "Пиковый валет";
                    case 38:  cout << "Червовый валет";
                    case 39:  cout << "Трефовый валет";
                    case 40:  cout << "Бубновый валет";
                    case 41:  cout << "Пиковая дама";
                    case 42:  cout << "Червовая дама";
                    case 43:  cout << "Трефовая дама";
                    case 44:  cout << "Бубновая дама";
                    case 45:  cout << "Пиковый король";
                    case 46:  cout << "Червовый король";
                    case 47:  cout << "Трефовый король";
                    case 48:  cout << "Бубновый король";
                    case 49:  cout << "Пиковый туз";
                    case 50:  cout << "Червовый туз";
                    case 51:  cout << "Трефовый туз";
                    case 52:  cout << "Бубновый туз";

                }
            }
        }
       
        bool isful(){  //небольшая проверка на stack_overflow
            return lenght == maxlenght;
        }
       
    private:  //объявляем переменные и указатели
        dec_card *pHead;  //указатель на класс, точнее на первый объект стека
        int maxlenght;
        int lenght;
        int card;
    };

    void main(){
        srand(time(0));
        dec_card dec;
        dec.mix_cards();

    }
     
     
  2. Techno
    Оффлайн

    Techno Ассоциация VN

    Сообщения:
    881
    Симпатии:
    407
    Стека у Вас тут точно нет:) А Вы уверены, что Вам нужен именно стек?:)
     
  3. Георгий
    Оффлайн

    Георгий Активный пользователь

    Сообщения:
    36
    Симпатии:
    10
    ну да, знаю каверзная игра с динамкой... но уж такое у меня задание.
    Стек по идее я его пытаюсь создать должен содержать в себе колоду карт, стек должен работать по принципу LIFO...
     
  4. Techno
    Оффлайн

    Techno Ассоциация VN

    Сообщения:
    881
    Симпатии:
    407
    Код (Text):
    dec_card *pHead;  //указатель на класс, точнее на первый объект стека
    Указатель на вершину стека должен объявляться вне класса т.е. в main
    Каждый элемент стека должен иметь два поля: поле значения и поле указателя на следующий элемент стека.
    Вот пример реализации целочисленного стека:
    Код (Text):
    #include "stdafx.h"
    #include "iostream"
    #include "fstream"
    using namespace std;

    class elem
        {
        private:   
            int a;
            elem * next;
        public:
            void push (int a, elem ** top);
            int pop (elem ** top);
        };
    void elem::push (int a, elem ** top)
        {
            elem *St = new elem;
            St->a=a;
            St->next = *top;
            *top=St;
        };
    int elem::pop (elem ** top)
        {
            int St=(*top)->a;
            elem * del=new elem;
                del=*top;
            *top = (*top)->next;
            delete del;
            return St;
        };
    int main()
    {
            elem* top=new elem;
            top=NULL;
            int kol;
            int tek;
            setlocale( LC_ALL,"Russian" );
            cout<<"Введите количество элементов стека:";
            cin>>kol;
            for (int i=0;i<kol;i++)
            {
                cout<<"Введите "<<i+1<<" элемент стека:";
                cin>>tek;
                top->push(tek,&top);
            }
            cout<<"Вывод: "<<endl;
            while (top)
            {
                cout<<top->pop(&top)<<endl;
            }
            system("pause");
            return 0;
    }

     
     

Поделиться этой страницей