当前位置: 首页 > news >正文

如何网站建设公司石家庄网站如何制作

如何网站建设公司,石家庄网站如何制作,邢台手机网站建设,dede能建立手机网站吗https://blog.csdn.net/niu_gao/article/details/51458721 在内存中模拟出一副牌#xff0c;然后模拟洗牌#xff0c;发牌等动作。 流程是这样的#xff1a;构建一副牌保存到一个数组中—洗牌—创建玩家—向玩家发牌–输出每个玩家的牌。 #include stdio.h #include…https://blog.csdn.net/niu_gao/article/details/51458721 在内存中模拟出一副牌然后模拟洗牌发牌等动作。 流程是这样的构建一副牌保存到一个数组中—洗牌—创建玩家—向玩家发牌–输出每个玩家的牌。 #include stdio.h #include stdlib.h #include time.h //定义扑克的花色 enum Suit{heart,spade,diamond,club,joker1,joker2 }; //一副牌的数量 #define CARD_COUNT 54 //定义扑克 typedef struct Card{int value;//牌的点数从1开始enum Suit suit;//花色 }Card; //定义玩家 typedef struct Player{char name[64];//玩家的名字Card ** cards;//玩家分到的牌。每项是一个指针指向原始一副牌数组中的一项这样可以节省空间int cardsCount;//玩家分到的牌的数量 }Player; //分牌完成后调用的函数的类型 typedef int (*COMPARE)(Card* ,Card*); //函数声明们 char* getCardName(const Card*); Card** shuffle(const Card*); void dispatchCards(Player** ,int ,const Card** ); void sort(Card**,int,COMPARE); int compare1(Card* ,Card*); int compare2(Card* ,Card*); void initOnePack(); //原始一副牌所在的数组 Card pokers[CARD_COUNT]; //入口函数 int main(void) {//初始化一副牌initOnePack();//洗牌shuffledPokers保存洗后的牌们Card** shuffledPokers shuffle(pokers);//构建三个玩家Player player1;strcpy(player1.name,隔壁老王);player1.cardsNULL;player1.cardsCount0;Player player2;strcpy(player2.name,小明);player2.cardsNULL;player2.cardsCount0;Player player3;strcpy(player3.name,田中龟孙);player3.cardsNULL;player3.cardsCount0;//把三放到一个数组中以传入发牌函数中Player* players[]{player1,player2,player3};//发牌dispatchCards(players,sizeof(players)/sizeof(Player*),shuffledPokers);//洗后的牌用完了释放之free(shuffledPokers);int i;//打印出每个玩家手中的牌for(i0;isizeof(players)/sizeof(Player*);i){//先打印玩家的名字printf(%s\n,players[i]-name);//需要对玩家手中的牌排序sort(players[i]-cards,players[i]-cardsCount,compare1);//打印玩家手中所有的牌int j;for(j0;jplayers[i]-cardsCount;j){char * name getCardName(players[i]-cards[j]);printf(%s ,name);free(name);}//每个玩家都需要换一次行printf(\n);}//释放玩家手中牌的数组for(i0;isizeof(players)/sizeof(Player*);i){free(players[i]-cards);}return 0; } //构造一副牌 void initOnePack(){int i0;//前52张for(;iCARD_COUNT-2;i){pokers[i].valuei/41;pokers[i].suit i%4;}//剩下的两张大王和小王//joker1pokers[i].valuei/41;pokers[i].suitjoker1;//joker2pokers[i1].valuei/42;pokers[i1].suitjoker2; } //洗牌参数是原始的一副牌返回洗完后的牌 Card** shuffle(const Card* pokers){int i;//分牌返回牌数组的内存空间Card** retPokers malloc(CARD_COUNT*sizeof(Card*));//为了不改动原始的一副牌另建一个数组保存原始牌的指针注意每项不是牌而是牌的指针Card** pokers2 malloc(CARD_COUNT*sizeof(Card*));for(i0;iCARD_COUNT;i){pokers2[i] pokers[i];}//种下随机种子。种子取的是当前时间//所以保证了每次运行程序时产生的随机数序列不同srand(time(NULL));//取得随机序号从pokers2取出序号所指的项把它依次加到retPokers中。for(i0;iCARD_COUNT;i){unsigned int index rand()%CARD_COUNT;if(pokers2[index] ! NULL){retPokers[i] pokers2[index];pokers2[index]NULL;}else{i--;}}free(pokers2);//返回洗完后的数组return retPokers; } //发牌 //players是玩家数组 //playerCount是玩家数量 //shuffledCards是洗完后的一副牌 void dispatchCards(Player** players,int playerCount,const Card** shuffledCards){//计算每个玩家手中牌的数组的容量如果每个玩家手中的牌不一样//最多就差一张加1是为了保证数组分配的空间足够容纳分到的牌。int numberCards CARD_COUNT/playerCount1;//为每个玩家的牌数组分配空间int i;for(i0;iplayerCount;i){Card* cards malloc(numberCards*sizeof(Card*));players[i]-cards cards;}//轮流向每个玩家发牌for(i0;iCARD_COUNT;i){//取当前玩家Player *curPlayer players[i%playerCount];//向玩家发牌curPlayer-cards[curPlayer-cardsCount] shuffledCards[i];//玩家手中实际的牌数增加curPlayer-cardsCount;} } //排序函数 //cards是要排序的牌每一项是牌的指针 //cardsCount是牌的数量 //compare_func是比较函数 void sort(Card** cards,int cardsCount,COMPARE compare_func){int i;for(i0;icardsCount-1;i){int j;for(j0;jcardsCount-i-1;j){if(compare_func(cards[j],cards[j1])){int tmpcards[j];cards[j]cards[j1];cards[j1]tmp;}}} } //比较函数先比较点数再比较花色 int compare1(Card* a,Card* b){if(a-value b-value){return 1;}else if(a-value b-value){return 0;}else{if(a-suit b-suit)return 1;elsereturn 0;} } //比较函数先比较点数再比较花色 int compare2(Card* a,Card* b){if(a-value b-value){return 0;}else if(a-value b-value){return 1;}else{if(a-suit b-suit)return 0;elsereturn 1;} } //获取牌的名字 //返回牌的名字字符串调用者用完后需要free()之。 char* getCardName(const Card* card){//存放花色名字char suitStr[16]{0};//0\0switch (card-suit) {case heart:strcpy(suitStr,红桃);break;case spade:strcpy(suitStr,黑桃);break;case diamond:strcpy(suitStr,方块);break;case club:strcpy(suitStr,梅花);break;}//存放点数名字char valueStr[16];switch(card-value){case 1:strcpy(valueStr,A);break;case 11:strcpy(valueStr,J);break;case 12:strcpy(valueStr,Q);break;case 13:strcpy(valueStr,K);break;case 14:strcpy(valueStr,小王);break;case 15:strcpy(valueStr,大王);break;default:sprintf(valueStr,%d,card-value);break;}//动态分配足够的空间char * ret malloc(16);//将两个名字合并到ret中sprintf(ret,%s%s,suitStr,valueStr);return ret; }
http://www.huolong8.cn/news/24887/

相关文章:

  • 北海网站制作公司响应式网站建设哪家好
  • 广东省网站备案四川淘宝网站建设方案
  • 工程施工行业在哪个网站容易找事做平台商业模式有哪些
  • 莱芜网站建设开发公司如何在网站中做内部链接
  • 支持支付宝登录的网站建设百度推广排名怎么做的
  • php网站开发几技术难点app制作图片
  • 多站点网站群的建设与管理定制衣服的软件app
  • 网站二级菜单是什么台州网站制作开发
  • 网站建设学什么软件rpg制作大师手机版
  • 网站前台建设用到哪些工具网站设计与开发策划书
  • 阿里云市场网站建设网页设计尺寸1080
  • 做网站的素材图片wordpress5.0新版如何发布文章
  • 湖南网站服务莒县城乡建设局网站
  • 城北区工程建设信息网站昆明网站建设搜q.479185700
  • 鹤壁做网站哪家便宜工程 建筑 公司 取名 参考
  • 做360全景有什么网站长安商城网站建设
  • 企业微信功能详细介绍seo外包多少钱
  • 盐城做网站需要多少钱黄骅贴吧房屋租赁信息
  • PHP网站开发案例12源代码临沂网站建设哪家专业
  • 张启亚学做网站wordpress 去掉meta
  • 上海企业网站seo多少钱阳朔到桂林大巴
  • 青海网站建设怎么建设网站被百度收录吗
  • 做医疗网站要几个人广告效果图用什么软件做
  • 无域名建网站网站建设和系统集成
  • lol解说网站源码联合加工网
  • 合肥建设学校官方网站廊坊快速排名优化
  • 网站建设开发技术类型装修装饰网站建设
  • 上海网站建设报价单wordpress 一键登录
  • 网站建设电话着么打两学一做专栏网站
  • 烟台seo网站推广大型购物网站建设方案