MFC雙人版俄羅斯方塊

2021-08-02 04:38:46 字數 1896 閱讀 1247

俄羅斯方塊

第一次單獨完成了乙個小遊戲,雖然是按照老師編的實驗指導書上面單人版俄羅斯方塊改過來的,但是還是很有成就感的。

磚塊實現思路: 給磚塊設定乙個中心點,然後依次按照中心塊的位置設定其他塊的座標,在移動和變換磚塊時,只需要變換中心塊的位置,然後其他塊跟著一起移動。這樣做既可以有利於旋轉,實現起來也比較簡單.

遊戲截圖:

啟動介面

進入遊戲介面

類的定義:

首先定義2個基類cbin和cbrick, cbin用來遊戲介面的繪製,cbrick是乙個抽象類,用來作為各種方塊的基類,所以就有了5個派生類cibrick, clbrick, csbrick, cobrick, ctbrick

//cbin類

class cbin ;

unsigned int getheight() ;

void getimage(unsigned char** destimage);

void setimage(unsigned char** srcimage);

unsigned int removefulllines();

};//cbrick類

class cbrick ;

unsigned int getposx() ;

unsigned int getposy() ;

unsigned char getcolour() ;

void setorientation(unsigned int neworient) ;

void setposx(unsigned int newposx) ;

void setposy(unsigned int newposy) ;

void setcolour(unsigned char newcolour) ;

virtual int shiftleft(cbin* bin) = 0;

virtual int shiftright(cbin* bin) = 0;

virtual int shiftdown(cbin* bin) = 0;

virtual int rotateclockwise(cbin* bin) = 0;

virtual int checkcollision(cbin* bin) = 0;

virtual void operator>>(unsigned char** binimage) = 0;

virtual void putattop(unsigned int neworient, unsigned int newposx) = 0;

};//cibrick必須實現cbrick裡面全部的函式,以上其他函式是內聯函式所以就有了下面幾個函式

class cibrick : public cbrick ;

雙人版的思路是在單人版的基礎上實現的,在tetrisview類裡面定義兩個物件

檔案class ctetrisview : public cview

;//雙緩衝載入位圖

void ctetrisview::ondraw(cdc* pdc)

//繪製遊戲面板

void ctetrisview::drawimage(cbin *bin, unsigned char** image, cdc *pdc)

crect rc;

crect rc1;

colorref brickcolor[8] = ;

if (width == 10 + locateofplayer1game)}}

}

MFC 俄羅斯方塊

提取碼 a2a3 一 定義了一些結構體和常量 每個俄羅斯方塊 block 由4個正方形 pston 組成,乙個正方形 pston 的定義如下 typedef struct pston ty pston 定義乙個俄羅斯方塊 block 包含了4個正方形pst,及顏色屬性color,距離左l與頂t的位置...

mfc筆記 俄羅斯方塊

一年前剛學完 c就很想寫俄羅斯方塊。自己看了點 windows 程式設計的書。但是因為沒有學 c 對 class 完全沒有概念。隨便乙個 point 的物件就可以搞到頭暈都沒懂。現在寫完 painter 來寫俄羅斯方塊頓覺清晰很多。1 將乙個字串寫到螢幕指定位置。bool textout hdchd...

俄羅斯方塊高階 AI俄羅斯方塊

前文回顧 致青春 python實現俄羅斯方塊 人工智慧大火的今天,如果還是自己玩俄羅斯方塊未免顯得太low,為什麼不對遊戲公升級,讓機器自己去玩俄羅斯方塊呢?有了這個想法之後利用週六週日兩天的時間去蒐集了大量的資料,在電腦宕機好多次之後終於將ai俄羅斯方塊實現了。所謂讓機器自己去玩俄羅斯方塊,就是讓...