扑克牌游戏中的发牌过程"/>
二维数组的应用——模拟扑克牌游戏中的发牌过程
二维数组除了在数学中的行列式、矩阵等中有应用,游戏中也常常可以见到。
模拟扑克牌游戏中的发牌过程,随机将 52 张扑克发给两个玩家。
分析:扑克牌中每张牌都包含两个信息:花色(为黑桃、红桃、方块或者梅花)以及大小(为2,3,4,5,6,7,8,9,10,J,Q,K或者A),可以用两个一维字符数组kind和size分别有储。发牌过程则用随机数抽取花色和大小,表示抽取出的一张牌,依次发给两个玩家。为了表示每张牌的状态(未发出、发给玩家1或玩家2),再定义二维数组card存放该信息。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>int main()
{int card[13][4] = {0};const char kind[4] = {35,36,37,38};//分别对应 #、$、%、& 4个花色const char size[13] = { '2','3','4','5','6','7','8','9','X','J','Q','K','A' };int i, j, k;int sig = 1;int total = 52;srand(time(NULL));while(total){j = rand() % 13;//得0~12的随机数k = rand() % 4;//得0~3的随机数if (!card[j][k])//该张牌还未使用过{card[j][k] = sig;//玩家一或二已经用了此牌sig = -sig;//下一次发牌给另一个玩家total --; //每张牌只能发一次,循环,你一张,我一张}}printf("玩家一:\n");for (i = 0; i < 13; i++){printf("%c : ",size[i]);//size都按顺序for (j = 0; j < 4; j++){if (card[i][j] == 1){printf("%5c",kind[j]);//都是顺着输出的}}printf("\n");}printf("玩家二:\n");for (i = 0; i < 13; i++){printf("%c : ", size[i]);for (j = 0; j < 4; j++){if (card[i][j] == -1){printf("%5c", kind[j]);}}printf("\n");}return 0;
}
因为涉及到随机数的概念,所以每次发牌的结果都是不同的:
这样就大功告成了!
更多推荐
二维数组的应用——模拟扑克牌游戏中的发牌过程
发布评论