一年前剛學完
c就很想寫俄羅斯方塊。自己看了點
windows
程式設計的書。但是因為沒有學
c++,對
class
完全沒有概念。隨便乙個
point
的物件就可以搞到頭暈都沒懂。現在寫完
painter
來寫俄羅斯方塊頓覺清晰很多。 1
.將乙個字串寫到螢幕指定位置。
bool textout(
hdchdc, //
裝置描述表控制代碼
int nxstart, //
字串的開始位置x座標
intnystart, //
字串的開始位置y座標
lpctstrlpstring, //
字串
intcbstring //
字串中字元的個數 );
2.無法開啟預編譯頭 專案
->
屬性->c/c++->
預編譯->
是否使用預編譯標頭檔案
->
選擇不使用
3.memcpy memset
memcpy
extern void *memcpy(void *dest,void*src,unsigned int count);
#include
把str的東西拷貝到dest去。count為拷貝內容的大小
記憶體拷貝。任何資料型別的都可以。但兩塊記憶體不可以重疊。
memset
extern void *memset(void *buffer,int c,intcount);
#include
方便清空某資料型別的值,或初始化。
memset(&sttest,0,sizeof(structsample_struct));
即把型別為struct sample_struct的sttest的各屬性都賦值為0.
4.顯示影象
計算座標時要注意程式中的螢幕座標是從左到右x增大,從上到下一y增大。
故旋轉座標(x,y)順時針旋轉90度變為(-y,x)。
5. selectobject - 函式功能
函式功能:該函式選擇一物件到指定的裝置上下文環境中,該新物件替換先前的相同型別的物件。
函式原型:hgdiobjselectobject(hdc hdc, hgdiobj hgdiobj);
hdc:裝置上下文環境的控制代碼。
hgdiobj:被選擇的物件的句型。
6. bitblt - 函式功能
該函式對指定的源裝置環境區域中的畫素進行位塊(bit_block)轉換,以傳送到目標裝置環境。
bitblt - 函式原型
bool bitblt(hdc hdcdest,int nxdest,intnydest,int nwidth,int nheight,hdc hdcsrc,int nxsrc,int nysrc,dword dwrop);
bitblt - 主要引數
hdcdest:指向目標裝置環境的控制代碼。
nxdest:指定目標矩形區域左上角的x軸邏輯座標。 nydest:指定目標矩形區域左上角的y軸邏輯座標。
nwidth:指定源和目標矩形區域的邏輯寬度。
nheight:指定源和目標矩形區域的邏輯高度。
hdcsrc:指向源裝置環境的控制代碼。
nxsrc:指定源矩形區域左上角的x軸邏輯座標。
nysrc:指定源矩形區域左上角的y軸邏輯座標。
dwrop:指定光柵操作**。這些**將定義源矩形區域的顏色資料,如何與目標矩形區域的顏色資料組合以完成最後的顏色。
下面列出了一些常見的光柵操作**:
dstinvert:表示使目標矩形區域顏色取反。
mergecopy:表示使用布林型的and(與)操作符將源矩形區域的顏色與特定模式組合一起。
mergepaint:通過使用布林型的or(或)操作符將反向的源矩形區域的顏色與目標矩形區域的顏色合併。
notsrccopy:將源矩形區域顏色取反,於拷貝到目標矩形區域。
notsrcerase:使用布林型別的or(或)操作符組合源和目標矩形區域的顏色值,然後將合成的顏色取反。
patcopy:將特定的模式拷貝到目標點陣圖上。
patpaint:通過使用布林or(或)操作符將源矩形區域取反後的顏色值與特定模式的顏色合併。然後使用or(或)操作符將該操作的結果與目標矩形區域內的顏色合併。
patinvert:通過使用xor(異或)操作符將源和目標矩形區域內的顏色合併。
srcand:通過使用and(與)操作符來將源和目標矩形區域內的顏色合併。
srccopy:將源矩形區域直接拷貝到目標矩形區域。
srcerase:通過使用and(與)操作符將目標矩形區域顏色取反後與源矩形區域的顏色值合併。
srcinvert:通過使用布林型的xor(異或)操作符將源和目標矩形區域的顏色合併。
srcpaint:通過使用布林型的or(或)操作符將源和目標矩形區域的顏色合併。
whiteness:使用與物理調色盤中索引1有關的顏色填充目標矩形區域。(對於預設物理調色盤來說,這個顏色就是白色)。
返回值:如果函式成功,那麼返回值非零;如果函式失敗,則返回值為零。
7.clock()
開啟這個程式程序」到「程式中呼叫clock()函式」時之間的cpu時鐘計時單元(clocktick)數,在msdn中稱之為掛鐘時間(wal-clock)。其中clock_t是用來儲存時間的資料型別,在time.h檔案中. clock_t是乙個長整形數。另外在time.h檔案中,還定義了乙個常量clocks_per_sec,它用來表示一秒鐘會有多少個時鐘計時單元,因此,我們就可以使用公式clock()/clocks_per_sec來計算乙個程序自身的執行時間.
8. getclientrect(&windowrect);//獲取遊戲視窗的大小用於下面設定記憶體點陣圖的尺寸
9.使用timer 要先設定settimer,最後不用了要killtimer.
settimer(1,1000,null);
1:計時器名字
1000: 時間間隔
null: 使用ontimer()函式
killtimer(1);
1:計時器名字
MFC 俄羅斯方塊
提取碼 a2a3 一 定義了一些結構體和常量 每個俄羅斯方塊 block 由4個正方形 pston 組成,乙個正方形 pston 的定義如下 typedef struct pston ty pston 定義乙個俄羅斯方塊 block 包含了4個正方形pst,及顏色屬性color,距離左l與頂t的位置...
俄羅斯方塊高階 AI俄羅斯方塊
前文回顧 致青春 python實現俄羅斯方塊 人工智慧大火的今天,如果還是自己玩俄羅斯方塊未免顯得太low,為什麼不對遊戲公升級,讓機器自己去玩俄羅斯方塊呢?有了這個想法之後利用週六週日兩天的時間去蒐集了大量的資料,在電腦宕機好多次之後終於將ai俄羅斯方塊實現了。所謂讓機器自己去玩俄羅斯方塊,就是讓...
俄羅斯方塊
俄羅斯方塊 tetris,俄文 是一款風靡全球的電視遊戲機 和掌上遊戲機遊戲,它由俄羅斯人阿列克謝 帕基特諾夫 發明,故得此名。俄羅斯方塊的基本規則是移動 旋轉和擺放遊戲自動輸出的各種方塊,使之排列成完整的一行或多行並且消除得分。由於上手簡單 老少皆宜,從而家喻戶曉,風靡世界。俄羅斯方塊的開發者是阿...