游戏或相关的项目,在设计开发中可能会需要给扑克进行排序,有时要按牌面值优先的方式排,有时则按花色优先的方式。
而最关键的是,排序的依据经常会变动,特别是按牌面优先的时候:
比如斗地主游戏经常需要按2-1-3-4-5-6-7-8-9-10-J-Q-K的方式来排;
而升级类游戏经常需要按流动主-固定主-1-3-4-5-6-7……的方式来排;
网络上扑克排序的代码很多,但符合这样排序要求的则不多。
算法并不难,但如果手头没有临时写一个也是要花点力气的,因为工作需要写了类似的算法,考虑到扩展性和多副牌等等的可能,编成了一个类来使用。
算法基本还是按照冒泡排序的思路编写的,稍微做了点改编,使用一个结构进行排序。
在使用时,需要注意每次都要先调用SetRank函数设置排序依据。
#ifndef mycardsort_2015_02_13_cyfage_h_
#define mycardsort_2015_02_13_cyfage_h_
#pragma once
#include <Windows.h>
#define max_card 54 //缺省可排序一副牌,调整后可排序多副牌
struct sortdata
{
byte serial; //牌面临时rank
byte rank; //牌面的原本rank
byte suit; //牌面的花色
};
class myCardSort
{
public:
myCardSort();
~myCardSort();
/*****************************
牌面数值代号:
1-13:方块A-方块K
14-26: