标题:[求助] 一个关于发牌程序的问题
取消只看楼主
gifty
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-4-5
 问题点数:0 回复次数:1 
[求助] 一个关于发牌程序的问题

我写了一个发牌程序,但输出的结果有点问题
前面都很好,就是最后四张牌,花和数字不在牌里面.


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
void main(void)
{ int b[52];
char s,flower,f(int);
int i,a,c,t,j=0,k,m,line=0,u=0;
void background(int,int);
textbackground(0);
clrscr();
textcolor(4);
clrscr();
for(i=0;i<52;i++)
{ b[i]=i+1;
}
randomize();
for(i=0;i<52;i++)
{ if(i%13==0)
{ background(u,line);
line++;
}
do
{ a=rand()%52+1;
}
while(b[a-1]==0);
b[a-1]=0;

k=(a-1)/13;
flower=f(k);
if(a%13==0) c=13;
else c=a%13;

if(c==1) s='A'; /*将数字转换成字符*/
else if (c>1&&c<10) s=c-0+'0';
else if (c==11) s='J';
else if (c==12) s='Q';
else if (c==13) s='K';

t=(i+1)%4;
if(t==0) j++;
switch(t)
{ case 1: { printf("%4c",flower);
if(c==10) printf("%d",c); /*将十单独输出*/
else printf("%-2c",s);
break;
}
case 2: { printf("%4c",flower);
if(c==10) printf("%d",c);
else printf("%-2c",s);
break;
}
case 3: { printf("%4c",flower);
if(c==10) printf("%d",c);
else printf("%-2c",s);
break;
}
case 0: { printf("%4c",flower);
if(c==10) printf("%d",c);
else printf("%-2c",s);
break;
}
}

m=(i+1)%13;
if(m==0)
{ printf("\n");
printf("\n");
printf("\n");
printf("\n");
}
}
getch();
}
char f(int k) /*输出花色*/
{ char z;
if(k==0) z='0'+211;
else if(k==1) z='0'+212;
else if(k==2) z='0'+213;
else z='0'+214;
return(z);
}
void background(int u,int v) /*输出牌面的子函数*/
{ for(u=0;u<13;u++)
{ window(1+u*6,1+v*5,4+u*6,3+v*5);
textbackground(7);
clrscr();
}
}

搜索更多相关主题的帖子: 发牌 
2007-06-05 15:47
gifty
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-4-5
得分:0 

算法比较简单,就是0-51共52个数用随机函数取出,取出后将对应的数组值赋0(原值是1-52)避免被重复取出,然后转换成字符输出,这不是重点,这都比较简单,问题在图形函数上输出格式是每行13个数,每到输出第13个数就出问题了,花和数字不在牌里面上,可是前面都很好,不明白为什么,请教一下.


2007-06-06 18:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-145104-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072330 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved