例题4-2刽子手游戏

来源:互联网 发布:虚拟物品淘宝介入 编辑:程序博客网 时间:2024/05/21 10:16

题目:猜单词游戏, 游戏规则:计算机想一个单词让玩家猜,玩家每次可以猜一个字母。
如果单词里有那个字母,单词中的所有该字母都算猜对;如果没有那个字母,则猜错一次,最多只能错6次。
注意,猜一个已经猜过的字母也算错。输入给出正确单词和玩家的猜测,判断玩家赢、 输还是放弃。
每组数据包含3行,第1行是游戏编号(-1为输入结束标记),第2行是计算机想的单词,第3行是玩家的猜测。 后两行保证只含小写字母


分析

程序设计遵循两种常见顺序:自顶向下和自底向上 。

自顶向下:先写程序,再写细节,先写伪代码,在写实际程序

关键

  • 自顶向下逐步求精
  • 每次guess处理猜对的字母 将所有该字母改成空格
  • 写程序流程 框架-桩
  • 变量定义



代码如下

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define max 110
int len , chance ;
char s[max]  ,s2 [max];
int win , lose;
int main()
{
    int rnd,i  ;
    while(scanf("%d %s %s",&rnd,s ,s2)==3&&rnd!=-1)
    {
        printf("Round %d\n",rnd);
        win = lose = 0;
        len = strlen(s);
        chance  = 7;
        for(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 ,i ;
    for(i = 0;i<strlen(s);i++)
    {
        if(s[i]==ch)
        len--;
        s[i] = ' ';//将猜对的字符改成空格
        bad = 0;
    }
    if(bad)
        --chance;
    if(!chance)
        lose = 1;
    if(!len)
        win = 1;
}

0 0
原创粉丝点击