C++實(shí)現(xiàn)打地鼠游戲設(shè)計(jì)
本文實(shí)例為大家分享了C++實(shí)現(xiàn)打地鼠游戲的具體代碼,供大家參考,具體內(nèi)容如下
代碼:
#include <afxwin.h> class CMyWnd :public CFrameWnd { private: CDC *m_pmdc; CBitmap *m_pbitmap[5]; CRect myRect[6]; CString picPath[5]; int hit; BOOL m_state[6]; int counter; int num; int hammer_x; int hammer_y; public: CMyWnd() { Create(NULL,"Third App"); CClientDC dc(this); picPath[0]="../image/background.bmp"; picPath[1]="../image/mouse1.bmp"; picPath[2]="../image/mouse2.bmp"; picPath[3]="../image/hammer1.bmp"; picPath[4]="../image/hammer2.bmp"; // myRect[0].SetRect(30,10,130,110); myRect[1].SetRect(190,10,290,110); myRect[2].SetRect(340,10,440,110); myRect[3].SetRect(30,140,130,240); myRect[4].SetRect(190,140,290,240); myRect[5].SetRect(340,140,440,240); // hit=0; for(int i=0;i<6;i++) m_state[i]=FALSE; counter=0; hammer_x=hammer_y=0; num=0; //不顯示鼠標(biāo) //ShowCursor(FALSE); m_pmdc=new CDC; for(int i=0;i<5;i++) { m_pbitmap[i]=new CBitmap; m_pbitmap[i]->m_hObject=(HBITMAP)::LoadImage(NULL,picPath[i], IMAGE_BITMAP, 0,0,LR_LOADFROMFILE); } m_pmdc->CreateCompatibleDC(&dc); MoveWindow(200,20,480,320); this->SetTimer(1,1000,NULL); } void myPait(int flag); ~CMyWnd() { for(int i=0;i<5;i++) delete m_pbitmap[i]; delete m_pmdc; } DECLARE_MESSAGE_MAP() afx_msg void OnLButtonUp(UINT nFlags, CPoint point); // afx_msg void OnPaint(); afx_msg void OnTimer(UINT_PTR nIDEvent); afx_msg void OnMouseMove(UINT nFlags, CPoint point); // afx_msg void OnPaint(); }; class CMyApp:public CWinApp { public: BOOL InitInstance(); }; BOOL CMyApp::InitInstance() { CMyWnd *pf=new CMyWnd; pf->ShowWindow(m_nCmdShow); this->m_pMainWnd=pf; return TRUE; } CMyApp FirstApp;BEGIN_MESSAGE_MAP(CMyWnd, CFrameWnd) ON_WM_LBUTTONUP() // ON_WM_PAINT() ON_WM_TIMER() ON_WM_MOUSEMOVE() // ON_WM_PAINT() END_MESSAGE_MAP() void CMyWnd::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: 在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值 counter++; m_state[num]=FALSE; num=rand()%6; m_state[num]=TRUE; for(int i=0;i<6;i++) { if(myRect[i].PtInRect(point)&&m_state[i]) { hit++; } else hit=0; } CFrameWnd::OnLButtonUp(nFlags, point); } void CMyWnd::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值 CClientDC dc(this); // device context for painting m_pmdc->SelectObject(m_pbitmap[0]); dc.BitBlt(0,0,480,320,m_pmdc,0,0,SRCCOPY); m_pmdc->SelectObject(m_pbitmap[3]); dc.BitBlt(hammer_x,hammer_y,148,148,m_pmdc,0,0,SRCAND); m_pmdc->SelectObject(m_pbitmap[4]); dc.BitBlt(hammer_x,hammer_y,148,148,m_pmdc,0,0,SRCPAINT); for(int i=0;i<6;i++) { if(m_state[i]) { m_pmdc->SelectObject(m_pbitmap[1]); dc.BitBlt(myRect[i].left,myRect[i].top,100,100,m_pmdc,0,0,SRCAND); m_pmdc->SelectObject(m_pbitmap[2]); dc.BitBlt(myRect[i].left,myRect[i].top,100,100,m_pmdc,0,0,SRCPAINT); } } if(hit>=3) { KillTimer(1); MessageBox("你贏了!"); } if(counter>=10) { KillTimer(1); MessageBox("你輸了!"); } CFrameWnd::OnTimer(nIDEvent); } void CMyWnd::OnMouseMove(UINT nFlags, CPoint point) { // TODO: 在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值 hammer_x=point.x; hammer_y=point.y; CFrameWnd::OnMouseMove(nFlags, point); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解讀堆排序算法及用C++實(shí)現(xiàn)基于最大堆的堆排序示例
把待排序的數(shù)組構(gòu)造出最大堆是進(jìn)行堆排序操作的基本方法,這里將帶大家來(lái)解讀堆排序算法及用C++實(shí)現(xiàn)基于最大堆的堆排序示例,首先從堆排序的概念開始:2016-06-06C++變量存儲(chǔ)的生命周期與作用域?qū)嵗a精講
這篇文章主要介紹了C++變量存儲(chǔ)的生命周期與作用域,從創(chuàng)建到消亡的完整過(guò)程,例如人從出生到死亡的整個(gè)過(guò)程就是一個(gè)生命周期。本文將通過(guò)示例為大家詳細(xì)講講,感興趣的可以學(xué)習(xí)一下2022-10-10C語(yǔ)言實(shí)現(xiàn)可排序通訊錄的示例代碼
本文主要介紹了C語(yǔ)言實(shí)現(xiàn)可排序通訊錄的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11C++指針和數(shù)組:字符和字符串、字符數(shù)組的關(guān)聯(lián)和區(qū)別
字符串是一種重要的數(shù)據(jù)類型,但是c語(yǔ)言并沒(méi)有顯示的字符串?dāng)?shù)據(jù)類型,因?yàn)樽址宰址A康男问匠霈F(xiàn)或者存儲(chǔ)于字符數(shù)組中。在C++標(biāo)準(zhǔn)模板庫(kù)(STL)中提供了string類,實(shí)現(xiàn)了對(duì)字符串的封裝。2022-12-12VC++ loadlibrary()加載三方dll失敗, 返回錯(cuò)誤碼:126的解決方法
今天在編寫VC++ loadlibrary()加載三方dll是總是失敗,并且返回錯(cuò)誤碼:126,這里就為大家分享一下具體的解決方法2021-03-03C語(yǔ)言實(shí)現(xiàn)支持動(dòng)態(tài)拓展和銷毀的線程池
這篇文章主要為大家介紹了C語(yǔ)言實(shí)現(xiàn)支持動(dòng)態(tài)拓展和銷毀的線程池,感興趣的小伙伴們可以參考一下2016-01-01C語(yǔ)言詳細(xì)實(shí)現(xiàn)猜拳游戲流程
在學(xué)習(xí)了循環(huán)、分支、和函數(shù)之后,可以寫一些簡(jiǎn)單的小游戲來(lái)給自己的編程之路增添一份樂(lè)趣。不僅提升了編碼能力,還可以邊學(xué)邊玩,簡(jiǎn)直妙哉妙哉2022-05-05