软件开发生产实习报告范本.docx

上传人:b****1 文档编号:1747645 上传时间:2022-10-23 格式:DOCX 页数:17 大小:166.39KB
下载 相关 举报
软件开发生产实习报告范本.docx_第1页
第1页 / 共17页
软件开发生产实习报告范本.docx_第2页
第2页 / 共17页
软件开发生产实习报告范本.docx_第3页
第3页 / 共17页
软件开发生产实习报告范本.docx_第4页
第4页 / 共17页
软件开发生产实习报告范本.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

软件开发生产实习报告范本.docx

《软件开发生产实习报告范本.docx》由会员分享,可在线阅读,更多相关《软件开发生产实习报告范本.docx(17页珍藏版)》请在冰豆网上搜索。

软件开发生产实习报告范本.docx

软件开发生产实习报告范本

 

软件开发生产

实习报告

 

姓名

李瑜

学号

1201050614

班级

信息管理与信息系统2012-1

项目名称

飞机大战

实习地点

J13-232

实习时间

2014.9.20-2014.9.30

实习成绩

指导教师签字

 

信息科学与工程学院

2014年10月15日

 

软件开发生产实习报告

 

1.实习目的

1.1使学生全面了解软件项目实施的过程,理解软件企业对于程序员的基本素质和技术能力要求。

1.2使学生掌握C++及Window程序设计的基本技术,能够运用MFC技术及其开发环境进行小型项目的开发。

1.3重点培养学生的独立创新精神和查阅资料能力,提高其口头和书面的沟通能力。

1.4使学生掌握快速学习新知识、新技术方法,培养良好的分析问题和解决问题的能力

1.5重点提高学生的编程能力,使学生建立正确的编程理念,养成规范的编程习惯。

2.实习计划

一、9.20-9.21

1、认识MFC的基本功能,实现在windows窗体上的贴图功能;

2、初步利用brush绘制背景的颜色,进而掌握添加背景图片的技术;

3、设置定时器进行刷屏;

二、9.22-9.25

1、把握游戏的整体架构,了解各个类之间的继承与多态关系,对父类进行编码;

2、对游戏对象进行透明贴图,并实现具体的功能;

三.9.26-9.28

1、建立各个游戏对象的链表,并定义对象;

2、实现用键盘控制战机的移动,实现战机与战机导弹的链接;

3、实现其他游戏对象的移动与速度的设定;

4、实现战机导弹与敌机、子弹与战机矩形区域的重合的功能,并清除链表中需要清除的对象;

5、释放定时器和内存;

四、9.29-9.30

1、与游戏的功能与界面进行完善,添加文字显示和生命条等;

2、对游戏进行调试与改进。

3.实习过程

4.1技术准备

(1)、透明贴图函数

LoadImage(CImageList& imageList,UINT bmpID,COLORREF crMask,int cx,int cy,int nInitial) 

//可用于从BMP文件加载位图,主要用于将图片放入图像链表imageList中。

 

m_Images.Draw(pDC,0,m_ptPos,ILD_TRANSPARENT)  

//此函数主要是将链表中的图像显示在pDC这个句柄中。

(2)、CObList链表 

CObList list_ball;  

//主要是定义一个CObList类的一个链表对象用于存储所有的此种相关对象,易于后续的添加删除和提取数据。

POSITION posball=NULL; //定义指针 

posBall=list_ball.GetHeadPosition();//指针读取头结点

pBall=(CBall*)list_ball.GetNext(posBall);//指针读取下一个结点 

(3)、设置定时器 

定时器告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序。

本程序中使用多个定时器,分别控制不同的功能。

使用SetTimer()函数设置定时器,设置系统间隔时间,在OnTimer()函数中实现响应定时器的程序。

(4)、双缓冲技术 

关于双缓冲技术主要就是利用缓存的原理进行将所有的东西都先存在一个缓冲得虚拟的区域,然后再一次性的将所有的虚拟缓存中的东西都放入实在的存储器中。

(5)、内存释放技术 

在此次实训项目中有太多的对象的生成和运用,造成了内存的极度的紧张,当游戏进行到一定的程度的时候就会出现内存溢出现象。

内存释放技术的实现主要是通过释放各个满足一定条件的对象和链表来实现的,list_bomb.RemoveAt(B2);//RemoveAt从列表中删除指定位置的元素deletepBomb;//删除敌机

(6)、获取矩形区域函数

CRectrc;//定义

GetClientRect(&rc);//获取其矩形区域

获取结果为:

rc.Width()//矩形区域的宽度rc.Height()//矩形区域的高度

CRecttmpRect;

tmpRect.IntersectRect(&bRect,eRect))//判断两个矩形是否有交接

4.2项目实施

4.2.1功能需求

1、战机数量为1,战机的位置可通过键盘进行控制。

可通过空格键控制战机进行发导弹,导弹具有一定的速度。

2、2、敌机出现的时间和位置均为随机,敌机的速度也是随机的,敌机发射子弹的时间也是随机的,子弹的发射具有延时性,子弹的速度具有随机性。

3、3、导弹和子弹及敌机碰撞爆炸同时销毁碰撞的物体,战机和子弹及敌机碰撞爆炸同时销毁碰撞的子弹及敌机,战机则判断生命,为0时销毁否则不销毁。

与此同时进行分数和生命的变化同时进行文本的显示提示。

4、4、背景图片的添加。

为游戏提供相关背景。

5、主要的攻击规则如下:

 

敌机可在战机的上方或者下方进行将子弹进行射向战机,同时战机也可根据玩家的指示进行向上或者向下进行发射导弹进行反攻。

6、主要的碰撞规则如下:

1)、导弹和敌机的矩形区域或子弹和敌机的矩形区域相交时,表示其相互发生碰撞表示其相互爆炸,销毁游戏对象。

2)、战机生命为0,战机被炸,战机被销毁,游戏结束。

3)、敌机被炸毁,将其进行销毁同时进行分数的相应的增加,并且出现文字提示。

7、实现对战机的生命的增减,战机基本生命值为5,战机射击增加生命值,当其被击中后其生命就-1,每销毁一架敌机加10分,销毁累计10架敌机,战机的生命值加一,生命为0时游戏结束。

8、实现控制战机速度的功能主要是用于在键盘控制战机位置时。

9、实现双缓冲技术进行解决刷屏时屏闪的问题。

4.2.2总体设计

1、系统模块划分

飞机大战游戏主要模块可以说是有几个重要的类组成的。

首先是老师给出的CGameObject类,以及在其派生下的BOMB,BALL,ENEMY,MYPLANE等等。

如图:

2、主要功能模块 

主要功能是在飞机大战View类中,OnTimer函数中实现,将各个类调用,随机产生敌机,子弹的输出,爆炸的实现等等。

它的实现图可以如下实现:

4.2.3详细设计与编码

#include"stdafx.h"

#include"飞机大战.h"

#include"飞机大战Doc.h"

#include"飞机大战View.h"

#include"MyPlane.h"

#include"explosion.h"

#include"ball.h"

#include"enemy.h"

#include"bomb.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

voidCMyView:

:

OnDraw(CDC*pDC)

{

CMyDoc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

}

voidCMyView:

:

OnTimer(UINTnIDEvent)

{

CDC*pDC=GetDC();

CRectrc;

GetClientRect(&rc);

//双缓存

CDCmemDC;//定义一个显示设备对象

CBitmapbmp;//定义一个位图对象

memDC.CreateCompatibleDC(NULL);//建立与屏幕显示兼容的内存显示设备

bmp.CreateCompatibleBitmap(pDC,rc.Width(),rc.Height());

CBitmap*oldBit=memDC.SelectObject(&bmp);

//设置背景图

CBitmapbitmap;

CBrushbrush;

bitmap.LoadBitmap(beijing);

brush.CreatePatternBrush(&bitmap);

CClientDCdc(this);

memDC.FillRect(&rc,&brush);

CRectrect;

GetClientRect(&rect);

//------------------------------

staticintlife=5;

staticintscore=0;

/****画战机******************************************/

if(pMyPlane!

=NULL)

{

pMyPlane->Draw(&memDC,0,rc);

memDC.SetBkMode(TRANSPARENT);//透明

memDC.SetTextColor(RGB(255,255,20));//文字颜色

memDC.TextOut(20,150,"分数:

");

memDC.TextOut(100,150,itoa(score,newchar,10));//itoa:

把int转为char字符串

memDC.TextOut(20,180,"剩余生命:

");

memDC.TextOut(150,180,itoa(life,newchar,10));

//显示生命线

CBrushbrush1;

brush1.CreateSolidBrush(RGB(255,0,0));

//创建画刷

memDC.SelectObject(brush1);

//选择画刷

memDC.Rectangle(rect.Width()/2-100,10,rect.Width()/2+life*60-100,

30);

}

else

{

memDC.SetBkMode(TRANSPARENT);

memDC.SetTextColor(RGB(255,255,20));

memDC.TextOut(300,300,"GAMEOVER");

}

/*******************添加战机导弹************************/

POSITIONposBomb=NULL;

posBomb=list_bomb.GetHeadPosition();

while(posBomb!

=NULL)

{

pBomb=(CBomb*)list_bomb.GetNext(posBomb);

pBomb->Draw(&memDC,0,rc);

}

/******************添加敌机*********************/

staticintn=0;

if(n<=0)

{

n=rand()%40;

list_enemy.AddTail(newCEnemy);

}

n--;

POSITIONpEnemy1=NULL,pEnemy2=NULL;

pEnemy1=list_enemy.GetHeadPosition();//GetHeadPosition返回列表中首元素的位置

while((pEnemy2=pEnemy1)!

=NULL)

{

pEnemy=(CEnemy*)list_enemy.GetNext(pEnemy1);

if(!

pEnemy->Draw(&memDC,0,rc))

{

list_enemy.RemoveAt(pEnemy2);

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

当前位置:首页 > 自然科学 > 天文地理

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

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