您的位置:首页 > 编程语言 > C#

C#基础视频教程7.4 如何编写简单游戏

2017-10-17 22:06 645 查看
接下来我们实现整个的游戏流程,当点击开始游戏,则需要三个事情开始运行
1 小鸟初始化并往下掉(当然还是可以用按钮让他飞一下)

2 每隔一定时间从左侧产生一个管子(宽度和高度随机,产生周期2000ms左右)

3 每隔一定时间检测是否鸟撞到了管子(这个时间周期要50ms左右,也可以更大或者更小)



 
跟上一节不同的地方在于,小鸟是唯一的,而管子不唯一。我们之前只是判断一个小鸟和一个管子是否有碰撞,随着管子的不断生成,要检测小鸟和每个管子是否有碰撞。所以我们把生成管子放在了GameSense的一个list里面,list存储的是GameRectange的类的实例,在另一个判断的线程,就需要遍历list的每一个元素做判断,并且只要有任意一个撞击了,就认为撞击了



 
我们前面用了很多类都是静态的,这里管子的类却不能是静态的,因为每一个管子大小都是不一样的,每隔一定时间都会new一个出来。可想而知,如果我们要做成两只鸟双人游戏,鸟也不能做成静态的(所以读者在考虑是否有必要做成静态的类,方法的时候,只要想清楚这个类是否会需要多个实例,如果需要则不能是静态的),本例中只有场景是唯一的,裁判是唯一的,所以可以用静态的。



 
为了提高游戏的体验,每产生一个管子,没有撞上去,就可以给用户增加一点分数(我们在屏幕用了绘制文字的方法,这比用控件更加合理,至少不会有控件自带的背景色干扰)。在每个子线程中我们都把延时Sleep操作放到了最后,读者可以测试一下如果放到前面会有什么问题(多次的弹窗,或者游戏结束了还产生多余的一个管子)



 
把游戏开始,游戏结束,游戏清空场景也单独做成方法,注意游戏清空场景并不等同于游戏结束。结束的时候要弹窗告诉用户他挂了,但是此时还不能马上清空场景(画面要显示他撞在哪里了),点击确定按钮之后才去执行清空场景(原来的list保存的管子都扔掉,小鸟也回到初始位置等等,很多布尔值都要复位)



 
已经可以测试完整的运行了,点击小鸟飞行,绕过障碍物,则得分,撞上去就提示游戏结束,下一节我们继续完善



 

 

 
更多教学视频和资料下载,欢迎关注以下信息:

我的优酷空间:

http://i.youku.com/acetaohai123



 
我的在线论坛:

http://csrobot.gz01.bdysite.com/



 
问题交流:

QQ:910358960

邮箱:acetaohai123@163.com

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: