软件开发生产实习报告.docx
- 文档编号:3228129
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:32
- 大小:32.76KB
软件开发生产实习报告.docx
《软件开发生产实习报告.docx》由会员分享,可在线阅读,更多相关《软件开发生产实习报告.docx(32页珍藏版)》请在冰豆网上搜索。
软件开发生产实习报告
软件开发生产
实习报告
姓名
王子华
学号
1201050632
班级
信管2012-1
项目名称
飞机大战
实习地点
J13-232
实习时间
9.20-9.30
实习成绩
指导教师签字
信息科学与工程学院
2014年10月14日
软件开发生产实习报告
1.实习目的
1.1使学生全面了解软件项目实施的过程,理解软件企业对于程序员的基本素质和技术能力要求。
1.2使学生掌握C++及Window程序设计的基本技术,能够运用MFC技术及其开发环境进行小型项目的开发。
1.3重点培养学生的独立创新精神和查阅资料能力,提高其口头和书面的沟通能力。
1.4使学生掌握快速学习新知识、新技术方法,培养良好的分析问题和解决问题的能力
1.5重点提高学生的编程能力,使学生建立正确的编程理念,养成规范的编程习惯。
2.实习计划
我们在之前学习过C语言、C++等,但是传统的理论学习对于这种操作性、适用性很强的技能来说是纸上谈兵,所以,为了深化对这些代码、语言以及开发的了解,我们开始了这次实训,也希望经过这次实训,让我们更加明白在实际应用中需要具备的能力
3.实习过程
3.1技术准备
1.透明贴图功能的实现
CDCimgDC,maskDC;//定义存储位图的位图设备描述表imgDC和存储掩码位图的掩码位图
CRectrcWnd,rcPic;
imgDC.CreateCompatibleDC(NULL);//初始化设备描述表
maskDC.CreateCompatibleDC(NULL);//初始化设备描述表
CBitmapbmpMask;
BITMAPbm;
m_bmpSample.GetBitmap(&bm);
GetClientRect(rcWnd);
rcPic.left=(rcWnd.Width()-bm.bmWidth)/2;
rcPic.right=rcPic.left+bm.bmWidth;
rcPic.top=(rcWnd.Height()-bm.bmHeight)/2;
rcPic.bottom=rcPic.top+bm.bmHeight;
bmpMask.CreateBitmap(bm.bmWidth,bm.bmHeight,1,1,NULL);//初始化掩码位图
CBitmap*pOldBmp=imgDC.SelectObject(&m_bmpSample);//存储位图至位图设备描述表
CBitmap*pOldMaskBmp=maskDC.SelectObject(&bmpMask);//存储掩码位图至掩码位图
imgDC.SetBkColor(RGB(255,255,0));//设置位图设备描述表的背景色为透明色
maskDC.BitBlt(0,0,bm.bmWidth,bm.bmHeight,&imgDC,0,0,SRCCOPY);
dc.BitBlt(rcPic.left,rcPic.top,bm.bmWidth,bm.bmHeight,&imgDC,0,0,SRCINVERT);
dc.BitBlt(rcPic.left,rcPic.top,bm.bmWidth,bm.bmHeight,&maskDC,0,0,SRCAND);
dc.BitBlt(rcPic.left,rcPic.top,bm.bmWidth,bm.bmHeight,&imgDC,0,0,SRCINVERT);
imgDC.SelectObject(pOldBmp);
maskDC.SelectObject(pOldMaskBmp);
bmpMask.DeleteObject();
pOldBmp=NULL;
pOldMaskBmp=NULL;
DeleteDC(imgDC);
DeleteDC(maskDC);
//游戏对象中添加透明贴图
BoolGameObject:
:
LoadImage(CImageList&imgList,UINTbmpID,COLORREFcrMask,intcx,intcy,intnInitial)//加载图像
{
CBitmapbmp;
if(!
bmp.LoadBitmap(bmpID))
returnFALSE;
if(!
imgList.Create(cx,cy,ILC_COLOR24|ILC_MASK,nInitial,0))
returnFALSE;
imgList.Add(&bmp,crMask);
returnTRUE;
}
2.设置定时器
voidCPlaneGameView:
:
OnTimer(UINT_PTRnIDEvent)
{
//刷新游戏帧画面:
在内存DC上绘图
if(m_pMe!
=NULL)
{
if(m_pMe->CD>0)
{
m_pMe->CD--;
}
}
UpdateFrame(m_pMemDC);//刷新句柄
AI();
CView:
:
OnTimer(nIDEvent);
}
SetTimer(1,30,NULL);//设置每30毫秒刷新一次
定时器告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性出发程序。
通常由两种方法来实现:
发送WM_TIMER消息和调用应用程序定义的回调函数。
3.获取键盘信息
GetKey(intnVirtKey)
该函数检取指定虚拟键的状态。
该状态指定此键是UP状态,DOWN状态,还是被触发的(开关每次按下此键时进行切换)
for(i=0;i<4;i++)
{
intnMeMotion=0;
m_pMe->SetVerMotion(0);
m_pMe->SetHorMotion(0);
nMeMotion=GetKey(VK_UP);
if(nMeMotion==1)
m_pMe->SetVerMotion
(1);
nMeMotion=GetKey(VK_DOWN);
if(nMeMotion==1)
m_pMe->SetVerMotion(-1);
nMeMotion=GetKey(VK_RIGHT);
if(nMeMotion==1)
m_pMe->SetHorMotion
(1);
nMeMotion=GetKey(VK_LEFT);
if(nMeMotion==1)
m_pMe->SetHorMotion(-1);
}
4.碰撞检测
POSITIONmPos1=NULL,mPos2=NULL;
for(mPos1=m_ObjList[enBomb].GetHeadPosition();(mPos2=mPos1)!
=NULL;)
{
Bomb*pBomb=(Bomb*)m_ObjList[enBomb].GetNext(mPos1);
CRectbRect=pBomb->GetRect();
POSITIONePos1=NULL,ePos2=NULL;
for(ePos1=m_ObjList[enEnemy].GetHeadPosition();(ePos2=ePos1)!
=NULL;)
{
Enemy*pEnemy=(Enemy*)m_ObjList[enEnemy].GetNext(ePos1);
CRectmRect=pEnemy->GetRect();
CRecttmpRect;
使CRect等于两个现有矩形的交
如果交不为空,则返回非零值;否则,如果交为空则返回0。
3.2项目实施
3.2.1功能需求
1.敌机从游戏区域的上下两端进入,左右位置随机
2.由计算机控制敌机自动向战机发动攻击
3.导弹或炸弹本身的矩形区域和敌机或战机的矩形区域相交时,表示导弹或炸弹射中了战机或敌机
4.导弹遇见炸弹时发生爆炸,炸弹被炸毁,导弹和炸弹消失
5.导弹遇见敌机时发生爆炸,敌机被炸毁,导弹和敌机消失,分数增加
6.炸弹遇到战机时发生爆炸,战机被炸毁,炸弹消失,战机减去生命值,战机生命值为0时,生命数减1,生命数为0时,游戏结束
3.2.2总体设计
游戏功能模块:
1.战机,敌机,爆炸效果,战机导弹以及敌机炮弹的贴图模块
2.战机方向,速度,键盘控制模块
3.战机导弹方向,速度,数量控制模块
4.敌机方向,数量,速度控制模块
5.敌机子弹方向,速度和数量控制模块
6.敌机,子弹以及战机和导弹碰撞检测和爆炸模块
7.战机生命值,得分以及游戏结束控制模块
游戏规则子系统
模块名称
功能简述
人工智能
人机对战规则的实现
游戏子系统
模块名称
功能简述
应用程序对象
游戏程序的加载、游戏对象的绘制、游戏规则的调用、玩家的键盘事件获取
游戏对象
各个游戏对象的抽象父类
战机对象
战机类
敌机对象
敌机类
导弹对象
导弹类
炸弹对象
炸弹类
爆炸对象
爆炸类
文字对象
文字类
主要功能是在PlaneView类中,OnTimer函数中实现,将各个类调用,随机产生敌机,子弹的输出,爆炸的实现等等。
它的实现图可以如下实现:
3.2.3详细设计与编码
//PlaneGameView.cpp:
CPlaneGameView类的实现
#include"stdafx.h"
#include"PlaneGame.h"
#include"PlaneGameDoc.h"
#include"PlaneGameView.h"
#include"MyPlane.h"
#include"Enemy.h"
#include"Enemy1.h"
#include"Bomb.h"
#include"Ball.h"
#include"Explosion.h"
#include"Nuke.h"
#include"Newbomb.h"
#include"Setlvl.h"
#include"mmsystem.h"
#include
#pragmacomment(lib,"WINMM.LIB")
#ifdef_DEBUG
#definenewDEBUG_NEW
#endif
staticintinit;
intlvl[51]={550,1100,2200,2933,3758,4583,5408,6233,7058,7883,8708,9533,10358,11183,12008,12833,13658,14483,15308,16133,16958,17783,18608,19433,20258,21083,21908,22733,23558,24383,25208,26033,26858,27683,28508,29333,30158,30983,31808,32633,33458,34283,35108,35933,36758,37583,38408,39233,40058,40883,41708};
//CPlaneGameView
IMPLEMENT_DYNCREATE(CPlaneGameView,CView)
BEGIN_MESSAGE_MAP(CPlaneGameView,CView)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 生产 实习 报告