Presentation is loading. Please wait.

Presentation is loading. Please wait.

基于“贪吃蛇”游戏的C#大案例剖析 邓锐.

Similar presentations


Presentation on theme: "基于“贪吃蛇”游戏的C#大案例剖析 邓锐."— Presentation transcript:

1 基于“贪吃蛇”游戏的C#大案例剖析 邓锐

2 贪吃蛇是一款经典游戏,既简单又耐玩。玩家通过上下左右键控制蛇头方向,寻找不同的食物,每吃一口就能得到相应的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,更不能咬自己的尾巴,等到了一定的分数,就能过关,然后继续玩下一关。游戏结束时记录最高分玩家分数。

3 1.界面友好,实现网格和显示提示等内容(10%)
2.实现蛇和食物的产生(10%) 3.实现蛇的移动(20%) 4.能按类处理以上功能,实现蛇类、食物类、障碍物类和Form类等(20%) 5.实现积分与加速,即玩家能随着积分增加而加速,并能按积分过关(10%) 6.用类和接口实现不同障碍物,如蛇遇到地雷则游戏结束,遇到普通障碍物则 减分或暂停等(5%) 7.通过事件实现食物与分值变化(5%) 8.按通过文件读取和保存记录(5%) 9.实现异常处理(5%) 10.可选扩展功能,如实现菜单、将蛇图片处理、实现玩家登录、实现数据库记录信息、实现截图功能等(每项功能加5%,上限10%)

4 项目一 设计贪吃蛇游戏界面 根据需求分析,设计贪吃蛇游戏界面。
1. 通过本节操作,熟悉Visual Studio的IDE环境和WinForm控件操作。 2. 通过界面设计,加深了解“贪吃蛇游戏”的基本功能。

5 项目二 实现随机画图 随机画图 (1)通过本案例的操作可以熟悉画图和语法的使用。
(2)学习GDI+初步知识,建立画板,设置画笔,实现画图功能。 (3)使用Timer控件实现动画功能,为随后游戏设计打下基础。

6 项目三 绘画游戏图形元素 利用分支结构、循环结构,画出“贪吃蛇”游戏相关画面,让大家看到贪吃蛇的真面目。
(1)通过循环结构创建游戏网格,学会循环结构的使用。 (2)通过GDI+画出蛇和食物,学会分支结构if语句的使用。 (3)通过对键的控制,学会分支结构switch语句的使用。

7 项目四 用方法升级游戏程序 利用方法让贪吃蛇运动起来。 (1)针对timer控件的Tick事件所对应的方法进行编程,初步体会事件机制。
(2)利用队列或链表让蛇在键的控制下运动起来,体会数据结构的作用。(3)通过建立DrawGrid()、GenerateSnake()、GenerateFood()、GameOver()、SnakeMove()和AddScores()等方法,实现画格子、创建蛇、产生食物、游戏结束、蛇移动和加分等功能,从而掌握方法的定义和使用,并体会方法的作用和重要性。

8 项目三 绘画游戏图形元素 利用分支结构、循环结构,画出“贪吃蛇”游戏相关画面,让大家看到贪吃蛇的真面目。
(1)通过循环结构创建游戏网格,学会循环结构的使用。 (2)通过GDI+画出蛇和食物,学会分支结构if语句的使用。 (3)通过对键的控制,学会分支结构switch语句的使用。

9 项目五 用类升级贪吃蛇游戏 用类重构贪吃蛇项目 (1)用类和对象来重新处理“贪吃蛇”项目,以便以后的功能扩展。 (2)掌握类之间的通信。

10 项目六 用继承实现同形不同质的物体 贪吃蛇项目分解——继承与派生
(1)用继承实现食物类和障碍物类。(2)实现“吃到食物得分,碰到障碍物游戏结束”的功能。

11 项目七 用数组设置游戏元素对应属性 创建一个二维数组来表示每一个格子的属性,同时实现随机产生食物和多个障碍物,并能在蛇遇到这些对象时作出相应的反应。例如,遇到食物加分,遇到障碍物就结束等。 (1)设置一个表示方格的色彩属性的二维数组,用于判断是否吃了食物还是碰到障碍物。 (2)产生一个食物和多个障碍物,它们的位置随机。

12 项目八 利用覆写减少游戏程序耦合 为了减少程序间的耦合,方便程序维护和扩展,本章将对GenerateSolid()方法进行改进。要求添加Initialize()和FinallyHandle()两个方法,前者用于处理初始化,后者用于处理程序结束工作。这两个方法都要求在派生类中覆写。同时,对项目Form1.cs中的两个方法OnPaint()和ProcessDialogKey()进行覆写。 (1)在Solid类中给GenerateSolid添加两个方法:Initialize()和FinallyHandle()。(2)在派生类Food和Barrier中覆写Initialize()方法,实现多态。

13 项目九 用接口实现多种食物 定义一种新食物,颜色为紫色,蛇吃到该种食物可得双倍分值(可以将先前的食物类想象成水果类,而新的食物是小动物类)。为了便于将来升级到更多的各类食物,要求它们共享一个接口,这样不管蛇吃到何种食物,均可通过接口类型来自动处理。 (1)利用接口定义新食物类。 (2)通过接口类型转换,自动处理实现了该接口的对象,减少耦合。

14 项目十 建立分值变化事件 通过事件机制来监测分值变化。当蛇吃到食物时,分值发生变化,通过事件机制使界面显示的分值也随之变化。
(1)通过事件机制监视分值,一旦分值有变化,就刷新界面显示分值。 (2)实现游戏中格子属性变化、速度变化等事件机制。

15 项目十一 保存玩家记录 游戏启动时读取文件,显示记录信息。结束时,如果当前玩家分值大于原记录,则更新文档数据。
(1)游戏启动时读取文件,显示记录信息。 (2)游戏结束时,若玩家分值大于原记录,则更新文件数据。

16 项目十二 处理游戏数据读写异常 但如果文件中开始是空的,那么读取时就会出现异常;如果文件是只读属性,那么当往文件中写入新记录信息时,也会出现异常。所以这里要对文件读写的语句进行改进。 (1)在对保存游戏分值的文件进行读写操作时进行异常处理。


Download ppt "基于“贪吃蛇”游戏的C#大案例剖析 邓锐."

Similar presentations


Ads by Google