Poedu_C语言_20160925_打字母游戏

今天来分析一下编写打字母游戏需要注意的一些问题,首先来看一下效果图:
开始界面
游戏界面:
具体的游戏效果是这样的:
由界面的上部随机从上往下掉落一个字母,而且字母掉落位置的x轴也是不一样的,当用户通过敲击键盘输入字母,如果是一样的,那么这个字母会消失,分数累加,再随机出一个字母往下掉。随着分数的增加,等级(难度)也会增加,即字母往下掉落的速度会变快。
因为程序写得比较乱,所以就不贴出来了,下面列举一些在编写遇到的一些问题及解决方法:
1.怎么实现字母的掉落?是用的x,y定位么?
因为我现在所学的知识还没到关于控制台窗口的坐标操作这边,所以在这里使用的是"\n"也就是换行符。
仅仅是换行符是不够的,你会发现你这一列都是字母,因为没有把上面的字母给清除掉,所以应该用"\b\n",\n是换行,\b是干嘛的呢?是用来退格的。也就是先将当前这个字母退格删掉,然后再进行换行打印

2.在实现掉落的时候,我曾想过打印一次界面头部的信息就好了。但是,这会使得我的母每次掉落都是从最顶部开始,并且会穿过提示信息,而且,这变得不能更新信息。所以,整个界面应该都是一次性的,即:如果用户输入对了,清屏,加分,下一个字母;如果不对,字母到达终点后,清屏,减分,下一个字母。所以说,每次的字母变换同样意味着全屏幕的更新。下面附上清屏方式:

3.在实现了字母掉落后,你会发现,字母的左下角一直会有个光标存在:
这个光标无疑是要删掉的。因为本身知识每到这个地方,所以此处借鉴同班同学的做法:
这段代码只需要在初始化的时候调用一次就可以了,看看现在的效果:

右下角光标没了,是不是舒服许多

4.怎么实现等级提高以后下落速度加快?这个问题并不难,但是确实可能会碰到这个困扰,解决方法:
5.怎么判断用户是否输入正确?
这里需要用到一个函数:kbhit(),用于检查当前是否有键盘输入。
当检测到有的时候,我们就需要对用户的输入进行读取,怎么读取呢?getchar()么?虽然getchar也有从缓冲区读入字符的效果,但是它同时需要用户敲入回车才会进行读取,而且用getchar读取,在界面中会显示用户输入的字符,所以getchar在这种情境下并不适合我们。我们需要用到的是getch()函数,它可以做到从缓冲区读入一个字符,并且不需要回车,不会显示在界面上。拿到了键盘的输入,再与当前随机出来的字母进行比较,就可以判断用户输入是否正确了。

6.怎么随机出现一个字母?
直接上代码:
这其中涉及到随机数,如果不懂随机数的生成方法,可网上搜索。
在代码中,出现了26,80这种数字。当程序出现具体的数字的时候,可进行注释或者用define处理,不要是它成为一个魔数(让人难以理解其意义的数字)

暂且分析这些,如有错误,请在评论区指出,感谢您的阅读!





  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值