mfc筆記 俄羅斯方塊

2021-06-07 10:16:32 字數 3091 閱讀 6211

一年前剛學完

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,俄文 是一款風靡全球的電視遊戲機 和掌上遊戲機遊戲,它由俄羅斯人阿列克謝 帕基特諾夫 發明,故得此名。俄羅斯方塊的基本規則是移動 旋轉和擺放遊戲自動輸出的各種方塊,使之排列成完整的一行或多行並且消除得分。由於上手簡單 老少皆宜,從而家喻戶曉,風靡世界。俄羅斯方塊的開發者是阿...