VC 遊戲開發 棋牌類遊戲 五子棋

2021-07-03 20:31:44 字數 2535 閱讀 8458

在我學習遊戲開發的過程中,遇到的最大的麻煩就是不知道乙個遊戲的完整實現過程,**倒是其次。

這裡,總結一下我做過的遊戲,主要是梳理整每個步驟。

先看下最終的效果

第1步:

準備(黑棋、白棋各一張)

1.       五子棋位圖

2.       游標位圖

3.       圖示位圖

第2步:

初始化介面和函式,包括

0.設定視窗大小、樣式

在函式bool cmainframe::precreatewindow(createstruct& cs)中

新增如下**

cs.dwexstyle |= ws_ex_topmost;

cs.style = ws_sysmenu | ws_minimizebox ;

cs.cx=610;

cs.cy=680;

還可以在

oncreate裡設定圖示(使用setclasslang函式),左上角可愛的熊貓如是誕生^_^

1.在c**view建構函式中載入五子棋位圖、游標位圖、圖示位圖,初始化棋盤,設定白棋/黑棋先行等

//載入五子棋位圖

m_bmblaak.loadbitmap(idb_bitmap2);

m_bmwhite.loadbitmap(idb_bitmap1);

//載入游標位圖

//載入圖示位圖

//初始化棋盤為空

for(int i=0;i<19;i++)

for(int j=0;j<19;j++)

gomoku[i][j]=0;

//當前狀態: 白棋下/人人對戰模式

iswhite=1;

iscomputer=0;

whitepoint.x=whitepoint.y=-1;

blackpoint.x=blackpoint.y=-1;

2.在ondraw()函式中畫介面

畫棋盤背景

cbrush brush;

brush.createsolidbrush(rgb(192,192,192));

crect rect(0,0,700,700);

pdc->fillrect(rect,&brush);

畫棋盤線

cpen pen;

cpen *oldpen;

pen.createpen(ps_solid,1,rgb(255,0,0));

oldpen=pdc->selectobject(&pen);

for(i=0;i<19;i++)

重畫時顯示棋子

cdc dc;

if(false==dc.createcompatibledc(pdc))

afxmessagebox("can't create dc");

for(i=0;i<19;i++)

for(j=0;j<19;j++)

if(1==gomoku[i][j])

else if(-1==gomoku[i][j])

3.設定滑鼠

第2步結束之後,滑鼠放在棋盤上仍然是指標狀態,要把它變為下圖

所示的棋子形狀。(使用onsetcursor

函式設定棋子的圖示、狀態列的圖示和提示文字)

}第3步:

實現遊戲操作

現在開始把棋子放在棋盤上

使用onlbuttonup函式,在函式內除了把棋子放在棋盤上,還要判斷遊戲是否結束。如果未結束,要切換棋子狀態(下完黑棋下白棋),下棋的時候,要判斷原來位置是否有棋子,如果有,就不能再放了。

(關於如何把棋子放在棋盤上 和 如何判斷是否結束,**比較多,就不貼出來了。。。)

第4步附加功能

1. 開啟、儲存遊戲

主要涉及cfiledialog、cfile、cstdiofile、carchive的使用。可以在工具欄上面建立相應的圖示來對應相應的功能

2.      重新開始、人人對戰、人機對戰、悔棋操作

常見的悔棋操作一般可以一直回到第一步,這裡為了簡單起見,只設定回一步棋。

**位址

vc++五子棋

五子棋Pro 最好玩的五子棋遊戲

五子棋是一種兩人對弈的純策略型漢族棋類益智遊戲,棋具與圍棋通用,由中國古代漢族人發明,起源於中國上古時代的傳統黑白棋種之一。主要流行於華人和漢字文化圈的國家以及歐美一些地區。容易上手,老少皆宜,而且趣味橫生,引人入勝 不僅能增強思維能力,提高智力,而且富含哲理,有助於修身養性。1 多種遊戲模式 1 ...

五子棋的小遊戲

感想 終於寫出人生中第乙個小遊戲來了 include include include include using namespace std const int x 21 棋盤行數 const int y 21 棋盤列數 char p x y 定義棋盤 int m 0 定義臨時點,儲存輸入座標 in...

遊戲 五子棋 與AI

然後ai下棋時,把每個能下的地方都下一次,求個己方與對方的期望值,用個微妙的比較方法 既要考慮到己方的期望,也要考慮到對方的情況 找出期望值最好的那個點,就下那裡了。然後不一會兒我就寫出了乙個 一代 ai,不過我發現有問題,這一代中函式 val 中還沒有那個 y 導致雙方的優先度基本相當,後來我就想...