Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - BlackJack

Ответить
Настройки темы
C/C++ - BlackJack

Новый участник


Сообщения: 17
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Здравствуйте! Пытаюсь реализовать игру Блэк Джэк. Создаю колоду, тусую. Вопрос вот в чем как организовать выдачу карт с извлечением их из колоды(тобишь чтобы они были на руках но в калоде не числились)))...

Код: Выделить весь код
//Card.h

#include <iostream>
#include <string.h>

using namespace std;

enum Suit {clubs, diamonds, hearts, spades};

class Card{
private:
	Suit suit;
	int face;
public:
	Card();
	void setCard(int, Suit);
	void PrintCard();
	void setScore();
};
Код: Выделить весь код
//Card.cpp
#include <iostream>
#include "Card.h"

using namespace std;

Card::Card(){
	this->face = 0;
	this->suit = (Suit)0;

}

void Card::setCard(int f, Suit s){
	this->face = f;
	this->suit = s;
}

void Card::PrintCard(){
	if (face >= 2 && face <= 10)
		cout << face;
	else{
		switch (face){
			case 11: cout << 'J'; break;
			case 12: cout << 'Q'; break;
			case 13: cout << 'K'; break;
			case 14: cout << 'A'; break;
		}
	}
	switch (suit)
	{
	   case clubs: cout << static_cast<char>(5); break;
	   case diamonds: cout << static_cast<char>(4); break;
	   case hearts: cout << static_cast<char>(3); break;
	   case spades: cout << static_cast<char>(6); break;
	}
}
Код: Выделить весь код
//CardBatch.h

#include <iostream>
#include "Card.h"

class Card_Batch{
	Card* cards;
public:
	Card_Batch();
	void setCard_Batch();
	void Shuffle();
	void display();

	void getcard(); // Тест... для извлечения карты в этом классе временно
};
Код: Выделить весь код
//CardBatch.cpp

#include <iostream>
#include "CardBatch.h"
#include <ctime>

using namespace std;

Card_Batch::Card_Batch(){
	const int size = 52;
//	this->score = 0;
	cards = new Card[size];
}

//Создание колоды карт
void Card_Batch::setCard_Batch(){
	for(int i = 0; i < 52; i++){
		int f = (i%13) + 2;
		Suit s = Suit(i/13);
		cards[i].setCard(f, s);
	}
}

//Тусуется колода карт
void Card_Batch::Shuffle(){
	srand (unsigned(time(NULL)));
	for(int i = 0; i < 52; i++){
		int k = rand()%52;		//выбираем случайную карту
		Card temp = cards[i];	//и меняем ее с текущей
		cards[i] = cards[k];
		cards[k] = temp;
	}

}

void Card_Batch::display(){
	for (int i = 0; i < 52; i++ ){
		cards[i].PrintCard();
		if(!((i+1)%13))			// начинаем новую строку после каждой 13-й карты
		  cout << endl;
    }
	cout << "\n\n\n";
}


void Card_Batch::getcard(){
	for(int i = 0; i < 2; i++)
		cards[i].PrintCard();
}
Код: Выделить весь код
//main

//Тестовый режим

#include <iostream>
#include "CardBatch.h"

using namespace std;

int main(){
	setlocale(LC_ALL,"russian");
	Card_Batch A;
	A.setCard_Batch();
	A.display();

	A.Shuffle();
	A.display();

	A.getcard();
	cout << endl;
	A.getcard();
П.С. Если я неправильно организовываю классы буду внимателен к вашим замечаниям.. Заранее спс.

Отправлено: 00:27, 10-01-2013

 

Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Отправить PM | Цитировать


У меня еще один вопрос.. Определение переменной отвечайщей за местоположение карты лучше определить в классе карта или уже в калоде? bool place (false - калода true - на руках)
Если в классе карта то как сделать чтобы в этом блоке, карта получала значение place = true (с учетом что она прописана как private) или лучше сделать public?


Цитата torauma:
void Card_Batch::getcard(){
for(int i = nTopCard; i < nTopCard + 2; i++)

cards[i].PrintCard();
nTopCard += 2;
} »

Отправлено: 15:32, 10-01-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
void setPlace(bool isn){ place = isn;}
bool getPlace(){return place;}
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:15, 10-01-2013 | #12



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - BlackJack

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено




 
Переход