俄羅斯方塊
第一次單獨完成了乙個小遊戲,雖然是按照老師編的實驗指導書上面單人版俄羅斯方塊改過來的,但是還是很有成就感的。
磚塊實現思路: 給磚塊設定乙個中心點,然後依次按照中心塊的位置設定其他塊的座標,在移動和變換磚塊時,只需要變換中心塊的位置,然後其他塊跟著一起移動。這樣做既可以有利於旋轉,實現起來也比較簡單.
遊戲截圖:
啟動介面
進入遊戲介面
類的定義:
首先定義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俄羅斯方塊實現了。所謂讓機器自己去玩俄羅斯方塊,就是讓...