美文网首页
C语言学习-趣味游戏

C语言学习-趣味游戏

作者: 一只洁_ | 来源:发表于2019-08-02 23:57 被阅读0次

目的

用所学内容完成两个游戏的编写

1.“杀人”游戏

输入总共参与人数,围成一个圈,给每个人一个编号,再输入一个死亡数字,然后开始报数,报到死亡数字的人被杀掉,下一个人接着从1开始继续报数。要求:输出最后存活的人的编号

技术

for while循环

具体实现

1.输入总共参与人数,
并输入死亡编号

int temp;
int killnumber;
printf("请输入参与人数:");
scanf("%d", &temp);
printf("请输入死亡号码:");
scanf("%d", &killnumber);

2.对每个人编号,并杀掉报数为死亡编号的人,算出最后活下来的人

先给people这个数组里的每个人编号

int people[1000] = {};
    
for (int i = 0; i < temp; i++)
{
    people[i] = i + 1;

}

游戏开始
先用一个while循环,因为杀人游戏一直在进行,直到只剩一个人才结束
每个人开始报数 报到死亡编号的人,给它赋值为0,然后报数继续。
用if语句,使满足值不等于0的人才能参与报数。
每杀掉一个人,
a.将报数j归0,这样下一个人报数才能从1开始
b.使num加一,当num = 参与人数 - 1时,循环结束(游戏结束)
循环每进行一次 使m加1,当m = 参与人数时, 将m 归零,这样才能实现参与游戏的人围成了一个圈
具体代码如下:

int temp = 0;
int num = 0;
int j = 0;
int m = 0;

    while (num < temp - 1)
{
    if (people[m] != 0)
    {
        j++;
    }
    if (j == killnumber)
    {
        people[m] = 0;
        j = 0;
        num++;
    }
    m++;
    if (m == temp)
    {
        m = 0;
    }

}

3.输出最后活下来的人的编号(值不为0的数)

这里要用一个for循环,因为我们需要找出是哪一个数的值不为0

for (int i = 0; i < temp; i++)
{
    if (people[i] != 0)
    {
        printf("剩下的数字为:%d\n",people[i]);
    }
}

将以上代码连贯,及为这一个游戏的全部代码,我们也可以看一下运行结果

08021.png

2.猜数字游戏

系统随机产生4个不同的随机数,使4个随机数按从小到大的顺序排列
用户输入4个猜测的数字 如果数字正确且位置正确A+1 如果数字正确但位置不正确B+1

首先生成4个随机数
导入stdlib.h和time.h头文件

生成四个不相等的随机数的使4个数字按从小到大的顺序排列

这里要用到rand 和srand函数
rand ()函数:产生随机数的一个随机函数
但是如果直接用rand 产生的4个随机数会全部相同,所以这个时候我们需要用srand函数
srand()函数:使随机数发生器初始化
srand((unsigned int)time(NULL));

srand((unsigned int)time(NULL));
int a[4] = {};
int i = 0;
for (int i = 0; i < 4;i++)
{
    int temp = rand() % 10;
    bool wether = false;
    for (int j = 0; j < i; j++)
    {
        if (temp == a[j])
        {
            wether = true;
            break;
        }
    }
    if (wether == false)
    {
        a[i] = temp;
    }
    else
    {
        i--;
    }
    for (int j = i; j >= 0; j--)
    {
        if (a[j] < a[j - 1])
        {
            int num = a[j - 1];
            a[j - 1] = a[j];
            a[j] = num;
        }
    }
}

开始猜数字
将用户输入的数字存到一个数组里面,然后再判断用户的猜测
当4个数字都猜正确时,跳出循环

while (1)
{
    int x = 0;
    int y = 0;
    printf("请输入四个数字:");
    int b[4] = {};
    for (int i = 0; i < 4; i++)
    {
        int n;
        scanf("%d", &n);
        b[i] = n;
    }

    //判断用户的输入
    for (int i = 0; i < 4; i++)
    {
        
        for (int j = 0; j < 4; j++)
        {
            if (a[i] == b[j] && i == j)
            {
                x++;
            }
            else if (a[i] == b[j] &&i != j)
            {
                y++;
            }
        }
    }


    printf("A%d B%d\n", x, y);
    if (x == 4)
    {
        printf("恭喜!");
        break;
    }
}

以上为这个游戏的代码
简单运行一下如下:

08022.png

心得体会

作为很久没有接触C语言的人,一开始编这两个游戏,有一点懵,心里有想法,然后做的时候怎么也运行不出来,然后不断的修改,就会发现在思考的时候很多地方没有考虑周到,但是在不断地调试修改的过程中,也学习到了很多。编写一个程序一定要边写边运行,这样哪里不足就可以及时发现并修改,不然最后运行,整个程序充满了bug,修改起来会非常的麻烦。

相关文章

网友评论

      本文标题:C语言学习-趣味游戏

      本文链接:https://www.haomeiwen.com/subject/fwzldctx.html