美文网首页
Android开发学习——Day5(逻辑游戏&排序法)

Android开发学习——Day5(逻辑游戏&排序法)

作者: 明天_ff | 来源:发表于2019-08-02 22:45 被阅读0次

学习目的

1.淘汰游戏和猜数字游戏;

2.三种排序法。

学习过程

1.用C语言编写两个小游戏,锻炼自己的逻辑思维,为枯燥的反复编程增添一分乐趣。

2.在很多编程中,我发现都需要用到排序操作。现在排序法也很多,我们着重说一下冒泡法,选择法,插入法。

技术

1.约瑟夫环游戏:终端输入参与的人数,大家围成一圈,再输入淘汰号码, 凡是报数为淘汰号码的人都淘汰,后面的人继续数数,输出最后一个未淘汰的人的编号。

我们先来看看实现效果:

代码实现--约瑟夫环游戏

上述实现思路如下:先打印输入界面,输入“参加游戏人数”和“淘汰号码”;根据输入的数据将各个编号赋值为相应值,比如,编号为“1”的人,他的值为1;再进行淘汰操作,将报数为淘汰号码的人的值赋为0;最后将所有人的值打印,留下的不为0的值所对应编号的人,即为未被淘汰。具体代码如下:


代码--成功

要注意的是,“成圈”实现与“报数”实现相配合,以计数来代替循环遍历。比如:以下的代码用循环遍历,可是无法达到现预期效果。

代码--失败

2.猜数字游戏: 随机产生4个不相同的数字并从小到大排序。玩家开始输入,如果位置正确且数字正确用A输出,如果数字正确位置不正确用B输出。

老样子,我们先看看实现效果:

代码实现--猜数字游戏

具体的全部代码这里不给出,仅作以下核心部分供参考:

代码实现--生成不相同的随机数

注意:

1.产生随机数需要用到“rand()”函数,但单此还不行。当程序关闭后,下一次执行我们需要它重新生成新的随机数,因此用“srand((unsigned int)time(NULL));"以时间种种子。

2.为了使生成的随机数是各不相同的,我们引入标识符”isExist“。当生成某一个随机数时,使之与前面已经生成的随机数比较,若存在相同的随机数,即重新生成当前随机数;若不存在,且随机数生成完毕,则跳出循环。

代码实现--排序

上述排序方法为插入法,实现边赋值,边排序。

3.排序方法(从小到大)

1)冒泡法:从一列数字的第一个开始,与后面一个比较,若大于,则交换;反之,继续,将大值逐一”沉淀“。

代码实现--冒泡法

Tips:使用两层循环,第一层为指向数,第二层为遍历。

2)选择法:从一列数字的第一个开始遍历,将其提出来与后面的一一比较,若大于,则交换;反之不操作。

代码实现--选择法

Tips:使用两层循环,第一层为全部遍历,第二层为部分朝后遍历。

3)插入法:从一列数字第一个开始,朝前比较,若小于,则交换;反之,不操作。即逐个插入。

代码实现--插入法

Tips:使用两层循环,第一层为遍历,第二层为部分朝前遍历。

感悟

编写两个游戏的过程中遇到了不少问题,比如,淘汰游戏中的”成圈“操作,猜数字游戏中的”生成随机数“操作。虽然不懂,但也试着去学习,摸索,最终也实现了功能。当代码成功的那一刻,内心是无比开心的。对于排序方法在很多地方都有用到,因此熟知一两种方法是必要的,整个C语言学习也一样,熟能生巧嘛。

相关文章

网友评论

      本文标题:Android开发学习——Day5(逻辑游戏&排序法)

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