刽子手游戏(Hangman Judeg,Uva 489)

学习心得!(顺便说一下,今天学会了游泳,超级开心!!)

思路:1.在一行里把猜测单词里可能存在的字母全部输入

          2.交给计算机来判断,如果超过7次机会,则lose,还有字母没猜完的,chickened out,全部字母都猜了,而且在7次以内,则win

这个讲得有点抽象,但是敲过代码之后,然后去理解就知道啥意思了。我一开始也不知道到底怎样才是chickened out,到后来就搞清楚了这道题目的意思。这个真的很考研读题的理解能力,我看了好几遍才搞清楚啊。


思考:1.一定要打一遍代码,才能明白其中自己忽略的小细节

           2.理解完题目,并不意味着敲出的代码可以AC

           3.小细节要注意

            4.初始化数据不要丢三落四

#include <stdio.h>

#include <string.h>

#define maxn 100

int left,chance;

char s[maxn], s2[maxn];

int win, lose;

void guess(char ch);

int main()

{

    int rnd;

    while(scanf("%d%s%s", &rnd, s, s2) == 3 && rnd != -1)

    {

            printf("Rond %d\n", rnd);

            win = lose = 0;

            left = strlen(s);

            chance = 7;

             for(int i = 0; i < strlen(s2); i++)

              {

                    guess(s2[i]);

                    if(win || lose)

                            break;

                }

              if(win)

                    printf("You win.\n");

            else if(lose)

                    printf("You lose.\n");

            else

                    printf("You chickened out.\n");

    }

    return 0;

}


void guess(char ch)

{

    int bad = 1;

    for(int i = 0; i < strlen(s); i++)

    {

        if(ch == s[i])

        {

            left--;

            bad = 0;

            s[i] = ' ';

        }

    }

    if(bad)

        chance--;

    if(!chance)

        lose = 1;

    if(!left)

     win = 1;

}


猜你喜欢

转载自blog.csdn.net/JustinAndy/article/details/79546118