C++下棋牌游戏高性能洗牌算法
2016-08-06 12:27
337 查看
#include <stdlib.h> #include <stdio.h> #include <utility> #include <time.h> #include <assert.h> int GCardSrc[54]; void ShuffleCard( int *pDestCard, int PlayerCardCnt, int PlayerCnt ) { assert( nullptr != pDestCard ); assert( PlayerCardCnt * PlayerCnt <= sizeof( GCardSrc ) / sizeof( GCardSrc[0] ) ); int idx = 0; for( int i = 0; i < PlayerCardCnt * PlayerCnt; ++i ) { idx = rand() % ( sizeof( GCardSrc ) / sizeof( GCardSrc[0] ) - i ); pDestCard[ i ] = GCardSrc[ idx ]; std::swap( GCardSrc[ sizeof( GCardSrc ) / sizeof( GCardSrc[0] ) - i - 1 ], GCardSrc[ idx ] ); } } int main() { srand( time( nullptr ) ); for( int i = 0; i < 54; ++i ) { GCardSrc[ i ] = i; } const int PlayerCnt = 4; const int PlayerCardCnt = 5; int DestCard[ PlayerCardCnt * PlayerCnt ] = {}; for( int i = 0; i < 5; ++i ) { ShuffleCard( DestCard, PlayerCardCnt, PlayerCnt ); for( int i = 0; i < PlayerCnt * PlayerCardCnt; ++i ) { printf( "player:%d card[%d]=%d\n", i / PlayerCardCnt, i % PlayerCardCnt, DestCard[ i ] ); } printf( "-----------------------\n" ); } return 0; }
相关文章推荐
- 成员函数指针与高性能的C++委托(下篇)
- C++语法游戏 : 模仿C#的 using(...){}
- 用C++实现跨平台游戏引擎开发
- 休闲棋牌游戏大厅的基本模式及特点
- C++游戏程序优化
- 转让几本C++、VC、游戏编程精典书
- 用C++实现跨平台游戏开发之Allegro引擎
- 【原创】C++编写高性能服务器:内存分配篇
- c/c++程序之_猜数游戏
- 成员函数指针与高性能的C++委托(上中下篇)
- 棋牌游戏网站分析——远航游戏中心
- 游戏状态管理之C++实现
- 怎么样编写高性能的C++程序
- 【经验交流】最新棋牌游戏开发小组
- 成员函数指针与高性能的C++委托(上篇)
- 成员函数指针与高性能的C++委托(下篇)
- 成员函数指针与高性能的C++委托(上篇)
- 用C++实现跨平台游戏开发之Irrlicht引擎
- 编写安全的Symbian C++游戏代码
- 在高性能计算中慎用C++ std::complex