沈阳航空航天大学
课 程 设 计 报 告
课程设计名称:操作系统课程设计
课程设计题目:贪吃蛇游戏设计与实现
学 院:计算机学院
指导教师:
学生信息:
专业
班级
学号
姓名
计算机科学与技术
计算机科学与技术
计算机科学与技术
计算机科学与技术
完成时间:2018年 9 月 10 日
沈阳航空航天大学课程设计报告
沈阳航空航天大学
课程设计任务书
课程设计名称
操 作 系 统 课 程 设 计
题目名称
起止日期
贪吃蛇游戏设计与实现
2018 年 9 月 3 日 起 至 2018 年 9 月 14 日 止
学 生 信 息
专业
班级
学号
姓名
计算机科学与技术
计算机科学与技术
计算机科学与技术
计算机科学与技术
课设内容和要求:
基于 Linux 0.11 内核键盘中断服务程序和显示字符的方式,设计一个具有贪吃
蛇程序,功能如下:
1、贪吃蛇控制。按 q 键启动游戏。游戏启动后,贪吃蛇(蛇头用+表示)从屏幕的
左上角出现并自动向右移动。用户按 w、s、a、d 键分别控制蛇头向上、下、左、右
四个方向移动。当用户再次按 q 键时,终止游戏。
2、当蛇头“+”移动到屏幕的边缘时,就会在与之相反的边缘出现,继续同方向
移动。
3、在屏幕上的某些位置出现“#”字符,当蛇头“+”与“#”相遇后,“#”消
失,并且在另外一个位置再出现一个“#”。同时,蛇的尾部就多出一个“*”,作为
蛇身,吃的“#”越多,蛇身就越长。
4、蛇身越长,贪吃蛇移动的速度越快(或越慢)。
5、当蛇头“+”撞到蛇身“*”后,结束游戏。
6、设计两人游戏模式,让屏幕上同时出现 2 个贪吃蛇,每个人通过实现双人贪
吃蛇对战。
I
沈阳航空航天大学课程设计报告
要求:
1、学习理解 Linux 0.11 内核通过 tty0 终端对键盘设备和显示设备控制原理。
2、制定合理游戏规则,保证游戏具有可玩性。
3、课设使用 Engintime Linux Lab 实验平台编辑、编译和调试 Linux0.11 内核。
4、学生以小组形式完成软件项目的分析、设计、实现等多个环节,并书写规范的报
告。
参考资料:
[1] 北京英真时代. Linux 内核实验教程_2.1. 北京英真时代科技有限公司编写
[2]赵炯. Linux 内核完全注释. 北京:机械工业出版社, 2004
[3]赵炯. Linux 内核完全剖析——基于 0.12 内核. 北京: 机械工业出版社, 2008
[4]拉芙(RobertLove).Linux 内核设计与实现(第 3 版). 北京:机械工业出版社, 2011
[5]汤小丹等.计算机操作系统(第 3 版).西安电子科技大学出版社,2007.05
系 审 核 意 见 : 同 意 □
不 同 意 □
系 主 任 签 字 ( 盖 章 ) :
指导教师(签名)
学
学
学
学
生(签名)
生(签名)
生(签名)
生(签名)
年
年
年
年
年
月
月
月
月
月
日
日
日
日
日
II
沈阳航空航天大学课程设计报告
目
录
沈阳航空航天大学........................................................................................................... I
1 项目实施计划与分工.................................................................................................1
1.1 问题描述...............................................................................................................1
1.2 任务分解...............................................................................................................1
1.3 团队成员简介.........................................................................................................2
1.4 系统开发分工.........................................................................................................2
1.5 文档撰写分工.........................................................................................................2
1.6 进度安排.................................................................................................................2
2 理论概述与源代码分析.............................................................................................5
2.1 LINUX 系统原理概述............................................................................................5
2.1.1 操作系统设备管理基本原理...........................................................................5
2.1.2 键盘中断服务程序的执行过程....................................................................6
2.2 源程序关键函数描述.............................................................................................9
2.2.1 单人模式函数描述..........................................................................................9
2.2.2 双人模式函数描述........................................................................................10
2.3 数据结构说明.......................................................................................................10
2.4 源代码分析...........................................................................................................11
2.4.1 定义初始光标的坐标和蛇身长度................................................................11
2.4.2 定义食物的坐标............................................................................................11
2.4.3 贪吃蛇的创建................................................................................................12
3 算法及数据结构设计...............................................................................................13
3.1 数据结构设计.....................................................................................................13
3.2 算法设计.............................................................................................................13
3.2.1 贪吃蛇单人模式.............................................................................................13
3.2.2 贪吃蛇双人模式.............................................................................................13
4 程序测试与验证.......................................................................................................17
4.1 测试方法设计.....................................................................................................17
4.2 测试结果.............................................................................................................17
4.2.1 进入贪吃蛇游戏测试....................................................................................17
4.2.2 贪吃蛇移动测试............................................................................................18
4.2.3 贪吃蛇进食测试............................................................................................20
4.2.4 游戏结束测试................................................................................................21
4.2.5 容错测试........................................................................................................21
4.2.6 双人模式移动及进食测试............................................................................22
4.2.7 双人模式游戏结束测试................................................................................23
III
沈阳航空航天大学课程设计报告
4.3 程序的缺陷及补充...............................................................................................25
5 结论...........................................................................................................................26
参考文献.........................................................................................................................27
附 录 程序清单.......................................................................................................27
IV
沈阳航空航天大学课程设计报告
1 项目实施计划与分工
1.1 问题描述
贪吃蛇是一个深受人们喜爱的游戏,一条蛇在一定的区域内,在这个区域内随
机出现一个食物,通过按键盘上的四个控制键控制蛇向上下左右四个方向移动,蛇
头撞到食物,则表示食物被蛇吃掉,这时蛇身子长一节,接着又出现食物,等待被蛇
吃掉,如果在蛇移动的过程中,撞到其他的蛇或身体交叉蛇头撞到自己的身体,则
游戏结束。
1.2 任务分解
:设计两人游戏模式,让屏幕上同时出现 2 个贪吃蛇,每个人通过实现双人贪吃
蛇对战。当蛇头“+”移动到屏幕的边缘时,就会在与之相反的边缘出现,继续同
方向移动。
:贪吃蛇控制。按 q 键启动游戏。游戏启动后,贪吃蛇(蛇头用+表示)从屏幕的
左上角出现并自动向右移动。用户按 w、s、a、d 键分别控制蛇头向上、下、左、
右四个方向移动。当用户再次按 q 键时,终止游戏。
:当蛇头“+”撞到蛇身“*”后,结束游戏。每吃到一个食物,蛇的尾部就多出
一个“*”,作为蛇身,吃的“#”越多,蛇身就越长。
:蛇身越长,贪吃蛇移动的速度越快(或越慢)。在屏幕上的某些位置出现“#”
字符,当蛇头“+”与“#”相遇后,“#”消失,并且在另外一个位置再出现一个
“#”。
1
沈阳航空航天大学课程设计报告
1.3 团队成员简介
1.4 系统开发分工
队长需要进行详细设计、编写文档,和小组成员进行沟通的工作。
队员根据队长的设计成果进行具体编码工作,对自己的代码进行基本的单元测试。
队长还需要做到走查小组成员代码的工作
测试人员需要对目标产品进行测试,编写测试 case 和测试代码,发现和跟踪 bug。
1.5 文档撰写分工
1.6 进度安排
阶段划
阶段目标
使用的工具和方法
主要活动及工作
阶段周
分
产品
期
阶段一 拟定项目
工具:电脑、手机、老师下发的资料;
确定了开发项目
六 天
“贪吃
方法:通过上网查询资料,以及对老
“贪吃蛇”如何
( 09.
蛇”在
师的资料的分析和对自身能力的估
在 linux 下实现
03-09
linux 下
测,最终确定项目。
.09)
的实现
2
沈阳航空航天大学课程设计报告
“贪吃
工具:Engintime Linux Lab
活动:资料查询,
蛇”项目
方法:通过资料的查询以及小组成员
搜集和整理;
的需求分
的共同讨论得出了项目需求分析,在
linux 程序的编
析;
此基础上,用 Engintime Linux Lab
写,编译;
“贪吃
编写出游戏界面,得出概要设计书。
确定“贪吃蛇”
蛇”游戏
的概要设
计。
分析说明书,概
要设计说明书
“贪吃
工具:Engintime Linux Lab
制定最终的“贪
蛇”详细
方法:这一阶段主要是小组成员共同
吃蛇”详细计划
设计说明
讨论,在 linux 设计编写程序的过程
书
书
中一步一步得出详细的的设计
阶段二 进行测试和
工具:Engintime
整理出软件测试实例
四天
报告撰写
Linux Lab/Office
和报告
方法:这一阶段主要
是通过 Engintime
Linux Lab 进行软件测
试,并在测试的过程
中完成对应的报告撰
写
(09.1
0-09.1
4)
3