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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2013, 14:57   #1
fuzzyduzzy
 
Регистрация: 12.10.2012
Сообщений: 8
По умолчанию Блэк Джек

Здравствуйте! Задание написать игру Блэк Джек). Я реализовал создание колоды тусовку и чтобы карты выпадали по порядку. Проблема в выводе карт игрока и дилера (Может нужен еще какой то блок?).
Цитата:
void TwentyOneGame::FillDeck(){

gamer.GetCardBatch().setCard_Batch( );
gamer.GetCardBatch().Shuffle();
gamer.GetCardBatch().display();

}
Мне кажется что данный блок не правильно реализован..Так как он должен относится к общей колоде.. Но у меня не получается к ней добраться(.
Подскажите плиз как решить данную проблему... Возможно кто то даст совет по оптимизации.
Код:
//CARD_H
#include <iostream>
#ifndef CARD_H
#define CARD_H

using namespace std;

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

class Card{
private:
	Suit suit;
	int face;
	int points;
public:
	Card();
	void setCard(int, Suit);
	void PrintCard();
	void setPoints(int);
};

#endif CARD_H
Код:
//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;
	}
//cout << "\n\n";
}
Код:
//CARDBATCH_H
#include <iostream>
#include "Card.h"
#ifndef CARDBATCH_H
#define CARDBATCH_H

class Card_Batch{
	Card* cards;
	int count;
//	int nTopCard;
public:
	Card_Batch();
	int GetCount() const {return count;}
//	Card Transfer();
	void setCard_Batch();
	void Shuffle(); 
	void display(); // Для проверки
	void AddCard();
	void Shell();
//	Card GetByIndex(int index);
	~Card_Batch();
};
#endif CARDBATCH_H
Код:
//CARDBATCH.cpp
#include <iostream>
#include "CardBatch.h"
#include <ctime>

using namespace std;

Card_Batch::Card_Batch(){
	const int size = 52;
	count = 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::AddCard(){
	for(int i = count; i < count + 1; i++)
		cards[i].PrintCard();
	count++;
}

void Card_Batch::Shell(){
//	nTopCard = 0;
	count = 0;
}

Card_Batch::~Card_Batch(){
	delete[] cards;
}
Код:
//PLAYER_H
#include <iostream>
#include "CardBatch.h"
#ifndef PLAYER_H
#define PLAYER_H

class Player{
	Card_Batch deck;
	int playerScore;
public:
	Player();
	Card_Batch& GetCardBatch(){return deck;}

//	void SetPlayerScore(int);
//	int GetPlayerScore() const {return playerScore;}
	void Drop();
};
#endif PLAYER_H
Код:
//Player.cpp
#include "Player.h"
Player::Player(){
	Drop();
}

void Player::Drop(){
	playerScore = 0;
	deck.Shell();
};
Код:
//TWENTYONEGAME_H
#include "CardBatch.h"
#include "Player.h"
#ifndef TWENTYONEGAME_H
#define TWENTYONEGAME_H

class TwentyOneGame{
	Player dealer;
	Player gamer;

	Card_Batch cb;
public:
	void startGames();
	void NewGames();
	void FillDeck();
	void ShowPlayer(Player&);
	void Show();
	void addPlayerCard(Player&);
//	void CalculateScore(Player& gamer);
};
#endif TWENTYONEGAME_H
Код:
//TWENTYONEGAME.cpp
#include <iostream>
#include "TwentyOneGame.h"

#include <stdlib.h>
using namespace std;

void TwentyOneGame::NewGames(){
	system("cls");
	dealer.Drop();
	gamer.Drop();

	FillDeck();
	addPlayerCard(dealer);
	cout << "\n";
	addPlayerCard(gamer);
	addPlayerCard(gamer);

	Show();
}


void TwentyOneGame::addPlayerCard(Player& game){
	gamer.GetCardBatch().AddCard();
}

//Этот блок скорее всего не правильный...
void TwentyOneGame::FillDeck(){

	gamer.GetCardBatch().setCard_Batch();
	gamer.GetCardBatch().Shuffle();
	gamer.GetCardBatch().display();

}


void TwentyOneGame::ShowPlayer(Player& gamer){

}

void TwentyOneGame::Show( ){
	cout << "Карты Дилера: \n";
	ShowPlayer(dealer);
	cout << "Ваши карты: \n";
	ShowPlayer(gamer);
}
fuzzyduzzy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста зделать прогу Блек Джек на С++ Legeoner_ua Помощь студентам 1 13.07.2009 10:43