C++ C++;-黑桃类:如何使用它们
我正在努力学习如何利用课堂进行学校的黑桃游戏项目。在运行这段代码时,我似乎遇到了各种各样的错误(如下)。我正在尝试创建一张牌,创建一副牌,洗牌,然后将牌发给玩家和计算机。我不太确定我是否正确使用了类,也不确定如何在main()部分实现它们。任何例子都会非常有帮助和感激C++ C++;-黑桃类:如何使用它们,c++,class,struct,C++,Class,Struct,我正在努力学习如何利用课堂进行学校的黑桃游戏项目。在运行这段代码时,我似乎遇到了各种各样的错误(如下)。我正在尝试创建一张牌,创建一副牌,洗牌,然后将牌发给玩家和计算机。我不太确定我是否正确使用了类,也不确定如何在main()部分实现它们。任何例子都会非常有帮助和感激 #include <iostream> #include <string> #include <vector> #include <stdlib.h> #include <ct
#include <iostream>
#include <string>
#include <vector>
#include <stdlib.h>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#include <Windows.h>
// Game Specific Files
#include "CardGameConfig.h"
#include "CardGameFunctions.h"
#include "CardGameStructs.h"
using namespace std;
// Card Class
class Card
{
private:
int _suit;
int _rank;
public:
Card();
Card(int &iSuit, int &iRank);
~Card(); // Deconstructor
int GetSuit(); //Method
int GetRank(); //Method
};
// sets a blank card
Card::Card(){
_suit = 0;
_rank = 0;
}
// creates a card with a given suit
Card::Card(int &iSuit, int &iRank){
_suit = iSuit;
_rank = iRank;
} // end of Card function (class member)
int Card::GetSuit(){
return _suit;
}
int Card::GetRank(){
return _rank;
}
Card::~Card(){
}
// Deck Class
class Deck
{
private:
Card cards[TOTAL_CARDS_IN_DECK];
Card *_pCardList[52];
public:
Deck();
~Deck();
void Shuffle();
Card DrawCard();
Card *_pCardList; // holds an array of cards (52 of them)
int _index;
};
Deck::Deck(){
// Start deck index at zero
_index = 0;
_pCardList = new Card[TOTAL_CARDS_IN_DECK];
// TOTAL_CARDS_IN_SUIT = 13
for(int iRank = 0; iRank < TOTAL_CARDS_IN_SUIT; iRank++)
{
int iRankOffset = 2;
iRank = iRank + iRankOffset;
//TOTAL_SUITS = 4
for(int iSuit = 0; iSuit < TOTAL_SUITS; iSuit++){
iSuit = ESuits(iSuit);
_pCardList[_index] = Card(iRank, iSuit);
_index++;
} // end of iSuit for loop
} // end of iRank for loop */
}
void Deck::Shuffle(){
srand((int) time( NULL ) );
for(int iCardNum = 0; iCardNum < TOTAL_CARDS_IN_DECK; iCardNum++)
{
int iRandomNumber = ( rand() % TOTAL_CARDS_IN_DECK-1);
Card card = _pCardList[iCardNum];
_pCardList[iCardNum] = _pCardList[iRandomNumber];
_pCardList[iRandomNumber] = card;
}
}
Card Deck::DrawCard(){
_index++;
return _pCardList[_index-1];
}
Deck::~Deck()
{
delete [] cards;
}
int main(int argc, char* argv[]){
Card CardGame;
Deck Deck;
// cout << Deck._pCardList[1].GetRank() << " " << Deck._pCardList[1].GetSuit() << endl;
return 0;
std::cin.get();
std::cin.get();
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
//游戏特定文件
#包括“CardGameConfig.h”
#包括“CardGameFunctions.h”
#包括“CardGameStructs.h”
使用名称空间std;
//卡片类
班级卡
{
私人:
国际套装;
国际排名;
公众:
卡片();
卡(int&iSuit、int&iRank);
~Card();//解构器
int GetSuit();//方法
int GetRank();//方法
};
//设置空白卡片
卡片::卡片(){
_西服=0;
_秩=0;
}
//创建一张带有给定套装的卡片
卡片::卡片(int&iSuit、int&iRank){
_suit=iSuit;
_等级=伊朗;
}//卡片结束函数(类成员)
int Card::GetSuit(){
退货诉讼;
}
int Card::GetRank(){
返回_秩;
}
卡片::~Card(){
}
//甲板级
甲板
{
私人:
卡片[卡片组中的卡片总数];
卡片*_pCardList[52];
公众:
甲板();
~Deck();
无效洗牌();
卡片抽卡();
卡片*\u pCardList;//保存一组卡片(其中52张)
int_指数;
};
甲板{
//起始甲板指数为零
_指数=0;
_pCardList=新卡[卡组中的卡总数];
//套装中的卡片总数=13
对于(int-iRank=0;iRank //您不能两次声明\u pCardList
:
class Deck {
private:
Card cards[TOTAL_CARDS_IN_DECK];
// Card *_pCardList[52]; // FIRST TIME (useless)
Card *_pCardList; // SECOND TIME (this should be private)
int _index; // This should also be private
public:
Deck();
~Deck();
void Shuffle();
Card DrawCard();
};
小奖励:对于drawfunction,您可以执行以下操作:
Card Deck::DrawCard(){
return _pCardList[_index++];
}
这是因为\u index++
在增加它之前返回\u index
的值。卡片组中的卡片总数
,套装中的卡片总数
和其他定义的全局值在哪里?如果我只是取出PCCardList并使用“卡片”,因为两者都包含52个元素的数组,所以我可以这样做:code
Card-Deck::DrawCard(){return cards[_index++];}