当前位置: 代码迷 >> C语言 >> 不到20行代码的猜数字游戏,大家评评
  详细解决方案

不到20行代码的猜数字游戏,大家评评

热度:421   发布时间:2008-06-03 22:34:25.0
不到20行代码的猜数字游戏,大家评评
程序代码:

#include <iostream>  
#include <ctime>
const char *subter_ = "少了!", *hyper_ = " 高了!", *right = "恭喜你猜对了!";
const char* get_diff(int input, int random){
    return (input > random) ? hyper_ : ((input < random) ? subter_ : right);
}
int judge(int input, int random){
    return puts(get_diff(input, random)),(input == random) ? 1 : 0;   
}  
int main(void){
    srand((unsigned)time(0));
    long random = rand() % 1000 + 1, init_money = 0, input = 0, degree = 11;
    while(degree--)   
        (scanf("%d", &input),(!judge(input, random)))? judge(input, random),printf("你还有%d次机会\n", degree) : 1;
    return 0;
}


[[it] 本帖最后由 蓝一 于 2008-6-3 22:35 编辑 [/it]]
搜索更多相关的解决方案: 数字  游戏  

----------------解决方案--------------------------------------------------------
无语



[color=white]
----------------解决方案--------------------------------------------------------
貌似三目运算可以减少代码行
但可读性非常差

我再来一个
程序代码:

//趣味猜数字
/*
函数设计:
    long set_random();   //产生随机数字
    int judger();    //以用户输入为参数判断是否猜中
    char* get_diff();  //获得和正确数字的差距, 并给出提示信息
    long money();        //统计玩家获得的金钱
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TRUE 1
#define FALSE 0

char *subter = "少了!";
char *hyper = " 高了!";
char *right = "恭喜你猜对了!";


/*
函数名:long set_random();
参数:无
返回值: 产生的随机数字
函数功能:产生随机数字并返回
*/
long set_random()
{
    srand(time(0));
    long random = rand() % 100000;
    return random;
}

/*
函数名:char* get_diff(int);
参数:用户输入,正确数字
返回值:提示信息
功能:判断和正确数字之间的差距,并返回提示信息
*/
char* get_diff(int input, int random)
{
    int diff = input - random;
    return (diff > random) ? hyper : ((input < random) ? subter : right);
}

/*
函数名: int judeg(int, int);
参数:用户输入的数字,随机数字
返回值:TREU 或 FALSE
功能:判断玩家是否猜对,如果对返回TRUE,否则返回FALSE
*/
int judge(int input, int random)
{
    return (input == random) ? TRUE :(puts(get_diff(input, random)), FALSE);
}  

/*
函数名: long money(int);
参数:初始金钱,玩家是否猜中
返回值:玩家当前钱数
功能:积累玩家资金
*/
long money(int init_money, int flag_win_fal)
{
    return flag_win_fal ? init_money += 10000 : init_money;   
}

int main(void)
{
    int random = set_random();
    int init_money = 0;
    int input = 0;
    do
    {
        scanf("%d", &input);
        if (!judge(input, random))
            judge(input, random);
        else
            printf("获得金钱%ld\n\n", money(init_money, judge(input, random)));
    }while(1);
    return 0;
}


----------------解决方案--------------------------------------------------------
回复3#
出现问题!!!!
----------------解决方案--------------------------------------------------------
楼上,你换C++编译吧



[color=white]
----------------解决方案--------------------------------------------------------
  相关解决方案