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

上传人:b****1 文档编号:12758239 上传时间:2023-04-21 格式:DOCX 页数:28 大小:54.28KB
下载 相关 举报
软件综合项目工程实践报告.docx_第1页
第1页 / 共28页
软件综合项目工程实践报告.docx_第2页
第2页 / 共28页
软件综合项目工程实践报告.docx_第3页
第3页 / 共28页
软件综合项目工程实践报告.docx_第4页
第4页 / 共28页
软件综合项目工程实践报告.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

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

《软件综合项目工程实践报告.docx》由会员分享,可在线阅读,更多相关《软件综合项目工程实践报告.docx(28页珍藏版)》请在冰豆网上搜索。

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

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

 

软件工程实践报告

 

题目名称:

贪食蛇游戏软件

 

摘要

随着社会发展,人们生活步调日益加快,越来越多人加入了全球化世界。

人们不在拘泥于一小块天地。

加班,出差成了当代人不可避免公务。

而此时一款可以随时随处娱乐游戏成了必须品。

在手机和电脑成为人们日用品社会,一款能在其上能便捷运营游戏成为买家参照点。

当前咱们所要简介这一款游戏----贪吃蛇,就是满足以上规定而设计出来,但愿能给玩家带来娱乐。

贪吃蛇这一游戏简朴易行,操作以便,娱乐性较强,吸引了不少人。

这一款游戏紧紧地抓住了人们心理,虽然简朴,却起乐无穷,在人们不断追求更多欲望下,该游戏给人们带来了追逐快感,以及成功后满足感,对于始终处在高压下当代人是较好放松工具。

核心字:

turboc,构造体函数,蛇节模型

 

第一章前言--------------------------------------------------------1

第二章需求分析----------------------------------------------------1

第三章设计规定----------------------------------------------------2

3.1基本规定和提高规定-------------------------------------------2

第四章系统构成--------------------------------------------------3

第五章概要设计----------------------------------------------------3

5.1程序初始化---------------------------------------------------3

5.2程序流程--------------------------------------------------------------------------------4

第六章详细设计------------------------------------------------------------------------------6

6.1对象模型设---------------------------------------------------6

6.2食物及蛇状态初始化及食物浮现------------------------------96.3游戏运营中设计思-------------------------------------------12

6.4设立游戏规则及结---------------------------------------------14

第七章调试及测试成果与分析----------------------------------------17

第八章结论--------------------------------------------------------18

参照文献-----------------------------------------------------------19

附录---------------------------------------------------------------19

 

第一章前言

C语言是在70年代初问世。

一九七八年由美国电话电报公司(AT&T)贝尔实验室正式刊登了C语言。

初期C语言重要是用于UNIX系统。

由于C语言强大功能和各方面长处逐渐为人们结识,到了八十年代,C开始进入其他操作系统,并不久在各类大、中、小和微型计算机上得到了广泛使用。

成为当代最先进程序设计语言之一。

语言是一种构造化语言。

它层次清晰,便于按模块化方式组织程序,易于调试和维护。

C语言体现能力和解决能力极强。

它不但具备丰富运算符和数据类型,便于实现各类复杂数据构造。

它还可以直接访问内存物理地址,进行位(bit)一级操作。

由于C语言实现了对硬件编程操作,因而C语言集高档语言和低档语言功能于一体。

既可用于系统软件开发,也适合于应用软件开发。

此外,C语言还具备效率高,可移植性强等特点。

因而广泛地移植到了各类各型计算机上,从而形成了各种版本C语言。

因而越来越多高等院校已经将C语言作为非计算机专业甚至计算机专业必修课和选修课,C语言也成为了软件设计首选语言之一。

本学期咱们进行了软件工程实习活动,重要任务就是运用所学C语言知识,在turboc集成环境下制作一种小型贪食蛇应用程序,以达到熟悉和纯熟运用C语言目,为将来学习和工作打下良好实践基本。

虽然贪食蛇游戏在咱们寻常生活中是很寻常用,但作为很普通一款小游戏,她却有着极强生命力。

它简朴易行使之广泛存在于电脑,手机,游戏机等载体上,加上变化无穷、引人入胜让它成为了一款受人喜欢小游戏

 

第二章需求分析

项目背景和内容概要:

当前咱们所要简介这一款游戏---贪吃蛇。

是个简朴小游戏,但却能给人以放松,让咱们从繁重寻常生活中解脱出来。

而只有咱们身心得到了娱乐才干更好投入到新工作。

当前人,不论是已经工作,还是尚未进入社会学生,都面临着很大压力,而这样一款能让咱们随时随处都能享有游戏,其魅力还是不可预计。

·系统分析

1可行性分析

1。

1技术可行性

完全可以运用C语言来编程,在TC下也能顺利运营,可以说在技术这方面不会有大问题。

1。

2经济可行性

可以说其经济利益将相称可观,随着手机和电脑普及,这样小游戏也将随着普及,届时候咱们也可以静观其成。

1。

3操作可行性

对于这样一种简朴易行游戏,其操作不会有问题,无论是如何平台都能较好运营。

而顾客也可以在其受益不浅。

2需求分析

游戏是人们生活中不可或缺,一种人从小到大,真正随着她成长东西,游戏占有着很重要地位。

无论是一种玩具,还是一种能和伙伴一起开心小游戏,都是能给咱们留下诸多美好回忆。

因此无论是什么样游戏,只要它能迎合人们内心某种需求,它市场总会是好。

 

第三章设计规定

详细设计规定涉及基本规定和提高规定

贪食蛇游戏基本规定是在turboc集成环境下用C语言进行编译。

游戏规则:

 

1、蛇头不能咬蛇身--蛇头不能和蛇身发生碰撞,撞上就gameover,涉及不能反方向运动 

2、蛇头不能碰障碍--撞上就gameover,涉及不能走出游戏区域 

3、蛇吃了食物会增长长度,食物吃掉一种才会产生新 

4、蛇只有上下左右四个行走方向 

提高规定是为了让界面看起来更大方和美观,并对吃下豆子进行积分,当游戏结束时,界面浮现“GAMEOVER”提示

 

第四章系统构成

系统构成某些即程序模块构造:

 

1、初始化:

场景、外边框和蛇(初始化蛇长度,初始化蛇行走方向)

2、在场景中放置食物,吃完一种再浮现下一种,吃一种食物蛇身增长一节,食物不能和障碍重叠

3、蛇运动,一节跟一节

4、行走中检测蛇头不能和障碍、蛇身碰撞,也不能超过游戏区域

5、键盘监听,控制蛇运动,及变化游戏状态

 

第五章概要设计

一、程序初始化:

1、全局变量定义(初始化游戏速度以及得分)

2、蛇构造体定义,食物构造体定义

3、图形界面初始化(Init()函数)

游戏围墙绘制(Draw()函数)

食物浮现(Gameplay()函数)

本次编译办法采用是构造体定义编程,除了此办法还可以运用双向链表办法制作贪食蛇游戏,但是由于编程复杂且不容易理解,因此未采用。

二、设计流程图

在游戏程序中,主任务0重要完毕某些初始化工作,开机画面显示。

在任务2种一开始将屏幕清屏,然后绘制贪食蛇游戏边界和计分状态,最后进入一种无限循环,在循环体中依照游戏者按键进行相应解决,详细流程图如下图所示:

 

Reset键暂停键

 

方向键

 

图1:

贪食蛇吃豆任务流程图

蛇动态显示建立在任务2,重要是不断更新蛇位置,此外每更新一次还需要判断蛇与否遇到边界,与否遇到自己身子,与否吃到豆子等。

其流程图如下图所示:

 

 

 

 

 

第六章详细设计

一、对象模型设计

1、寻找规律,建立对象模型:

一方面从物理角度来分析蛇得运动规律。

它是蠕动,像水同样流动。

她有个特性就是身体每一种点都通过她头部所在点,她每一种时刻骨节所要运动目地是她前一种骨节所在位置。

不难看出,其中对象模型为

蛇,骨骼,骨节,头

抽象接口为

蛇,骨骼,骨节,头,图中豆子

2、构造图:

接口构造图

骨骼骨骼

对象构造图

 

3、给接口添加行为:

图元(GraphicObject)

绘画:

进行图元自身绘画操作

当前矩形:

得到图元当前所在矩形,也可考虑使用region,这样使得对图元范畴得描述更加详细。

骨节(Condyle)

前一种骨节:

提供前序访问

后一种骨节:

提供后序访问

流动:

进行骨节运动诡计得计算。

骨骼(Cadre)(管理骨节链)

得到头:

得到蛇头

得到尾:

得到蛇尾

新增骨节:

在骨节链中新增骨骼

删除骨节:

在骨节链中删掉指定骨节

头(head)

方向:

可以设定和访问当前运动方向。

蛇(Snake)

增长:

蛇进行自身得增长

4、完善模型,引入访问者模式

存在问题:

当前是由详细骨骼对象来负责图元绘画以及解决流动,而骨骼只是管理骨节,没有提供任何访问骨节办法,咱们应当如何访问骨节呢?

例如咱们要每个骨节画出自己形态,咱们也许会这样做。

在骨骼上提供一种绘画办法,然后通过遍历骨节链,调用每个骨节绘画办法。

这样似乎可以解决问题。

那么,咱们要进行骨节流动计算呢?

咱们再在骨骼上提供流动办法,然后同样遍历骨节,调用每个流动办法。

咱们要是加入记录骨节个数功能呢?

咱们要是加入其她需要遍历骨骼办法呢?

……

这样做缺陷是什么?

相似代码有多份

如果骨节访问构造发生变化,后果会如何?

有新功能需要遍历骨节链该怎么办?

这样会迫使咱们拷贝代码。

解决办法,引入访问者模式:

新增长接口如下:

加入行为:

访问者:

(空,无办法,属性)

被访问者:

接受访问者

骨节访问者:

继承自访问者

访问骨节

 

5、完整构造图:

 

二、食物及蛇状态初始化及食物浮现 

(一)、程序初始化 

               ——————全局变量 

全局变量:

     是指在函数之外定义变量,其作用范畴是从定义位置开始到源文献结束为止,其间函数

     都可以使用 

int a,b ;

f1(intc)

{

intd,e;

}

inti;

main()

{

intm,n;

全局变量a、b作用范畴,c作用范畴,d、e作用范畴 

 

(二)、程序初始化 

            —————构造体定义 

蛇构造体定义:

          每一节蛇坐标表达蛇移动方向表达蛇生命表达蛇节数表达

食物构造体定义:

          食物坐标表达食物有无表达 

(三)、程序初始化 

         —————图形界面初始化 

intgd=DETECT,gm;

initgraph(&gd,&gm,”c:

\\Win-TC”); 

 

(四)、游戏边框绘制(Draw函数) 

开始画面,左上角坐标为(50,40)

右下角坐标为(610,460)围墙 

库函数rectangle(left,top,right,bottom); 

(50,40) 

(610,460) 

(60,50) 

(600,450) 

(五)、Gameplay()函数:

 

                 ———构造体变量使用 

需要浮现新食物:

food。

yes=1;/*1表达需要浮现、0表达已存在*/

蛇状态:

snake。

life=0;/*0表达活着、1表达死亡*/

蛇默认(初始)运动方向:

snake。

direction=?

蛇默认(初始)节数:

snake。

node=2;      

蛇默认(初始)坐标:

  snake。

x[0]=?

;snake。

y[0]=?

;/*蛇头*/

  snake。

x[1]=90;snake。

y[1]=100;/*蛇身*/ 

注意构造体变量成员引用格式:

   <构造体变量>。

<成员> 

(六)、Gameplay()函数:

 

                    —————食物浮现 

判断与否需要浮现食物——判断food。

yes值

   1:

                 /*需要浮现新食物*/

      随机产生食物坐标,并使坐标能被十整除

 /*食物随机浮现后必要让食物可以在整格内,这样才可以让蛇吃到*/

        变化food。

yes状态:

 

0:

             /*显示食物*/     

  画出食物 

蛇运动:

先自由移动,用方向键控制蛇方向。

三、游戏运营中设计思想:

1、蛇自由移动:

在没有任何按键时候,蛇按照初始方向向前移动;

2、方向键控制蛇移动方向:

用方向键控制蛇构造体里面方向成员。

同步如果不浮现蛇死亡或者按ESC键,咱们可以永远玩游戏。

永远玩游戏这里将用到一种什么语句?

 

永循环

while

(1) 

while(bioskey

(1)==0)表达无键盘输入

 

Gameplay()程序构造 

 

while

(1)

  while(bioskey

(1)==0)

     {          

     蛇身、蛇头坐标变化

          画出蛇,并使蛇运动

   }  /*endwhile(!

bioskey

(1))*/

 监听方向键及ESC键

} /*endwhile*/ 

判断与否需要浮现食物,并进行相应操作 

食物及蛇状态初始化

 

3、蛇移动 

移动思想:

(1)蛇身、蛇头坐标变化

    蛇身:

将蛇第二节在屏幕中坐标移动到第一

               节,第三节中坐标节移动到第二节……  

    蛇头:

随着方向键走。

(2)蛇向前运动:

    画出蛇,延时(gamespeed),并用用背景色去除

    蛇最后一节

 

4、蛇坐标变化 

for(i=snake。

node-1;i>0;i--)

{

    snake。

x[i]=snake。

x[i-1];

    snake。

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、判断蛇与否撞击自己,如果撞击自己游戏就结束(调用gameover()函数,在程序外面定义gameover()函数,同步蛇生命成员为1;

2、判断蛇与否撞击墙壁,如果撞击墙边游戏就结束(调用gameover()函数),同步蛇生命成员为1;

3、判断蛇与否吃到食物,如果吃到食物,先把食物擦除,蛇长度加1,食物判断变量food。

yes=1,分数加10,输出分数(调用显示分数函数printscore(),在程序外面定义printscore()函数);

 

判断蛇与否撞击自己 

for(i=3;i

node;i++)

{

           if(snake。

x[i]==snake。

x[0]&&snake。

y[i]==snake。

y[0])

           {

                GameOver();

                snake。

life=1;

                break;

           }

}

 

判断蛇与否撞击墙壁 

判断蛇头坐标与否撞击墙壁

    若撞击,调用GameOver();

    并将蛇状态设立为1

     

判断蛇与否吃到食物 

判断蛇头与食物坐标与否相似

相似:

   擦除食物

   蛇身体长一节

   变化food。

yes状态

   score增长10

   输出新得分:

PrScore();

Gameover()函数 

使用到库函数:

cleardevice()

          /*图形模式下清除屏幕上内容*/

settextstyle();

        /*设立图形模式下字符显示字体、方向和大小*/

outtextxy();

        /*图形模式下在x,y坐标位置显示一行字符串*/

 

Printscore()函数 

用到库函数:

  setfillstyle(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)

     {

           判断与否需要浮现食物

        蛇身、蛇头坐标变化

           判断蛇与否撞击自己

           判断蛇与否撞击墙壁

           if(snake。

life==1)break;

           判断蛇与否吃到食物       

        画出蛇,并使蛇运动

      }/*endwhile(!

bioskey

(1))*/

    监听方向键及ESC键

 } /*endwhile

(1)*/

}

 

第七章调试及测试成果与分析

调试(debugging)是指去掉程序中错误(普通被称为bugs)过程。

一种错误也许非常简朴,例如拼错一种单词或者漏掉一种分号;也也许比较复杂,例如使用一种指向并不存在地址指针。

无论错误复杂限度如何,掌握对的调试办法都能使程序员受益匪浅。

  运营贪食蛇程序时会有各种因素使它不能运营,这些因素可以分为如下4种基本类型:

   

(1)程序中有死循环;

   

(2)程序运营时间比所盼望长;

   (3)程序在等待某些输入信息,并且直到输入对的后才会继续运营;

   (4)程序设计目就是为了延迟一段时间,或者暂停执行。

   在讨论了因未知因素而挂起程序调试技巧后,将逐个分析上述每种状况。

   调试那些因未知因素而不能运营程序是非常困难。

也许耗费了很长时间编写一种程序,并努力保证每条代码都精确无误,也也许只是在一种本来运营良好程序上作了一种很小修改,然而,当运营程序时屏幕上却什么也没有显示。

有时能得到一种错误成果,或者某些成果,面对长长源代码,刚刚开始主线不懂得错在哪里。

   在开始调试贪食蛇程序时,一方面检查一下程序构造,然后再按执行顺序依次查看程序各个某些,看看它们与否能对的运营。

   在本次设计中,主程序包括3个函数调用——int()、draw()和gameplay(),在调试时,先检查函数int()与否把控制权返回给了主程序。

为此,在调用函数int()语句背面加上exit()命令,也可以用注释符把对函数draw()和gameplay()调用括起来,然后重新编译并运营这个程序。

   注意:

通过调试程序(debugger)也可以做到这一点,然而上述办法是一种很老式调试办法。

调试程序是一种程序,它作用是让程序员可以观测程序运营状况、程序当前运营行号、变量值,等等。

   此时将看到函数int()与否将控制权返回给了主程序——如果该程序运营并退出,可以判断是程序其他某些使程序挂起。

可以用这种办法测试程序每一某些,直到发现使程序挂起那一某些,然后集中精力修改相应函数。

   有时,状况会更复杂某些。

例如,使程序挂起函数自身是完全正常,问题也许出在该函数从别地方得到了某些错误数据。

这时,你就要检查该函数所接受所有值,并找出是哪些值导致了错误操作。

   本次设计运营程序浮现过死循环现象,机器将无多次地执行同一段代码。

这是由于程序进行循环判断条件永远为真,或者使程序退出循环判断条件永远为假。

修改判断条件后即对的运营。

在调试游戏速度时候,曾经一运营程序画面就直接跳至“gameover”,通过带入法测试,发现是运营速度数值给过小,加大数值后逐运营正常。

技巧:

监视函数是调试程序出众功能之一。

尚有就是带入法,用于判断某某些函数逻辑对错。

 

第八章结论

在刚刚拿到课程设计题目时候,原本觉得贪食蛇这样一款已经进一步人心老游戏会比较容易做,但真正开始做时候才发现不是那么简朴。

在编码时候遇到了不少困难,其中有粗心导致输入错误,也有程序逻辑上浮现错误。

自己知识局限性,也给编程带来了不小阻碍。

但是,当端正了态度后来,通过认真细致分析、学习,在最后顺利完毕了课程设计。

在本次课程设计中,我从指引教师身上学到了诸多东西。

教师认真负责工作态度,严谨治学精神和深厚理论水平都使我收益匪浅。

她无论在理论上还是在实践中,都给与我很大协助,使我得到不少提高这对于我后来工作和学习均有一种巨大协助,感谢她耐心辅导。

此外,在游戏开发过程中廖远教师也给于我很大协助,协助解决了不少难点,还帮我提出了不少好建议,使得游戏能及时开发完毕,尚有所有同窗同样给与我不少协助,这里一并表达感。

 

参照文献

[1]黄明等。

21世纪进阶辅导C语言程序设计[M]。

大连理工大学出版社,

[2]马

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 国外设计风格

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

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