c语言实现猜单词小游戏

本人代码新手orz,第一次发帖来记录,如有错误请指正!

要求:写一个猜单词游戏的程序。在程序中,计算机首先从一组可能的单词中随机挑选单词。然后输出一行破折号,每个破折号对应于单词中的一个字母,让玩家猜其中的字母。如果玩家猜到的字母就是单词中的字母,单词中出现这个字母的正确位置上就会显示这个字母,其他以前几轮猜中的字母也会显示在划线上。如果猜的字母不在单词中,则发出“嘟”的报警声。玩家继续猜字母直到玩家成功猜中了单词中的所有字母或玩家猜错了8次,这两种情况下游戏结束。

提示:

1) 定义一个字符串数组

   char *words[8]={"love", "china", "how", "are", "you", "name", "zhang", "gang"};

   生成一个随机数,从中选取一个单词,作为要猜的单词。

2)发出“嘟”的声音    putchar('\007');

3)假设猜的单词里面没有重复的字母

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

void getstring(char sguess[50]);

void getstring(char sguess[50])//得到要猜的字符数组
{
    //以下是单词库
    char str[][50]={"love", "china", "how", "are", "you", "name"};
    //随机指定一个单词放到sguess内
    srand((unsigned)time(NULL));
    strcpy(sguess,str[rand()%6]);
}

int main()
{
    char sguess[50];
    getstring(sguess);
    int len=strlen(sguess);
    printf("(答案是“%s”)\n",sguess);

    char wordguessnow[50];//初始化空单词
    for(int i_2=0;i_2<len;i_2++)
    wordguessnow[i_2]='-';

    int count=0;//记录已猜错次数
    int flag1=1;//记录是否全是破折号

    while(count!=8&&flag1!=0)
    {
        flag1=0;
        for(int i_4=0;i_4<len;i_4++)
        {

            if(wordguessnow[i_4]=='-')
                flag1=1;//有破折号
        }
        if(flag1==0)
            exit(0);//wordguessnow内若已经无破折号则结束程序

        char character;
        printf("你输入了:");
        scanf("%c",&character);
        fflush(stdin);//刷新缓冲区,上次输入留下了'\n'

        //记录sguess内是否含输入的character
        int right=0;
        for(int i_1=0;i_1<=len;i_1++)
        {
            if(character==sguess[i_1])
            {
                right=1;
            }
        }
        if(right==1)//含有character
        {
            for(int i_3=0;i_3<len;i_3++)
            {
                if(character==sguess[i_3])
                {
                    wordguessnow[i_3]=character;
                    printf("word:%s\n",wordguessnow);
                }
            }
        }
        else//不含character
        {
            count+=1;
            printf("word:%s\n",wordguessnow);
            putchar('\007');
        }

    }
    if(count==8)
            printf("你已经猜了八次,游戏失败");

    return 0;
}

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值