注册 登录
编程论坛 VC++/MFC

求大神修改。。。。。。。一个小游戏这个对吗

晓吉吉 发布于 2013-06-20 15:12, 944 次点击
题目:11.    模拟扑克牌发牌
问题描述:
扑克牌发牌游戏:模拟扑克牌发牌过程,只考虑4种花色的52只牌,不考虑大鬼和小鬼,给4个人发牌,每人发13只牌。
提示:
(1)黑桃( )、红桃( )、梅花( )、方片( )的扑克牌图样对应的ASCII码值分别为6、3、5、4,即将这4个整数以%c的格式打印即可得到所对应的字符图样。例如:printf("扑克牌自动发牌 %c(黑) %c(红) %c(梅) %c(方):", 6, 3, 5, 4);
(2)扑克牌发牌的过程是一个产生随机整数的过程,产生随机数的库函数是rand( ),对应的头文件是 <stdlib.h>。例如要产生52以内的整数,则可以使用如下语句:
x = rand( ) % 52;  /* x 赋值为随机产生的[0~51]之间的整数值 */
   #include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
    int i=0,j,temp=0,order[51]={0},k=0;
    order[51]=100;
    srand(time(NULL));
    while(order[51]==100)
    {
        k=rand()%52;
        for(j=0;j<i;j++)
        {
            if(order[j]==k)
            {
                temp=1;break;
            }
            else
            {
                temp=0;
            }
        }
        if(temp==0)
        {
            order[i]=k;
            i++;
        }
    }
    //for(i=0;i<=51;i++)
    //{
    //printf("%d ",order[i]);
    //}
    printf("第一人\n");
    printf("%c",6);
    for(i=0;i<13;i++)
    {
        if(order[i]/13==0)
            printf("%d ",order[i]+1);
    }
    printf("\n");
    printf("%c",3);
    for(i=0;i<13;i++)
    {
        if(order[i]/13==1)
            printf("%d ",order[i]%13+1);
    }
    printf("\n");
    printf("%c",5);
    for(i=0;i<13;i++)
    {
        if(order[i]/13==2)
            printf("%d ",order[i]%13+1);
    }
    printf("\n");
    printf("%c",4);
    for(i=0;i<13;i++)
    {
        if(order[i]/13==3)
            printf("%d ",order[i]%13+1);
    }
    printf("\n");
    printf("第二人\n");
    printf("%c",6);
    for(i=13;i<26;i++)
    {
        if(order[i]/13==0)
            printf("%d ",order[i]+1);
    }
    printf("\n");
    printf("%c",3);
    for(i=13;i<26;i++)
    {
        if(order[i]/13==1)
            printf("%d ",order[i]%13+1);
    }
    printf("\n");
    printf("%c",5);
    for(i=13;i<26;i++)
    {
        if(order[i]/13==2)
            printf("%d ",order[i]%13+1);
    }
    printf("\n");
    printf("%c",4);
    for(i=13;i<26;i++)
    {
        if(order[i]/13==3)
            printf("%d ",order[i]%13+1);
    }
    printf("\n");
    printf("第三人\n");
    printf("%c",6);
    for(i=26;i<39;i++)
    {
        if(order[i]/13==0)
            printf("%d ",order[i]+1);
    }
    printf("\n");
    printf("%c",3);
    for(i=26;i<39;i++)
    {
        if(order[i]/13==1)
            printf("%d ",order[i]%13+1);
    }
    printf("\n");
    printf("%c",5);
    for(i=26;i<39;i++)
    {
        if(order[i]/13==2)
            printf("%d ",order[i]%13+1);
    }
    printf("\n");
    printf("%c",4);
    for(i=26;i<39;i++)
    {
        if(order[i]/13==3)
            printf("%d ",order[i]%13+1);
    }
    printf("\n");
    printf("第四人\n");
    printf("%c",6);
    for(i=39;i<52;i++)
    {
        if(order[i]/13==0)
            printf("%d ",order[i]+1);
    }
    printf("\n");
    printf("%c",3);
    for(i=39;i<52;i++)
    {
        if(order[i]/13==1)
            printf("%d ",order[i]%13+1);
    }
    printf("\n");
    printf("%c",5);
    for(i=39;i<52;i++)
    {
        if(order[i]/13==2)
            printf("%d ",order[i]%13+1);
    }
    printf("\n");
    printf("%c",4);
    for(i=39;i<52;i++)
    {
        if(order[i]/13==3)
            printf("%d ",order[i]%13+1);
    }
    printf("\n");                       
    system("pause");
    return 0;
      }
4 回复
#2
suchengjie2013-06-23 11:41
看不太明白
#3
Mhugh2013-08-18 10:21
关于随机数,假如你要产生某个范围内不相等的数,那么越往后面,得到随机数的概率越小,有可能出现在有限的时间内,根本就得不到最后的随机数的情况
#4
人_神2013-08-20 21:44
你应该先考虑一下,如何不让扑克牌重复出现。如果重复了就不是一副牌了
#5
eytao2013-09-08 21:38
看了一点点。你都没把代码放机器上跑跑试试看来着。
看到一堆的bug。
1