| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1649 人关注过本帖
标题:simple simon游戏 出问题了。。
只看楼主 加入收藏
captain2050
Rank: 2
等 级:论坛游民
帖 子:57
专家分:43
注 册:2016-7-15
结帖率:92.86%
收藏
已结贴  问题点数:10 回复次数:4 
simple simon游戏 出问题了。。
我写了个 simple simon游戏,就是让计算机先显示一个三位数,然后等一秒后删除它,让用户输入,如果正确就继续。
如果连续三次正确,就增加一位(变成显示四位数),整个程序就差一步了,就是无论我输入什么,都显示wrong。
百思不得其解呀!!!!
大家帮我看一下(setbuf是linux中清除缓冲区的函数)
程序代码:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{
    char wu;            //没实际作用,就是为了输入回车再开始游戏
    int right,another_game,cishu,shu,truee,fang; //right判断玩家输入正误
    int turn,len,start_time;        //回合数和数字长度和开始显示数字的时间
    int number[30],player[30];
    do                            //外面的循环负责游戏的初始化和判断是否重新开始游戏
    {
        right;
        turn=0;
        len=3;
        srand(time(NULL));        //生成随机数的种子数
        printf("欢迎玩simple simon\n你要记住一闪而过的数字\n而且难度会"
        "越来越大\n按回车键开始(首次玩需按两回)\n");
        getchar();
        scanf("%c",&wu);
        do
        {
            turn++;
            for(int i=0;i<len;i++)
                number[i]=rand()%10;                //store the true number
            for(int i=0,truee=0;i<len;i++)//这个for用来把number里面的生成的
                {                                                        //数存到truee这个变量中   

                    fang=1;
                    for(int j=1;j<=len-1-i;j++)
                        fang*=10;
                    truee+=number[i]*fang;
                }
            setbuf(stdout,NULL);            //清空缓冲区
            for(int i=0;i<len;i++)
                printf("%d",number[i]);
            start_time=clock();
            while(clock()-start_time<CLOCKS_PER_SEC);
            setbuf(stdout,NULL);
            for(int i=1;i<=len;i++)
                printf("\b");
            setbuf(stdout,NULL);
            for(int i=1;i<=len;i++)
                printf(" ");
            printf("该你输入啦\n");
            setbuf(stdin,NULL);
                scanf("%d",&shu);                          //保存玩家的输入
            if(shu==truee)
                right=1;
            else
                right=0;
            if(turn%3==0)
                len++;
            if(right)
                printf("right!!!\n");
            else
                printf("wrong!!!\n");
        }while(right);
        printf("重新开始吗?('Y' OR 'N')\n");
        setbuf(stdin,NULL);
        if(tolower(getchar())=='y')
            another_game=1;
        else

            another_game=0;
    }
    while(another_game);
}

搜索更多相关主题的帖子: wrong 缓冲区 linux simple 计算机 
2016-07-22 17:42
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:5 
for(int i=0,truee=0;i<len;i++) //truee这样写就变成了该for循环里的局部变量,而开始定义的truee此时并没有被调用。
for(int i=0;i<len;i++)
                number[i]=rand()%10;                //store the true number
truee=0;                        //将truee写到这里就行了。
            for(int i=0;i<len;i++)//这个for用来把number里面的生成的
                {                                                        //数存到truee这个变量中   

                    fang=1;
                    for(int j=1;j<=len-1-i;j++)
                        fang*=10;
                    truee+=number[i]*fang;
                }
2016-07-22 17:58
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:5 
truee 没有初始化


[fly]存在即是合理[/fly]
2016-07-22 17:58
captain2050
Rank: 2
等 级:论坛游民
帖 子:57
专家分:43
注 册:2016-7-15
收藏
得分:0 
回复 2楼 linlulu001
谢了。。原来我错误的在for循环里初始化了truee。。。。
2016-07-22 18:16
captain2050
Rank: 2
等 级:论坛游民
帖 子:57
专家分:43
注 册:2016-7-15
收藏
得分:0 
回复 3楼 azzbcc
谢了。。原来我错误的在for循环里初始化了truee。。。。
2016-07-22 18:16
快速回复:simple simon游戏 出问题了。。
数据加载中...
 
   



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

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