freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

課程設(shè)計(jì)報(bào)告——基于vc的俄羅斯方塊游戲設(shè)計(jì)報(bào)告(參考版)

2024-11-20 17:32本頁(yè)面
  

【正文】 8 參考文獻(xiàn) [1]《 Visual C++ 經(jīng)典游戲程序設(shè)計(jì) 》 羅偉堅(jiān) 編著 人民郵電出版社 2020 [2]《 Visual C++游戲編程基礎(chǔ)》 榮欣科技 著 電子工業(yè)出版社 2020。實(shí)踐是學(xué)習(xí)的重要途徑,我得進(jìn)步得益于一周來(lái)的實(shí)踐過(guò)程。比如對(duì)于 MFC 機(jī)制還有很多不懂得地方,對(duì)于程序的調(diào)試部分還是感到棘手等等??梢哉f(shuō)俄羅斯方塊是我做的第一個(gè)具備一定復(fù)雜度的程序。這次課程設(shè)計(jì)中,我遇到了不少的困難,首先是 MFC 機(jī)制的不熟悉。}//用菜單設(shè)置游戲級(jí)別,等級(jí)一void CMy_RectView::OnOptionLevel1() {m_iLevel = 0。m_iLarge = 30。3) ID_OPTION_ARE OnOptionArea358A3 ()六個(gè)等級(jí)的選擇和三個(gè)區(qū)域的選擇實(shí)現(xiàn)起來(lái)類似,下面分別給出一個(gè)函數(shù)的代碼://用菜單設(shè)置區(qū)域大小,區(qū)域一void CMy_RectView::OnOptionArea1() {m_iRow = 12。1)ID_OPTION_AREA1OnOptionArea1()中:18 行 15 列 (amp。6)ID_OPTION_LEVEL6OnOptionLevel6()區(qū)域大小選擇 (amp。4)ID_OPTION_LEVEL4OnOptionLevel4()第五級(jí):高級(jí) (amp。2)ID_OPTION_LEVEL2OnOptionLevel2()第三級(jí):中級(jí) (amp。L) 第一級(jí):入門(mén)級(jí)(amp。}6 游戲功能的完善 根據(jù)每個(gè)人的喜好,一般游戲都會(huì)進(jìn)行一些功能的選擇,本游戲從以下兩個(gè)方面進(jìn)行了擴(kuò)展:游戲等級(jí)(游戲難度)的選擇、游戲區(qū)域的大小。 //在內(nèi)存位圖的游戲區(qū)域繪制pDCBitBlt(0,0,m_nWidth,m_nHeight,amp。DrawGame(amp。}由于 DrawGame()函數(shù)還不能直接調(diào)用,需對(duì)默認(rèn)的OnDraw()進(jìn)行重寫(xiě)。delete(m_pGrayBrush)。m_pBlackBrush = new CBrush(BLACK)。如下:void CMy_RectView::DcEnvInitial(void){……//黑色的黑筆m_pBlackPen = new CPen(PS_SOLID,1,BLACK)。同時(shí)在完成繪制還要進(jìn)行釋放。m_memRectDC,m_iBlockSytle*30,0,SRCCOPY)。nH = m_iLarge4。y = m_iStartX+i*30 +2+30。 j = NextStatus[k][1]。k4。int x,y,nW,nH。pDC SetTextColor(WHITE)。54pDC TextOut(m_iStartY+320, m_iStartX+180,lsStr)。pDC SetBkColor(BLACK)。}//顯示總分if (!m_bGameEnd){CString lsStr。pDC TextOut(m_iStartY+320, m_iStartX+330,江蘇大學(xué))。pDC TextOut(m_iStartY+320, m_iStartX+280, 游戲級(jí)別:)。53pDC TextOut(m_iStartY+320, m_iStartX+220, 游戲區(qū)域大?。?。}}//顯示游戲區(qū)域及游戲級(jí)別的漢字描述if (!m_bGameEnd){pDC SetBkColor(BLACK)。pDCBitBlt(x,y,nW,nH,amp。nW = m_iLarge4。j++){if (GameStatus[i][j]==MAP_STATE_NOT_EMPTY){//在游戲區(qū)域中狀態(tài)為被占用狀態(tài)的區(qū)域繪制小方塊x = m_iStartY+j*m_iLarge +2。i++)for (j=0。52//小方塊的繪制for (i=0。pDCLineTo(m_iStartY+i*m_iLarge, m_iStartX+360)。im_iCol。pDCLineTo(m_iStartY+300, m_iStartX +i*m_iLarge)。im_iRow。pDCSelectObject(m_pBlackPen)。//選用灰色畫(huà)刷,繪制游戲區(qū)域的背景pDC SelectObject(m_pGrayBrush)。rect)。CRect rect。}} 游戲區(qū)域的繪制對(duì)于游戲區(qū)域的繪制,它包含背景顏色和網(wǎng)格的繪制、在游戲區(qū)域中狀態(tài)為被占狀態(tài)的區(qū)域小方塊的繪制、下一個(gè)下墜物在右上角的預(yù)先提示繪制和用戶當(dāng)前已得分?jǐn)?shù)的顯示文字繪制,這些功能用 DrawGame()函數(shù)來(lái)實(shí)現(xiàn),其程序如下:void CMy_RectView::DrawGame(CDC *pDC){int i,j。50//畫(huà)刷m_pGrayBrush = new CBrush(RGB(66,66,66))。//內(nèi)存設(shè)備環(huán)境與內(nèi)存位圖關(guān)聯(lián),以便通過(guò) m_memDC 在內(nèi)存位圖上作畫(huà)SelectObject(, m_hMemRectBmp)。////內(nèi)存設(shè)備環(huán)境與屏幕設(shè)備環(huán)境關(guān)聯(lián)(兼容)(pWindowDC)。//內(nèi)存設(shè)備環(huán)境與內(nèi)存位圖關(guān)聯(lián),以便通過(guò) m_memDC 在內(nèi)存位圖上作畫(huà)(amp。//內(nèi)存設(shè)備環(huán)境與屏幕設(shè)備環(huán)境關(guān)聯(lián)(兼容)(pWindowDC)。m_nWidth = ()。GetClientRect(amp。//用默認(rèn)的參數(shù),獲取當(dāng)前屏幕設(shè)備環(huán)境CDC *pWindowDC = GetDC()。 //方塊內(nèi)存位圖句柄48添加好繪圖資源成員變量后,就可以對(duì)資源進(jìn)行初始化于資源的釋放(用函數(shù) DcEnvInitial(void)實(shí)現(xiàn)。 //內(nèi)存位圖CDC m_memRectDC。聲明如下: //內(nèi)存繪圖設(shè)備的處理CDC m_memDC。(3)最后將已經(jīng)繪制好的游戲區(qū)域圖像一次性的拷貝到與屏幕關(guān)聯(lián)的設(shè)備環(huán)境中,從而達(dá)到屏幕的顯示。(1)首先將外部位圖文件 中的位圖動(dòng)態(tài)導(dǎo)入(映射)到內(nèi)存位圖里面。 繪圖機(jī)制的設(shè)計(jì)47 了位圖資源后,就可對(duì)屏幕中的區(qū)域進(jìn)行繪制。這里必須先準(zhǔn)備好一組不同圖樣類型的位圖,并且每個(gè)方塊的尺寸(高度和寬度)需要跟游戲區(qū)域中的每個(gè)小方塊的尺寸一樣。}//判斷是否已到底IsBottom()。GameStatus[x3][y3] = MAP_STATE_NOT_EMPTY。}else{//恢復(fù)原來(lái)狀態(tài)GameStatus[x1][y1] = MAP_STATE_NOT_EMPTY。InvalidateCurrent()。GameStatus[xx3][yy3] = MAP_STATE_NOT_EMPTY。GameStatus[xx1][yy1] = MAP_STATE_NOT_EMPTY。ActiveStatus[2][1]=yy3。ActiveStatus[0][1]=yy1。ActiveStatus[2][0]=xx3。ActiveStatus[0][0]=xx1。amp。amp。amp。amp。amp。amp。amp。GameStatus[x4][y4] = MAP_STATE_EMPTY。GameStatus[x2][y2] = MAP_STATE_EMPTY。break。 yy4=y41。 yy3=y32。 yy2=y21。break。 yy4=y4+1。 yy3=y3+1。case 72:xx1=x12。m_lscurrentRect = 72。 xx4=x4+1。 xx2=x21。break。 yy4=y4+1。 yy3=y3+1。break。 yy2=y2+1。 yy1=y1+1。break。 xx4=x41。 xx3=x32。case 62:xx1=x1+1。m_lscurrentRect = 62。 xx4=x4+2。43case 61:xx3=x3+2。m_lscurrentRect = 61。 xx4=x42。 yy2=y21。break。 yy4=y41。 yy2=y21。case 51:xx1=x1+1。m_lscurrentRect = 51。 xx3=x3+1。 xx2=x22。break。 xx4=x4+1。 xx3=x31。case 41:xx1=x12。m_lscurrentRect = 41。 yy3=y31。 yy1=y11。42break。 yy4=y4+1。break。 yy4=y41。 yy1=y1。break。 yy1=y11。break。 yy4=y4。 yy1=y1+1。 break。break。 yy4=y42。 yy3=y31。 yy1=y1+1。break。 yy4=y4+2。 yy3=y3+1。 yy1=y11。 yy4=y4。 yy2=y2。 xx4=x4。 xx2=x2。y4 = ActiveStatus[3][1]。y2 = ActiveStatus[1][1]。x4 = ActiveStatus[3][0]。x2 = ActiveStatus[1][0]。40int x1,x2,x3,x4,y1,y2,y3,y4。int m_lscurrentRect。如果變形后出現(xiàn)違規(guī)的情況,則取消變形操作,其具體實(shí)現(xiàn)如下所示。}(2)變形的實(shí)現(xiàn)。39break。break。break。break。break。38break。break。break。break。break。break。break。break。break。break。break。break。break。break。y4 = ActiveStatus[3][1]。y2 = ActiveStatus[1][1]。x4 = ActiveStatus[3][0]。x2 = ActiveStatus[1][0]。34// 內(nèi)部函數(shù):方塊是否還可以左移BOOL CMy_RectView::IsLeftLimit(){int x1,x2,x3,x4,y1,y2,y3,y4。它們的原理是一樣的,區(qū)別僅在于坐標(biāo)而已。break。}break。GameStatus[x4][y4+1]=MAP_STATE_NOT_EMPTY。GameStatus[x2][y2+1]=MAP_STATE_NOT_EMPTY。ActiveStatus[3][1] += 1。ActiveStatus[1][1] += 1。// InvalidateCurrent()。GameStatus[x3][y3]=MAP_STATE_EMPTY。 !m_isBottom){//清原來(lái)的方塊GameStatus[x1][y1]=MAP_STATE_EMPTY。 IsRightLitmit() amp。case RIGHT:if ( (ActiveStatus[3][1] m_iCol1) amp。InvalidateCurrent()。GameStatus[x3][y31]=MAP_STATE_NOT_EMPTY。GameStatus[x1][y11]=MAP_STATE_NOT_EMPTY。ActiveStatus[2][1] = 1。//添加新的移動(dòng)后數(shù)據(jù)狀態(tài)ActiveStatus[0][1] = 1。GameStatus[x4][y4]=MAP_STATE_EMPTY。GameStatus[x2][y2]=MAP_STATE_EMPTY。amp。amp。y4 = ActiveStatus[3][1]。y2 = ActiveStatus[1][1]。x4 = ActiveStatus[3][0]。x2 = ActiveStatus[1][0]。}用到的參數(shù)定義如下://中斷操作的運(yùn)動(dòng)趨勢(shì)define LEFT 0 //向左移動(dòng)define RIGHT 1 //向左移動(dòng)define UP 2 //向上(變形) define DOWN 3 //向下移動(dòng)(加速)(1)左右移動(dòng)和加速下移的實(shí)現(xiàn)//內(nèi)部函數(shù):當(dāng)前方塊下降加速,左移,右移void CMy_RectView::RectArrow(int m_Type){//獲取當(dāng)前下墜物 4 個(gè)小方塊的位置坐標(biāo)int x1,x2,x3,x4,y1,y2
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1