如何在纸牌游戏中实现花色?
How to implement suit in a Card Game?
两个玩家正在玩纸牌游戏。每张牌由一个等级(从1到13(和一个花色(S,H,C或D(组成。对于任何两张牌,等级较高的牌被认为具有更高的价值。如果他们的等级相同,则花色更好的卡被认为具有更高的价值。套装"S"比套装"H"好,适合"C"比套装"D"好。输入永远不会包含两张等级和花色相同的牌。输出数组必须包含从较高值到较低值排序的卡索引。 我能够输出索引,但我无法将 suit 数组实现到代码中。
最终输出应为 {0,4,2,1,3,5}。
附言我不允许包含除<iostream>
以外的任何库。 谢谢。
#include <iostream>
using namespace std;
int main()
{
int n = 6;
int output[6] ;
int count = 0, max = 0, index;
int rank[] = {10,7,7,4,10,4};
char suit[] = {'S','D','C','C','H','D'};
for(int i=0 ; i< n ; i++)
{
for(int j = 0 ; j < n ; j++)
{
if (rank[j] > max)
{
max = rank[j];
index = j;
}
}
output[count]= index;
count++;
rank[index]=0;
max=0;
}
for(int i=0 ; i<n ; i++)
cout<<output[i] << " ";
}
这个问题可以通过在C++中使用类或结构并实现自定义排序器函数来解决。
请看下面的代码:
#include <iostream>
using namespace std;
typedef struct card{
int rank;
char suit;
int index;
}card;
void swap(card *xp, card *yp)
{
card temp = *xp;
*xp = *yp;
*yp = temp;
}
bool compare(card c1, card c2){
if(c1.suit=='S' && (c2.suit=='H' || c2.suit=='C' || c2.suit=='D')){
return true;
}else if(c1.suit=='H' && (c2.suit=='C' || c2.suit=='D')){
return true;
}else if(c1.suit=='C' && (c2.suit=='D')){
return true;
}else if(c1.suit == c2.suit){
if(c1.rank > c2.rank){
return true;
}
}
return false;
}
int main()
{
const int n = 6;
card arr[n];
int rank[] = {10,7,7,4,10,4};
char suit[] = {'S','D','C','C','H','D'};
for(int i=0 ; i< n ; i++)
{
arr[i].rank = rank[i];
arr[i].suit = suit[i];
arr[i].index = i;
}
for (int i = 0; i < n-1; i++)
{
bool swapped = false;
for (int j = 0; j < n-i-1; j++)
{
if (compare(arr[j+1], arr[j]))
{
swap(&arr[j], &arr[j+1]);
swapped = true;
}
}
if (swapped == false)
break;
}
for(int i=0 ; i<n ; i++){
cout<<"Index: "<<arr[i].index<<" Suit: "<<arr[i].suit<<" Rank:"<<arr[i].rank<<endl;
}
}
输出:
Index: 0 Suit: S Rank:10
Index: 4 Suit: H Rank:10
Index: 2 Suit: C Rank:7
Index: 3 Suit: C Rank:4
Index: 1 Suit: D Rank:7
Index: 5 Suit: D Rank:4
PS:索引的正确顺序应该是{0, 4, 2, 3, 1, 5}。
相关文章:
- 如何在纸牌游戏中实现花色?
- 在纸牌游戏中检测到C++的堆栈粉碎
- C ++ txt 文件成数组逐行字符串和 int 用于纸牌游戏
- 如何在使用 SDL 编写的游戏中仅实现一部分 OpenGL 代码?
- 井字游戏的这个最小最大值实现有什么问题?
- 在此过程中的纸牌游戏程序.不知道为什么我会得到一个随机数-858993460
- 在纸牌游戏中回合
- 如何用C++和QtQuick实现游戏循环
- 我需要哪种语言/课程来制作简单的纸牌游戏
- Negamax实现似乎不适用于井字游戏
- 如何创建Google+Plus一键,同时已经使用GooglePlay游戏服务SDK for C++实现了排行榜
- C++在游戏中实现攻击类
- 实现井字游戏的极大极小算法
- C++中实现替换游戏场景
- 具有大量纸牌和复杂动作的纸牌游戏
- TCP vs Enet 与大厅的在线纸牌游戏
- 实现跳棋游戏树
- c++纸牌游戏,当新一轮牌组创建/新一轮开始时,手牌被发不止一次
- 我偷了纸牌游戏 c++ 标头代码,它无法编译...呜
- 为纸牌游戏正确地播种RNG