飞机大战实训(2)

2019-02-21 00:54

信息科学与工程学院软件实践实训报告

// C飞机大战View 构造/析构

C飞机大战View::C飞机大战View() { // TODO: 在此处添加构造代码 }

C飞机大战View::~C飞机大战View() { }

BOOL C飞机大战View::PreCreateWindow(CREATESTRUCT& cs) { // TODO: 在此处通过修改 // CREATESTRUCT cs 来修改窗口类或样式 return CView::PreCreateWindow(cs); }

// C飞机大战View 绘制

void C飞机大战View::OnDraw(CDC* /*pDC*/) { C飞机大战Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 }

// C飞机大战View 打印

BOOL C飞机大战View::OnPreparePrinting(CPrintInfo* pInfo) { // 默认准备 return DoPreparePrinting(pInfo); }

void C飞机大战View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {

6

信息科学与工程学院软件实践实训报告

// TODO: 添加额外的打印前进行的初始化过程 }

void C飞机大战View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: 添加打印后进行的清理过程 }

// C飞机大战View 诊断

#ifdef _DEBUG

void C飞机大战View::AssertValid() const { CView::AssertValid(); }

void C飞机大战View::Dump(CDumpContext& dc) const { CView::Dump(dc); }

C飞机大战Doc* C飞机大战View::GetDocument() const // 非调试版本是内联的 { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(C飞机大战Doc))); return (C飞机大战Doc*)m_pDocument; }

#endif //_DEBUG

// C飞机大战View 消息处理程序

int C飞机大战View::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码 SetTimer(1, 20, 0); CMyPlane::LoadImageW();//--为什么不能放在OnTimer里面??? CEnemy::LoadImage(); CExplosion::LoadImage(); CBomb::LoadImage();

7

信息科学与工程学院软件实践实训报告

CBall::LoadImage(); return 0; }

void C飞机大战View::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值

SHORT key; key=GetKeyState(VK_DOWN); if(key&0x80) plane.SetVerMotion(1); key=GetKeyState(VK_RIGHT); if(key&0x80) plane.SetHorMotion(1); key=GetKeyState(VK_LEFT); if(key&0x80) plane.SetHorMotion(-1); key=GetKeyState(VK_UP); if(key&0x80) plane.SetVerMotion(-1);

/*CDC MemDC;*///定义一个显示设备对象 static int life=50; static int g=1; static int score=0;

//CBitmap MemBmap;//定义一个位图对象 CDC *pDC=GetDC(); CRect rect; GetClientRect(&rect);

CBrush m_brushBackground,m_brushBackground1,m_brushBackground2,brush,brush1; CBitmap bmp,bnp,bnp1; bmp.LoadBitmap(IDB_Beijing); ///加载位图 m_brushBackground.CreatePatternBrush(&bmp); ///创建位图画刷 pDC->FillRect(rect,&m_brushBackground); ///用背景画刷填充区域

8

信息科学与工程学院软件实践实训报告

//添加文字 pDC->SetBkMode(TRANSPARENT);//设置文字背景透明 pDC->SetTextColor(RGB(255,0,0));////设置文字颜色为黄色 CFont font; font.CreateFont(

0, // nHeight 0, // nWidth

0, // nEscapement 0, // nOrientation FW_NORMAL, // nWeight FALSE, // bItalic FALSE, // bUnderline 0, // cStrikeOut ANSI_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality

DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily _T(\宋体\

); // lpszFacename CFont *oldFont=pDC->SelectObject(&font); //pDC->SelectObject(oldFont); CString Life; //显示生命值 Life.Format(L\生命:%d\ pDC->TextOutW(rect.Width()/2-200,10,Life); CString Guan; //显示生命值 Guan.Format(L\关数:%d\ pDC->TextOutW(rect.Width()/2-300,10,Guan); CString kan; //显示生命值 kan.Format(L\注意:上↑,下↓,左←,右→,开火space,暂停ctrl\ pDC->TextOutW(rect.Width()/2-8,10,kan); CString grade; //显示分数 grade.Format(L\分数:%d\ pDC->SelectObject(oldFont); pDC->TextOutW(rect.Width()/2-100,10,grade); plane.Draw(pDC, TRUE);//画出战机 //添加爆炸效果 POSITION posExplosion=NULL; for(posExplosion=listExplosion.GetHeadPosition();posExplosion!=NULL; ) { CExplosion *pExplosion=(CExplosion*)listExplosion.GetNext(posExplosion);

9

信息科学与工程学院软件实践实训报告

pExplosion->Draw(pDC,false); } if(score>=0&&score<=300) { g=1;

if (listEnemy.GetCount()<=8)//画出敌机 listEnemy.AddTail(new CEnemy()); }

if(score>=110&&score<=600) { g=2;

if (listEnemy.GetCount()<=10)//画出敌机 listEnemy.AddTail(new CEnemy()); }

if(score>610&&score<=1200) { g=3;

if (listEnemy.GetCount()<=13)//画出敌机 listEnemy.AddTail(new CEnemy()); }

if(score>=1210&&score<=1800) { g=4;

if (listEnemy.GetCount()<=16)//画出敌机 listEnemy.AddTail(new CEnemy()); }

if(score>=1810&&score<=3000) { g=5;

if (listEnemy.GetCount()<=20)//画出敌机 listEnemy.AddTail(new CEnemy()); }

POSITION pos,oldpos; pos=listEnemy.GetHeadPosition(); while(pos) { oldpos=pos; CEnemy *pEnemy=(CEnemy *)listEnemy.GetNext(pos);//记录pos的位置,pos往下移 CRect rect; if(!rect.IntersectRect(pEnemy->GetRect(),plane.GetRect()))//敌机子弹速度 { int x=rand()P; if(x==0)

10


飞机大战实训(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:学日语-中日交流标准日本语单词初级下册

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: