Hangman JudgeIn

In ``Hangman Judge,'' you are to write a program that judges a series of Hangman games. For each game, the answer to the puzzle is given as well as the guesses. Rules are the same as the classic game of hangman, and are given as follows:

  1. The contestant tries to solve to puzzle by guessing one letter at a time.
  2. Every time a guess is correct, all the characters in the word that match the guess will be ``turned over.'' For example, if your guess is ``o'' and the word is ``book'', then both ``o''s in the solution will be counted as ``solved.''
  3. Every time a wrong guess is made, a stroke will be added to the drawing of a hangman, which needs 7 strokes to complete. Each unique wrong guess only counts against the contestant once.

       ______   
       |  |     
       |  O     
       | /|\    
       |  |     
       | / \    
     __|_       
     |   |______
     |_________|
  4. If the drawing of the hangman is completed before the contestant has successfully guessed all the characters of the word, the contestant loses.
  5. If the contestant has guessed all the characters of the word before the drawing is complete, the contestant wins the game.
  6. If the contestant does not guess enough letters to either win or lose, the contestant chickens out.

Your task as the ``Hangman Judge'' is to determine, for each game, whether the contestant wins, loses, or fails to finish a game.

Input

Your program will be given a series of inputs regarding the status of a game. All input will be in lower case. The first line of each section will contain a number to indicate which round of the game is being played; the next line will be the solution to the puzzle; the last line is a sequence of the guesses made by the contestant. A round number of -1 would indicate the end of all games (and input).

Output

The output of your program is to indicate which round of the game the contestant is currently playing as well as the result of the game. There are three possible results:

You win.
You lose.
You chickened out.

Sample Input

1
cheese
chese
2
cheese
abcdefg
3
cheese
abcdefgij
-1

Sample Output

Round 1
You win.
Round 2
You chickened out.
Round 3
You lose.
 
 
#include <stdio.h>
#include <string.h>
int jishu(char st[], int n);/*标准答案中不重复字母的个数*/
char s1[100000];
char s2[100000];
int main()
{
    int x, i, k1, k2, j, k, h, y, sh1, sh2, z;
    while(scanf("%d", &i)!=EOF)
    {
        if(i == -1) break;
        sh1 = 0;/*相同字母的计数器*/
        sh2 = 0;/*猜错了的字母计数器*/
        getchar();
        scanf("%s %s",s1, s2);
        k1 = strlen(s1);
        k2 = strlen(s2);
        z = jishu(s1, k1);
        for(j = 0; j < k2; j++)/*从选手答案第一个字母开始循环*/
        {
            x = 0;
            for(k = 0; k < j; k++) /*选手答案中字母是否重复*/
            {
                if(s2[j] == s2[k])
                {
                    x = 1;
                    break;
                }
            }
            if(x == 0)/*如果该字母没有重复*/
            {
                y = 0;
                for(h = 0; h < k1; h++)/*判断与标准答案的字母是否一样*/
                {
                    if(s2[j] == s1[h])/*如果遇到一样的字母*/
                    {
                        y = 1;
                        break;
                    }
                }
                if(y == 1)/*如果一样*/
                    {
                            sh1++;
                            if(sh1 == z)
                                break;
                    }
                else
                    {
                        sh2++;
                        if(sh2 == 7)
                            break;
                    }
            }
        }
        if(sh2 >= 7)/*如果猜错字母的个数大于等于7*/
            printf("Round %d\nYou lose.\n", i);
        else if(sh1 == z)/*如果猜对字母的个数与标准答案的个数相等,说明获胜*/
            printf("Round %d\nYou win.\n", i);
        else/*如果猜对的不够猜错的也不够*/
            printf("Round %d\nYou chickened out.\n", i);
    }
    return 0;
}
int jishu(char st[], int n)/*标准答案中不重复字母的个数*/
{
    int x, y = 0, i, j;
    for(i = 0; i < n; i++)
    {
        x = 0;
        for(j = 0; j < i; j++)
        {
            if(st[j] == st[i])
            {
                x = 1;
                break;
            }
        }
        if(x == 0)
        {
            y++;
        }


    }
    return y;
}


Python完整工程,代码附详细注释 Hangman游戏(简称猜字游戏),是一个猜单词的双人游戏。游戏中有两个玩家,一个玩家负责挑选单词,另外一个玩家负责猜测单词。 猜字游戏的过程如下所示: 1) 负责挑选单词的玩家从字典中随机选择一个单词,画出与单词长度等量的位置(每个位置使用一个符号“_”表示,位置之间使用空格隔开),并画上一副绞刑架; 2) 负责猜测单词的玩家每次猜一个字符,并提交给负责挑选单词的玩家; 3) 如果该字符在单词中,则负责挑选的玩家把该字符出现的所有位置都填上该字符;如字符不在单词中,则负责挑选的玩家在绞刑架上画小人,每次一笔,并按顺序画; 4) 如果6笔画完,负责猜测的玩家还没有猜完所有字符,提示玩家游戏失败;否则游戏提前结束,提示玩家游戏成功。 作业要求: 1) 计算机作为挑选单词的一方,负责挑选单词、画绞刑架和小人、画剩余的空位、提示用户输入并给出必要的提示信息; 2) 计算机从附件words.txt读取单词列表,并随机选择一个单词开始游戏,在屏幕上左侧中间的位置画出单词的位置;右侧画出绞刑架和小人; 3) 每次游戏结束后,计算机应提示用户是否继续:如果是,则重新开始游戏;如果不是,则结束游戏; 4) 计算机把每次游戏的信息作为一行写入文件guess.csv中,这些信息包括:游戏开始的时间、单次游戏使用的时间、猜测的单词、用户猜测的字符序列,信息之间使用字符(逗号)分割; 5) 字符版猜字游戏或者画图版猜字游戏任选其一完成即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值