早教吧作业答案频道 -->其他-->
使用C++循环链表写纸牌游戏纸牌游戏任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌
题目详情
使用C++循环链表写纸牌游戏
纸牌游戏
任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些?
纸牌游戏
任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些?
▼优质解答
答案和解析
可以了
#pragma warning(disable:4786)
#include
#include
#include
#include
using namespace std;
#define Random4 (rand() % 4)
#define RandomN (rand() % 13)
const string varity[4] = ;
const string Num[13] = {"A", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "J", "Q", "K"};
class Games
{
private:
int Players;
vector Poke;
vector > each_num;
int *Sum;
string *Name;
int i;
public:
Games()
{
srand((unsigned)time(NULL));
cout << "多少人参加游戏?(1~7):";
cin >> Players;
Poke.resize(Players+1);
Sum = new int[Players+1];
Name = new string[Players+1];
Name[0] = "庄家";
for(i = 0; i <= Players; i++)
{
Sum[i] = 0;
}
for(i = 1; i <= Players; i++)
{
cout << "输入第" << i <<"位玩家的姓名: ";
cin >> Name[i];
}
}
~Games()
{
delete []Sum;
delete []Name;
}
void InitFirst()
{
int fir, sec;
vector row_num;
for(i = 0; i <= Players; i++)
{
row_num.erase(row_num.begin(), row_num.end());
fir = RandomN+1;
sec = RandomN+1;
row_num.push_back(fir);
row_num.push_back(sec);
each_num.push_back(row_num);
string Col = varity[Random4];
Poke[i].append(Col);
cout << Name[i] << ": ";
i == 0 ? (cout << "<隐藏>") : (cout << Col << Num[fir-1]);
Poke[i].append(Num[fir-1]);
Col = varity[Random4];
Poke[i].append(Col);
Poke[i].append(Num[sec-1]);
cout << "," << Col << Num[sec-1];
if(fir > 10 || sec > 10)
{
if(fir > 10)
fir = 10;
else
sec = 10;
}
Sum[i] += fir+sec;
if(i != 0)
cout << " 总分值: " << Sum[i];
cout << endl;
}
}
void AddPoint()
{
for(i = 1; i <= Players; i++)
{
char sel;
cin.sync();
cin.clear();
while(1)
{
for(vector::iterator it = each_num[i].begin(); it != each_num[i].end(); it++)
{
if(*it == 1)
{
cout << Name[i] << ",你牌中的A是否要作为11(y,n)?";
cin >> sel;
if(sel == 'y' || sel == 'Y')
{
Sum[i] += 10;
cout << Name[i] << ": " << Poke[i] << "总分值: " << Sum[i] << endl;
}
}
}
cout << Name[i] << ",你想再要一张牌吗(y,n)?";
cin >> sel;
if(sel == 'n' || sel == 'N')
break;
else
{
int add = RandomN+1;
string Col = varity[Random4];
Poke[i].append(Col);
Poke[i].append(Num[add-1]);
if(add > 10)
add = 10;
each_num[i].push_back(add);
Sum[i] += add;
}
cout << Name[i] << ": " << Poke[i] << "总分值: " << Sum[i] << endl;
if(Sum[i] > 21)
{
cout << Name[i] << "引爆!" << endl;
break;
}
}
}
}
void Resault()
{
for(vector::iterator it = each_num[0].begin(); it != each_num[0].end(); it++)
{
if(*it == 1)
{
if(Sum[0]+10 < 21)
{
Sum[0] += 10;
}
}
}
while(Sum[0] <= 16)
{
int add = RandomN+1;
string Col = varity[Random4];
Poke[0].append(Col);
Poke[0].append(Num[add-1]);
if(add > 10)
add = 10;
Sum[0] += add;
}
cout << Name[0] << ": " << Poke[0] << "总分值: " << Sum[0] << endl;
if(Sum[0] > 21)
{
cout << "庄家引爆!" << endl;
for(i = 1; i <= Players; i++)
{
if(Sum[i] > 21)
cout << Name[i] << ": 唉,你打平局!" << endl;
else
cout << Name[i] << ": 你赢了!" << endl;
}
}
else
{
for(i = 1; i <= Players; i++)
{
if(Sum[i] > 21 || Sum[i] < Sum[0])
cout << Name[i] << ": 对不起,你输了!" << endl;
else if(Sum[i] > Sum[0])
cout << Name[i] << ": 你赢了!" << endl;
else
cout << Name[i] << ": 唉,你打平局!" << endl;
}
}
}
};
int main()
{
Games one;
one.InitFirst();
one.AddPoint();
one.Resault();
return 0;
}
#pragma warning(disable:4786)
#include
#include
#include
#include
using namespace std;
#define Random4 (rand() % 4)
#define RandomN (rand() % 13)
const string varity[4] = ;
const string Num[13] = {"A", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "J", "Q", "K"};
class Games
{
private:
int Players;
vector
vector
int *Sum;
string *Name;
int i;
public:
Games()
{
srand((unsigned)time(NULL));
cout << "多少人参加游戏?(1~7):";
cin >> Players;
Poke.resize(Players+1);
Sum = new int[Players+1];
Name = new string[Players+1];
Name[0] = "庄家";
for(i = 0; i <= Players; i++)
{
Sum[i] = 0;
}
for(i = 1; i <= Players; i++)
{
cout << "输入第" << i <<"位玩家的姓名: ";
cin >> Name[i];
}
}
~Games()
{
delete []Sum;
delete []Name;
}
void InitFirst()
{
int fir, sec;
vector
for(i = 0; i <= Players; i++)
{
row_num.erase(row_num.begin(), row_num.end());
fir = RandomN+1;
sec = RandomN+1;
row_num.push_back(fir);
row_num.push_back(sec);
each_num.push_back(row_num);
string Col = varity[Random4];
Poke[i].append(Col);
cout << Name[i] << ": ";
i == 0 ? (cout << "<隐藏>") : (cout << Col << Num[fir-1]);
Poke[i].append(Num[fir-1]);
Col = varity[Random4];
Poke[i].append(Col);
Poke[i].append(Num[sec-1]);
cout << "," << Col << Num[sec-1];
if(fir > 10 || sec > 10)
{
if(fir > 10)
fir = 10;
else
sec = 10;
}
Sum[i] += fir+sec;
if(i != 0)
cout << " 总分值: " << Sum[i];
cout << endl;
}
}
void AddPoint()
{
for(i = 1; i <= Players; i++)
{
char sel;
cin.sync();
cin.clear();
while(1)
{
for(vector
{
if(*it == 1)
{
cout << Name[i] << ",你牌中的A是否要作为11(y,n)?";
cin >> sel;
if(sel == 'y' || sel == 'Y')
{
Sum[i] += 10;
cout << Name[i] << ": " << Poke[i] << "总分值: " << Sum[i] << endl;
}
}
}
cout << Name[i] << ",你想再要一张牌吗(y,n)?";
cin >> sel;
if(sel == 'n' || sel == 'N')
break;
else
{
int add = RandomN+1;
string Col = varity[Random4];
Poke[i].append(Col);
Poke[i].append(Num[add-1]);
if(add > 10)
add = 10;
each_num[i].push_back(add);
Sum[i] += add;
}
cout << Name[i] << ": " << Poke[i] << "总分值: " << Sum[i] << endl;
if(Sum[i] > 21)
{
cout << Name[i] << "引爆!" << endl;
break;
}
}
}
}
void Resault()
{
for(vector
{
if(*it == 1)
{
if(Sum[0]+10 < 21)
{
Sum[0] += 10;
}
}
}
while(Sum[0] <= 16)
{
int add = RandomN+1;
string Col = varity[Random4];
Poke[0].append(Col);
Poke[0].append(Num[add-1]);
if(add > 10)
add = 10;
Sum[0] += add;
}
cout << Name[0] << ": " << Poke[0] << "总分值: " << Sum[0] << endl;
if(Sum[0] > 21)
{
cout << "庄家引爆!" << endl;
for(i = 1; i <= Players; i++)
{
if(Sum[i] > 21)
cout << Name[i] << ": 唉,你打平局!" << endl;
else
cout << Name[i] << ": 你赢了!" << endl;
}
}
else
{
for(i = 1; i <= Players; i++)
{
if(Sum[i] > 21 || Sum[i] < Sum[0])
cout << Name[i] << ": 对不起,你输了!" << endl;
else if(Sum[i] > Sum[0])
cout << Name[i] << ": 你赢了!" << endl;
else
cout << Name[i] << ": 唉,你打平局!" << endl;
}
}
}
};
int main()
{
Games one;
one.InitFirst();
one.AddPoint();
one.Resault();
return 0;
}
看了使用C++循环链表写纸牌游戏纸...的网友还看了以下:
一道关于扑克概率的数学题一套标准牌(只有52张)...你手里先拿到5张(里面有一张K)..再抽出两 2020-06-22 …
一副扑克牌有4种花色的牌,共52张,每种花色都有写上数字为1,2,3,…,13的牌,如果在5张牌中 2020-06-25 …
小高和小莫-起玩游戏牌,刚开始时小高手里的牌数是小莫手里牌数的3/5,玩了几回后,小高赢了小莫20 2020-07-04 …
麻将解释1牌过半旬,上家开始落风子,不要碰(碰听张除外);2牌开始时先丢荡张,再丢风子,但是手中风 2020-07-11 …
扑克牌A到K,共13张牌,拿出第一章是a,摸到第二章牌叉到剩下牌的底部,拿出第三章牌是2,依次类推 2020-07-14 …
某人手中有5张扑克牌,其中2张为不同花色的2另外3张为不同花色的4,他有5次出牌机会每次只能出一种点 2020-11-01 …
1.北京2008年奥运会奖牌,冠军奖牌是银质镀金,亚军奖牌是银质,季军奖牌为铜质.三种奖牌各部分的体 2020-12-08 …
某人手中有5张扑克牌,其中2张为不同花色的2,3张为不同花色的A,有5次出牌机会,每次只能出一种点数 2020-12-21 …
6张正面朝下的扑克牌,其中有且只有2张老K,任取2张翻开,2张牌中至少有一张是老K的概率是3535, 2020-12-21 …
某人手中有5张扑克牌,其中2张为不同花色的2,3张为不同花色的A,每次至少出一张牌,且每次只能出一种 2020-12-21 …