主题:一个书上的程序,求大师解!!!
书上的一道题,要求:设计一个类DECK表示52张扑克牌,公有接口:洗牌,发牌,显示各方玩牌者所拿的牌,以及比较大小。
我的想法是,用一个二维数组card[4][13]表示牌,洗牌的时候将它打乱赋值给另一个数组fapai[4][13],发牌的时候将fapai[4][13]赋值给四个玩家的一维数组就行了,因为有比较大小的,所以一切数组都用的指针类型,在card[][]中出定义各牌的大小,比较时直接传地址就可以了。
洗牌那个实在是不会了,本想用随机函数的,可是有两个问题:1,可能会出现同一张牌发两次的情况,因为随机函数每次在所有的数中随机;2,想到一个可以解决的方法,就是每次赋值完后删除该牌,但srand(x)中的x是最大上限,如果第一次就取的最大,并且删掉了,第二次就只能去x-1了啊!
求高手帮忙特!以下是我编的部分代码,可能出了很多错误,多谢指正,关键是帮我想到解决方法啊!
#include<iostream>
#include<cstdlib>
using namespace std;
class deck{
public:
xipai(){
cout<<"开始发牌:"<<endl;
for(i=0;i<4;i++){
srand(12);
for(j=0;j<13;j++){
x=rand();
fapai[i][j]=card[i][x];
delete card[i][x];
}
}
}
fapai(){
for(k=0,j=0;k<13,j<13;k++,j++)
a[k]=fapai[0][j];
for(k=0,j=0;k<13,j<13;k++,j++)
b[k]=fapai[1][j];
for(k=0,j=0;k<13,j<13;k++,j++)
c[k]=fapai[2][j];
for(k=0,j=0;k<13,j<13;k++,j++)
d[k]=fapai[3][j];
}
xianshi(){
cout<<"各玩家的牌为:"<<endl;
cout<<a[]<<'\n'<<b[]<<'\n'<<c[]<<'\n'<<d[]<<'\n'<<endl;
}
bijiao(){}
private:
char* card[4][13];
int i,j,k,x;
for(i=0;i<4;i++)
card[i][]={'3','4','5','6','7','8','9','10','J','Q','K','A','2'};
char* fapai[4][13];
char* a[13];
char* b[13];
char* c[13];
char* d[13];
}
我的想法是,用一个二维数组card[4][13]表示牌,洗牌的时候将它打乱赋值给另一个数组fapai[4][13],发牌的时候将fapai[4][13]赋值给四个玩家的一维数组就行了,因为有比较大小的,所以一切数组都用的指针类型,在card[][]中出定义各牌的大小,比较时直接传地址就可以了。
洗牌那个实在是不会了,本想用随机函数的,可是有两个问题:1,可能会出现同一张牌发两次的情况,因为随机函数每次在所有的数中随机;2,想到一个可以解决的方法,就是每次赋值完后删除该牌,但srand(x)中的x是最大上限,如果第一次就取的最大,并且删掉了,第二次就只能去x-1了啊!
求高手帮忙特!以下是我编的部分代码,可能出了很多错误,多谢指正,关键是帮我想到解决方法啊!
#include<iostream>
#include<cstdlib>
using namespace std;
class deck{
public:
xipai(){
cout<<"开始发牌:"<<endl;
for(i=0;i<4;i++){
srand(12);
for(j=0;j<13;j++){
x=rand();
fapai[i][j]=card[i][x];
delete card[i][x];
}
}
}
fapai(){
for(k=0,j=0;k<13,j<13;k++,j++)
a[k]=fapai[0][j];
for(k=0,j=0;k<13,j<13;k++,j++)
b[k]=fapai[1][j];
for(k=0,j=0;k<13,j<13;k++,j++)
c[k]=fapai[2][j];
for(k=0,j=0;k<13,j<13;k++,j++)
d[k]=fapai[3][j];
}
xianshi(){
cout<<"各玩家的牌为:"<<endl;
cout<<a[]<<'\n'<<b[]<<'\n'<<c[]<<'\n'<<d[]<<'\n'<<endl;
}
bijiao(){}
private:
char* card[4][13];
int i,j,k,x;
for(i=0;i<4;i++)
card[i][]={'3','4','5','6','7','8','9','10','J','Q','K','A','2'};
char* fapai[4][13];
char* a[13];
char* b[13];
char* c[13];
char* d[13];
}