• Администрация SafeZone приветствует вас на нашем форуме!
    Если вы больше не желаете видеть рекламу при просмотре тем и сообщений - то достаточно просто зарегистрироваться. Для зарегистрированных пользователей реклама не отображается.

Игра

Георгий

Активный пользователь
Сообщения
36
Симпатии
5
#1
Вот пишу игру с использованием стека, может ктонибуть поможет не могу никак нормально создать 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();

}
 

Techno

Ассоциация VN
Сообщения
876
Симпатии
403
#2
Стека у Вас тут точно нет:) А Вы уверены, что Вам нужен именно стек?:)
 

Георгий

Активный пользователь
Сообщения
36
Симпатии
5
#3
ну да, знаю каверзная игра с динамкой... но уж такое у меня задание.
Стек по идее я его пытаюсь создать должен содержать в себе колоду карт, стек должен работать по принципу LIFO...
 

Techno

Ассоциация VN
Сообщения
876
Симпатии
403
#4
Код:
dec_card *pHead;  //указатель на класс, точнее на первый объект стека
Указатель на вершину стека должен объявляться вне класса т.е. в main
Каждый элемент стека должен иметь два поля: поле значения и поле указателя на следующий элемент стека.
Вот пример реализации целочисленного стека:
Код:
#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;
}
 
Сверху Снизу