网上有关“如何用一维数组模仿扑克洗牌和发牌”话题很是火热,小编也是针对如何用一维数组模仿扑克洗牌和发牌寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
您好:手机麻将有挂是真的吗这款游戏可以开挂,确实是有挂的,咨询加微信【】很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的
1.手机麻将有挂是真的吗这款游戏可以开挂,确实是有挂的,通过添加客服微信
2.咨询软件加微信【】在"设置DD功能DD微信手麻工具"里.点击"开启".
3.打开工具.在"设置DD新消息提醒"里.前两个选项"设置"和"连接软件"均勾选"开启"(好多人就是这一步忘记做了)
4.打开某一个微信组.点击右上角.往下拉."消息免打扰"选项.勾选"关闭"(也就是要把"群消息的提示保持在开启"的状态.这样才能触系统发底层接口)
用随机函数来模拟比较合适
扑克牌有54张,可以先约定好,比如:
大猫----------0
小猫----------1
黑桃A---------1
黑桃2---------黑桃A + 1
黑桃3---------黑桃A + 2
...
黑桃K---------黑桃A + 12
红心A---------黑桃A + 13
红心2---------红心A + 1
...
这样就可以把整副扑克牌的每张牌用一个特定的整数来表示,它们之间的大小关系可以通过不同的玩法制定相应的规则。
那好,现在我们定义一副牌int Joker[54];
用随机函数来填充Joker。
算法为:(不是真实的程序语言,由于不知道你使用什么编程语言,这里只描述算法)
for(i = 0 to 53)
{
l1:
生成随机数:pai = rand(54); //随机生成一个0 -- 53的整数
在已产生的牌中查找是否存在pai(即在Joker[0] 到Joker[i - 1]中查找)
如果存在,goto l1;
否则Joker[i] = pai
}
这样我们就把整副牌给洗好了。
接下来,就可以发牌了。
发牌时,只要按顺序把牌“发”到每个人的“手”里就行了
例如:4个人玩牌,四个人的牌为player[4][14];
for(i = 0 to 53)
{
player[i % 4][i / 4] = Joker[i];
}
这样就完成了发牌程序。
当然,如果你想要发牌也用一维数组,那也简单,比如还是4个人玩,那么:
player0手上的第n张牌就是Joker[n * 4 + 0]
player1手上的第n张牌就是Joker[n * 4 + 1]
player2手上的第n张牌就是Joker[n * 4 + 2]
player3手上的第n张牌就是Joker[n * 4 + 3]
好了,洗牌和发牌都已经完成,剩下就是如何玩牌了,你没问,就不多说了。
上面的伪代码应该能看懂吧?如果有问题,就用消息联系好了。你自己用编程语言去实现,不是什么大问题的。
C语言编程题:扑克牌排序问题
给你修改好了。20分,有点少了,呵呵。
/*游戏:扑克牌搓点游戏
规则:您将随机抽取其中两张和电脑进行对抗,
2张牌相加,个位大的胜出,其中对子比单牌大,
若都是对子,对子大的胜出。
您可以根据提示下注,起始资金均为1000元,
当一方财产小于0时,宣布破产,另一方胜出。
作者:于吉祥
日期:20090220
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_M 1000
enum colour
{
HEI = 0,
HONG,
MEI,
FANG,
};
void display(int number , int sign)
{
printf("%s\n","╭——╮");
switch(number)
{
case 0:
printf("%s\n","│0 │");
break;
case 1:
printf("%s\n","│A │");
break;
case 2:
printf("%s\n","│2 │");
break;
case 3:
printf("%s\n","│3 │");
break;
case 4:
printf("%s\n","│4 │");
break;
case 5:
printf("%s\n","│5 │");
break;
case 6:
printf("%s\n","│6 │");
break;
case 7:
printf("%s\n","│7 │");
break;
case 8:
printf("%s\n","│8 │");
break;
case 9:
printf("%s\n","│9 │");
break;
case 10:
printf("%s\n","│10 │");
break;
case 11:
printf("%s\n","│J │");
break;
case 12:
printf("%s\n","│Q │");
break;
case 13:
printf("%s\n","│K │");
break;
default:
printf("error");
break;
}
// printf("%s\n","│ │");
printf("%s","│ ");
switch(sign)
{
case HEI:
printf("%c",06);
break;
case HONG:
printf("%c",03);
break;
case MEI:
printf("%c",05);
break;
case FANG:
printf("%c",04);
break;
default:
break;
}
printf("%s\n"," │");
printf("%s\n","│ │");
printf("%s\n","╰——╯");
}
int compare(int x[] , int y[])
{
int sign,a,b;
if((x[0] == x[1])&&(y[0] == y[1]))
{
if(x[0] == y[0])
sign = 0;
else if(x[0] > y[0])
sign = 1;
else
sign = -1;
}
else if(x[0] == x[1])
sign = 1;
else if(y[0] == y[1])
sign = -1;
else
{
a = (x[0]+x[1])%10;
b = (y[0]+y[1])%10;
if(a == b)
sign = 0;
else if(a > b)
sign = 1;
else
sign = -1;
}
return sign;
}
void main()
{
int i,chip;
int Per[2],Com[2];
int Mon_Per = MAX_M , Mon_Com = MAX_M;
int Colour_Per[2] , Colour_Com[2];
printf("扑克牌搓点游戏\n");
printf("---------------\n");
system("pause");
while(1)
{
system("cls");
if(Mon_Per <=0)
{
printf("您已身无分文,游戏退出!");
break;
}
if(Mon_Com <=0)
{
printf("电脑已经被你赢光了,恭喜你获胜!");
break;
}
srand( time(NULL) );
for(i=0;i<2;i++)
{
Per[i] = rand()%13+1;
Colour_Per[i] = rand()%4;
Com[i] = rand()%13+1;
Colour_Com[i] = rand()%4;
}
printf("当前余额:你(%d),电脑(%d)\n",Mon_Per,Mon_Com);
// printf("牌已经抽取,你抽到的牌为:%d %d\n",Per[0],Per[1]);
printf("牌已经抽取,你抽到的牌为:\n");
for(i=0;i<2;i++)
display(Per[i],Colour_Per[i]);
printf("请下注:");
RET: scanf("%d",&chip);
if(chip>500)
{
printf("最大可下注为500,请重新下注!\n");
goto RET;
}
Mon_Per -= chip;
Mon_Com -= chip;
if(Mon_Per < 0)
{
printf("您的余额不足,请重新下注!");
Mon_Per += chip;
Mon_Com += chip;
goto RET;
}
if(Mon_Com < 0)
{
printf("电脑余额不足,请重新下注!");
Mon_Per += chip;
Mon_Com += chip;
goto RET;
}
switch(compare(Per,Com))
{
case 0:
printf("平局!");
Mon_Per += chip;
Mon_Com += chip;
break;
case 1:
printf("你赢了!");
Mon_Per += 2*chip;
break;
case -1:
printf("电脑赢了!");
Mon_Com += 2*chip;
break;
default:
printf("系统出错!");
break;
}
// printf("电脑抽到的牌为:%d %d\n",Com[0],Com[1]);
printf("电脑抽到的牌为:\n");
for(i=0;i<2;i++)
display(Com[i],Colour_Com[i]);
system("pause");
}
printf("游戏结束!");
system("pause");
}
#include?<stdio.h>
#include?<stdlib.h>
#include?<time.h>
typedef?struct?card?{
int?type;?//?type?0:梅花,1:方片,2:红桃,3:黑桃,4:王
int?point;?//?type?=?0?--?3时,point?=?2?--?14,type?=?4时,point?=?0?--?1?
}CARD;
void?sort(CARD?a[],int?n)?{
int?i,j,k;
CARD?t;
for(i?=?0;?i?<?n?-?1;?++i)?{
k?=?i;
for(j?=?i?+?1;?j?<?n;?++j)?{
if(a[k].point?>?a[j].point)
k?=?j;
}
if(k?!=?i)?{
t?=?a[k];
a[k]?=?a[i];
a[i]?=?t;
}
}
}
void?show(CARD?a[],int?n)?{
int?i;
char?type[4][5]?=?{"梅花","方片","红桃","黑桃"};
char?point[]?=?"JQKA";
for(i?=?0;?i?<?n;?++i)?{
if(a[i].type?>=?0?&&?a[i].type?<=?3)?{
printf("%s",type[a[i].type]);
if(a[i].point?<?11)?printf("%d?",a[i].point);
else?printf("%c?",point[a[i].point?-?11]);
}
else?{
if(a[i].point)?printf("大王");
else?printf("小王?");
}
}
printf("\n");
}
int?Has(CARD?a[],int?n,CARD?Card)?{
int?i;
for(i?=?0;?i?<?n;?++i)?{
if(a[i].type?==?Card.type?&&?a[i].point?==?Card.point)
return?1;
}
return?0;
}
int?main()?{
CARD?arr[5],t;
int?i,n?=?5,m;
srand((unsigned)time(NULL));
for(i?=?0;?i?<?n;?++i)?{
t.type?=?rand()%5;?
if(t.type?==?4)?t.point?=?rand()%2;
else?t.point?=?rand()%13?+?2;
if(Has(arr,i,t))?--i;
else?arr[i]?=?t;
}
m?=?n;
for(i?=?0;?i?<?m;?++i)?{?//?如果有大王,则排在最后?
if(arr[i].type?==?4?&&?arr[i].point)?{
t?=?arr[i];
arr[i]?=?arr[m?-?1];
arr[m?-?1]?=?t;
--m;
}
}?
for(i?=?0;?i?<?m;?++i)?{?//?如果有小王,也排在最后?
if(arr[i].type?==?4)?{
t?=?arr[i];
arr[i]?=?arr[m?-1];
arr[m?-?1]?=?t;
--m;
}
}
sort(arr,m);
show(arr,n);
return?0;
}
关于“如何用一维数组模仿扑克洗牌和发牌”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!