ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:54.28KB ,
资源ID:12758239      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12758239.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件综合项目工程实践报告.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

软件综合项目工程实践报告.docx

1、软件综合项目工程实践报告软件工程实践报告 题目名称: 贪食蛇游戏软件 摘 要随着社会发展,人们生活步调日益加快,越来越多人加入了全球化世界。人们不在拘泥于一小块天地。加班,出差成了当代人不可避免公务。而此时一款可以随时随处娱乐游戏成了必须品。在手机和电脑成为人们日用品社会,一款能在其上能便捷运营游戏成为买家参照点。 当前咱们所要简介这一款游戏-贪吃蛇,就是满足以上规定而设计出来,但愿能给玩家带来娱乐。贪吃蛇这一游戏简朴易行,操作以便,娱乐性较强,吸引了不少人。这一款游戏紧紧地抓住了人们心理,虽然简朴,却起乐无穷,在人们不断追求更多欲望下,该游戏给人们带来了追逐快感,以及成功后满足感,对于始终处

2、在高压下当代人是较好放松工具。 核心字:turbo c,构造体函数,蛇节模型第一章前言-1第二章需求分析-1第三章设计规定-2 3.1基本规定和提高规定-2第四章系统构成-3第五章概要设计-3 5.1程序初始化-3 5.2程序流程-4第六章详细设计-6 61对象模型设-6 6.2食物及蛇状态初始化及食物浮现-9 6.3游戏运营中设计思-12 6.4设立游戏规则及结-14第七章 调试及测试成果与分析-17第八章 结论-18参照文献-19附录-19第一章 前 言 C语言是在70年代初问世。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式刊登了C语言。初期C语言重要是用于UNIX系统。由于C语

3、言强大功能和各方面长处逐渐为人们结识,到了八十年代,C开始进入其他操作系统,并不久在各类大、中、小和微型计算机上得到了广泛使用。成为当代最先进程序设计语言之一。语言是一种构造化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言体现能力和解决能力极强。它不但具备丰富运算符和数据类型,便于实现各类复杂数据构造。它还可以直接访问内存物理地址,进行位(bit)一级操作。由于C语言实现了对硬件编程操作,因而C语言集高档语言和低档语言功能于一体。既可用于系统软件开发,也适合于应用软件开发。此外,C语言还具备效率高,可移植性强等特点。因而广泛地移植到了各类各型计算机上,从而形成了各种版本C语

4、言。因而越来越多高等院校已经将C语言作为非计算机专业甚至计算机专业必修课和选修课,C语言也成为了软件设计首选语言之一。本学期咱们进行了软件工程实习活动,重要任务就是运用所学C语言知识,在turbo c集成环境下制作一种小型贪食蛇应用程序,以达到熟悉和纯熟运用C语言目,为将来学习和工作打下良好实践基本。虽然贪食蛇游戏在咱们寻常生活中是很寻常用,但作为很普通一款小游戏,她却有着极强生命力。它简朴易行使之广泛存在于电脑,手机,游戏机等载体上,加上变化无穷、引人入胜让它成为了一款受人喜欢小游戏第二章 需求分析 项目背景和内容概要:当前咱们所要简介这一款游戏-贪吃蛇。是个简朴小游戏,但却能给人以放松,让

5、咱们从繁重寻常生活中解脱出来。而只有咱们身心得到了娱乐才干更好投入到新工作。当前人,不论是已经工作,还是尚未进入社会学生,都面临着很大压力,而这样一款能让咱们随时随处都能享有游戏,其魅力还是不可预计。系统分析1 可行性分析1。1 技术可行性 完全可以运用C语言来编程,在TC下也能顺利运营,可以说在技术这方面不会有大问题。1。2 经济可行性 可以说其经济利益将相称可观,随着手机和电脑普及,这样小游戏也将随着普及,届时候咱们也可以静观其成。1。3 操作可行性 对于这样一种简朴易行游戏,其操作不会有问题,无论是如何平台都能较好运营。而顾客也可以在其受益不浅。2 需求分析 游戏是人们生活中不可或缺,一

6、种人从小到大,真正随着她成长东西,游戏占有着很重要地位。无论是一种玩具,还是一种能和伙伴一起开心小游戏,都是能给咱们留下诸多美好回忆。因此无论是什么样游戏,只要它能迎合人们内心某种需求,它市场总会是好。第三章 设计规定详细设计规定涉及基本规定和提高规定 贪食蛇游戏基本规定是在turbo c集成环境下用C语言进行编译。游戏规则: 1、蛇头不能咬蛇身蛇头不能和蛇身发生碰撞,撞上就gameover,涉及不能反方向运动 2、蛇头不能碰障碍撞上就gameover,涉及不能走出游戏区域 3、蛇吃了食物会增长长度,食物吃掉一种才会产生新 4、蛇只有上下左右四个行走方向 提高规定是为了让界面看起来更大方和美观

7、,并对吃下豆子进行积分,当游戏结束时,界面浮现“GAME OVER”提示第四章 系统构成系统构成某些即程序模块构造: 1、初始化:场景、外边框和蛇(初始化蛇长度,初始化蛇行走方向) 2、在场景中放置食物,吃完一种再浮现下一种,吃一种食物蛇身增长一节,食物不能和障碍重叠 3、蛇运动,一节跟一节 4、行走中检测蛇头不能和障碍、蛇身碰撞,也不能 超过游戏区域 5、键盘监听,控制蛇运动,及变化游戏状态第五章 概要设计一、程序初始化: 1、全局变量定义(初始化游戏速度以及得分) 2、蛇构造体定义,食物构造体定义 3、图形界面初始化(Init( )函数) 游戏围墙绘制(Draw()函数) 食物浮现(Gam

8、eplay()函数) 本次编译办法采用是构造体定义编程,除了此办法还可以运用双向链表办法制作贪食蛇游戏,但是由于编程复杂且不容易理解,因此未采用。二、设计流程图 在游戏程序中,主任务0重要完毕某些初始化工作,开机画面显示。在任务2种一开始将屏幕清屏,然后绘制贪食蛇游戏边界和计分状态,最后进入一种无限循环,在循环体中依照游戏者按键进行相应解决,详细流程图如下图所示:Reset键 暂停键 方向键 图1: 贪食蛇吃豆任务流程图蛇动态显示建立在任务2,重要是不断更新蛇位置,此外每更新一次还需要判断蛇与否遇到边界,与否遇到自己身子,与否吃到豆子等。其流程图如下图所示: 否 是 否 第六章 详细设计一、对

9、象模型设计1、寻找规律,建立对象模型: 一方面从物理角度来分析蛇得运动规律。它是蠕动,像水同样流动。她有个特性就是身体每一种点都通过她头部所在点,她每一种时刻骨节所要运动目地是她前一种骨节所在位置。 不难看出,其中对象模型为蛇,骨骼,骨节,头抽象接口为 蛇,骨骼,骨节,头,图中豆子2、构造图:接口构造图骨骼骨骼对象构造图3、给接口添加行为:图元(GraphicObject)绘画:进行图元自身绘画操作 当前矩形:得到图元当前所在矩形,也可考虑使用region,这样使得对图元范畴得描述更加详细。骨节(Condyle) 前一种骨节:提供前序访问 后一种骨节:提供后序访问 流动:进行骨节运动诡计得计算

10、。骨骼(Cadre)(管理骨节链) 得到头:得到蛇头 得到尾:得到蛇尾 新增骨节:在骨节链中新增骨骼 删除骨节:在骨节链中删掉指定骨节头(head) 方向:可以设定和访问当前运动方向。蛇(Snake) 增长:蛇进行自身得增长4、完善模型,引入访问者模式存在问题: 当前是由详细骨骼对象来负责图元绘画以及解决流动,而骨骼只是管理骨节,没有提供任何访问骨节办法,咱们应当如何访问骨节呢?例如咱们要每个骨节画出自己形态,咱们也许会这样做。在骨骼上提供一种绘画办法,然后通过遍历骨节链,调用每个骨节绘画办法。这样似乎可以解决问题。那么,咱们要进行骨节流动计算呢?咱们再在骨骼上提供流动办法,然后同样遍历骨节,

11、调用每个流动办法。咱们要是加入记录骨节个数功能呢?咱们要是加入其她需要遍历骨骼办法呢? 这样做缺陷是什么?相似代码有多份如果骨节访问构造发生变化,后果会如何?有新功能需要遍历骨节链该怎么办?这样会迫使咱们拷贝代码。解决办法,引入访问者模式:新增长接口如下:加入行为:访问者:(空,无办法,属性)被访问者: 接受访问者骨节访问者:继承自访问者 访问骨节5、完整构造图:二、食物及蛇状态初始化及食物浮现 (一)、程序初始化 全局变量全局变量: 是指在函数之外定义变量,其作用范畴是从定义位置开始到源文献结束为止,其间函数 都可以使用int a , b ;f1 ( int c )int d , e ;in

12、t i;main()int m , n ;全局变量a、b作用范畴,c 作用范畴,d、e作用范畴(二)、程序初始化 构造体定义蛇构造体定义:每一节蛇坐标表达蛇移动方向表达蛇生命表达蛇节数表达食物构造体定义:食物坐标表达食物有无表达(三)、程序初始化 图形界面初始化int gd=DETECT , gm;initgraph ( &gd , &gm ,”c:Win-TC”) ; (四)、游戏边框绘制(Draw函数)开始画面,左上角坐标为(50,40)右下角坐标为(610,460)围墙库函数rectangle (left, top, right , bottom ) ;(50,40)(610,460)(

13、60,50)(600,450)9 (五)、Gameplay()函数: 构造体变量使用需要浮现新食物 :food。yes=1;/*1表达需要浮现、0表达已存在*/ 蛇状态:snake。life=0;/*0表达活着、1表达死亡*/ 蛇默认(初始)运动方向:snake。direction=?;蛇默认(初始)节数: snake。node=2; 蛇默认(初始)坐标: snake。x0=?;snake。y0=?;/*蛇头*/ snake。x1=90;snake。y1=100;/*蛇身*/ 注意构造体变量成员引用格式: 。 (六)、Gameplay()函数: 食物浮现判断与否需要浮现食物判断food。yes

14、值 1: /*需要浮现新食物*/ 随机产生食物坐标,并使坐标能被十整除 /*食物随机浮现后必要让食物可以在整格内,这样才可以让蛇吃到*/ 变化food。yes状态: 0 : /*显示食物*/ 画出食物蛇运动:先自由移动,用方向键控制蛇方向。三、游戏运营中设计思想:1、蛇自由移动:在没有任何按键时候,蛇按照初始方向向前移动 ;2、方向键控制蛇移动方向:用方向键控制蛇构造体里面方向成员。同步如果不浮现蛇死亡或者按ESC键,咱们可以永远玩游戏。永远玩游戏这里将用到一种什么语句?永循环 while(1)while(bioskey(1)=0)表达无键盘输入Gameplay( )程序构造while (1)

15、 while (bioskey(1)=0) 蛇身、蛇头坐标变化画出蛇,并使蛇运动 /*end while(!bioskey(1)*/ 监听方向键及ESC键 /*end while*/判断与否需要浮现食物,并进行相应操作食物及蛇状态初始化3、蛇移动移动思想:(1)蛇身、蛇头坐标变化 蛇身:将蛇第二节在屏幕中坐标移动到第一 节,第三节中坐标节移动到第二节 蛇头:随着方向键走。(2)蛇向前运动: 画出蛇,延时(gamespeed),并用用背景色去除 蛇最后一节4、蛇坐标变化for( i = snake。node-1 ;i 0;i - ) snake 。 x i = snake 。 x i-1 ; s

16、nake 。 y i = snake 。 y i-1 ;5、方向键表达 上 下 左 右 UP DOWN LEFT RIGHT 1 2 3 4 6、如果蛇构造体方向成员为 1: snake 。 y 0 - = 10 ; 2: 3: 4: 7、蛇向前运动画蛇(for)delay(gamespeed);用背景色去除蛇最后一结:(1)接受按键:key=bioskey(0);(2)按ESC键退出游戏(3)方向键变化蛇构造体方向成员如果key =UP&snake。direction!=2: snake。direction=1;依此。类推(二)、方向键控制蛇移动四、设立游戏规则1、判断蛇与否撞击自己,如果撞

17、击自己游戏就结束(调用gameover()函数,在程序外面定义gameover()函数,同步蛇生命成员为1;2、判断蛇与否撞击墙壁,如果撞击墙边游戏就结束(调用gameover()函数),同步蛇生命成员为1;3、判断蛇与否吃到食物,如果吃到食物,先把食物擦除,蛇长度加1,食物判断变量food。yes=1,分数加10,输出分数(调用显示分数函数printscore( ),在程序外面定义printscore( )函数);判断蛇与否撞击自己for(i=3 ;isnake。node ;i+) if(snake。xi=snake。x0&snake。yi=snake。y0) GameOver(); sna

18、ke。life=1; break; 判断蛇与否撞击墙壁判断蛇头坐标与否撞击墙壁 若撞击,调用 GameOver(); 并将蛇状态设立为1 判断蛇与否吃到食物判断蛇头与食物坐标与否相似相似: 擦除食物 蛇身体长一节 变化food。yes状态 score增长10 输出新得分:PrScore();Gameover()函数使用到库函数:cleardevice() /*图形模式下清除屏幕上内容*/settextstyle(); /*设立图形模式下字符显示字体、方向和大小*/outtextxy(); /*图形模式下在x,y坐标位置显示一行字符串*/Printscore()函数用到库函数: setfills

19、tyle(pattern, color ); /*设立填充模式和填充颜色*/ bar (left, top, right, bottom); /*画矩形,并填充矩形内部区域*/用于分数底色*/ setcolor(6); / *用于分数底色*/ settextstyle(0,0,2); sprintf(str,“score:%d”,score); /*把要输出字符转移给字符数组str(str要先定义)*/ outtextxy(55,20,str); /*输出分数*/Gameplay( ) 食物及蛇状态初始化 Printscore() while (1) while (bioskey(1)=0)

20、判断与否需要浮现食物 蛇身、蛇头坐标变化 判断蛇与否撞击自己 判断蛇与否撞击墙壁 if(snake。life=1) break; 判断蛇与否吃到食物 画出蛇,并使蛇运动 /*end while(!bioskey(1)*/ 监听方向键及ESC键 /*end while (1) */第七章 调试及测试成果与分析调试(debugging)是指去掉程序中错误(普通被称为bugs)过程。一种错误也许非常简朴,例如拼错一种单词或者漏掉一种分号;也也许比较复杂,例如使用一种指向并不存在地址指针。无论错误复杂限度如何,掌握对的调试办法都能使程序员受益匪浅。 运营贪食蛇程序时会有各种因素使它不能运营,这些因素可

21、以分为如下4种基本类型: (1)程序中有死循环; (2)程序运营时间比所盼望长; (3)程序在等待某些输入信息,并且直到输入对的后才会继续运营; (4)程序设计目就是为了延迟一段时间,或者暂停执行。 在讨论了因未知因素而挂起程序调试技巧后,将逐个分析上述每种状况。 调试那些因未知因素而不能运营程序是非常困难。也许耗费了很长时间编写一种程序,并努力保证每条代码都精确无误,也也许只是在一种本来运营良好程序上作了一种很小修改,然而,当运营程序时屏幕上却什么也没有显示。有时能得到一种错误成果,或者某些成果,面对长长源代码,刚刚开始主线不懂得错在哪里。 在开始调试贪食蛇程序时,一方面检查一下程序构造,然

22、后再按执行顺序依次查看程序各个某些,看看它们与否能对的运营。 在本次设计中,主程序包括3个函数调用int()、draw()和gameplay(),在调试时,先检查函数int()与否把控制权返回给了主程序。为此,在调用函数int()语句背面加上exit()命令,也可以用注释符把对函数draw()和gameplay()调用括起来,然后重新编译并运营这个程序。 注意:通过调试程序(debugger)也可以做到这一点,然而上述办法是一种很老式调试办法。调试程序是一种程序,它作用是让程序员可以观测程序运营状况、程序当前运营行号、变量值,等等。 此时将看到函数int()与否将控制权返回给了主程序如果该程序

23、运营并退出,可以判断是程序其他某些使程序挂起。可以用这种办法测试程序每一某些,直到发现使程序挂起那一某些,然后集中精力修改相应函数。 有时,状况会更复杂某些。例如,使程序挂起函数自身是完全正常,问题也许出在该函数从别地方得到了某些错误数据。这时,你就要检查该函数所接受所有值,并找出是哪些值导致了错误操作。 本次设计运营程序浮现过死循环现象,机器将无多次地执行同一段代码。这是由于程序进行循环判断条件永远为真,或者使程序退出循环判断条件永远为假。修改判断条件后即对的运营。在调试游戏速度时候,曾经一运营程序画面就直接跳至“game over”,通过带入法测试,发现是运营速度数值给过小,加大数值后逐运

24、营正常。 技巧:监视函数是调试程序出众功能之一。尚有就是带入法,用于判断某某些函数逻辑对错。第八章 结 论 在刚刚拿到课程设计题目时候,原本觉得贪食蛇这样一款已经进一步人心老游戏会比较容易做,但真正开始做时候才发现不是那么简朴。在编码时候遇到了不少困难,其中有粗心导致输入错误,也有程序逻辑上浮现错误。自己知识局限性,也给编程带来了不小阻碍。但是,当端正了态度后来,通过认真细致分析、学习,在最后顺利完毕了课程设计。在本次课程设计中,我从指引教师身上学到了诸多东西。教师认真负责工作态度,严谨治学精神和深厚理论水平都使我收益匪浅。她无论在理论上还是在实践中,都给与我很大协助,使我得到不少提高这对于我后来工作和学习均有一种巨大协助,感谢她耐心辅导。 此外,在游戏开发过程中廖远教师也给于我很大协助,协助解决了不少难点,还帮我提出了不少好建议,使得游戏能及时开发完毕,尚有所有同窗同样给与我不少协助,这里一并表达感。参照文献1 黄明等。21世纪进阶辅导 C语言程序设计M。大连理工大学出版社, 2 马

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1