信息科学与工程学院软件实践实训报告
// 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
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库飞机大战实训(2)在线全文阅读。
相关推荐: