软件开发生产实习报告文档格式.docx
- 文档编号:16133704
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:32
- 大小:32.76KB
软件开发生产实习报告文档格式.docx
《软件开发生产实习报告文档格式.docx》由会员分享,可在线阅读,更多相关《软件开发生产实习报告文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
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);
maskDC,0,0,SRCAND);
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;
imgList.Create(cx,cy,ILC_COLOR24|ILC_MASK,nInitial,0))
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);
SetHorMotion(0);
nMeMotion=GetKey(VK_UP);
if(nMeMotion==1)
SetVerMotion
(1);
nMeMotion=GetKey(VK_DOWN);
SetVerMotion(-1);
nMeMotion=GetKey(VK_RIGHT);
SetHorMotion
(1);
nMeMotion=GetKey(VK_LEFT);
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)!
Enemy*pEnemy=(Enemy*)m_ObjList[enEnemy].GetNext(ePos1);
CRectmRect=pEnemy->
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"
PlaneGame.h"
PlaneGameDoc.h"
PlaneGameView.h"
MyPlane.h"
Enemy.h"
Enemy1.h"
Bomb.h"
Ball.h"
Explosion.h"
Nuke.h"
Newbomb.h"
Setlvl.h"
mmsystem.h"
#include<
atlimage.h>
#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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 生产 实习 报告