[源碼分享]C++五子棋簡易小游戲

?01

編碼過程

定義函數(shù)和變量

游戲初始化,繪制界面

游戲過程函數(shù),繪制鼠標(biāo)點擊位置的棋子

判斷鼠標(biāo)點擊位置是否超出邊界

02

效果展示

03

代碼分享

#include <graphics.h>

#include <stdio.h>

#include <math.h>

#include <mmsystem.h>

#pragma comment(lib,"winmm.lib")

void initGame();//函數(shù)聲明

void playChess();

int judge(int a, int b);

int flag = 0;//標(biāo)記輪到誰下棋

int board[20][20] = { 0 };//0表示沒有下棋的狀態(tài)

int main()

{

initGame();//函數(shù)調(diào)用,不加返回值類型和參數(shù)類型

playChess();

closegraph();

return 0;

}

void initGame()

{

initgraph(600, 500);//繪圖環(huán)境

loadimage(NULL, "背景.jpg"); //背景圖片

mciSendString("open G弦之歌.mp3", 0, 0, 0);//打開音樂

mciSendString("play G弦之歌.mp3", 0, 0, 0);//播放音樂

//繪制棋盤

setlinecolor(BLACK);//設(shè)置線條顏色為黑色

for (int i = 1; i < 20; i++)

{

line(0, i * 25, 500, i * 25);//繪制線條

line(i * 25, 0, i * 25, 500);

}

setlinestyle(PS_SOLID, 2);//設(shè)置線條為實線,寬度為2

line(500, 0, 500, 500);//邊界線

outtextxy(512, 60, "玩家1:黑棋");

outtextxy(512, 100, "玩家2:白棋");

}

void playChess()

{

int x=0, y=0;

int a=0, b=0;

MOUSEMSG m;//定義鼠標(biāo)消息

HWND hwnd;

hwnd = GetHWnd();

while (1)//實現(xiàn)不斷下棋

{

m = GetMouseMsg();//獲取一個鼠標(biāo)消息

//求距離絕對值

for (int i = 1; i < 20; i++)

{

for (int j = 1; j < 20; j++)

{

if (abs(m.x - i * 25) < 12 && abs(m.y - j * 25) < 12)

{

a = i;

b = j;

x = i * 25;

y = j * 25;

}

}

}

if (m.uMsg == WM_LBUTTONDOWN)//判斷當(dāng)前鼠標(biāo)消息是不是鼠標(biāo)左鍵按下

{

if (board[a][b] != 0)

{

MessageBox(hwnd, "這里已經(jīng)有棋子了,請重新選擇.", "五子棋", MB_OK);

continue;

}

if (flag % 2 == 0)

{

setfillcolor(BLACK);

solidcircle(x, y, 10);

board[a][b] = 1;

}

else

{

setfillcolor(WHITE);

solidcircle(x, y, 10);

board[a][b] = 2;

}

flag++;

}

if (judge(a, b))

{

if (1 == flag % 2)

{

MessageBox(hwnd, "玩家1勝利", "游戲結(jié)束", MB_OK);

return; //修復(fù)BUG

}

else

{

MessageBox(hwnd, "玩家2勝利", "游戲結(jié)束", MB_OK);

return; //修復(fù)BUG

}

}

}

}

int judge(int a, int b)

{

int i, j;

int t = 2 - flag % 2;

for (i = a - 4, j = b; i <= a; i++)

{

if (i >= 1 && i < 16 && t == board[i][j] && t == board[i + 1][j] && t == board[i + 2][j]

&& t == board[i + 3][j] && t == board[i + 4][j])

return 1;

}

for (i = a, j = b - 4; j <= b; j++)

{

if (j >= 1 && j < 16 && t == board[i][j] && t == board[i][j + 1]

&& t == board[i][j + 2] && t == board[i][j + 3] && t == board[i][j + 4])

return 1;

}

for (i = a - 4, j = b - 4; i <= a, j <= b; i++, j++)

{

if (i >= 1 && i < 16 && j >= 1 && j < 16 && t == board[i][j] && t == board[i + 1][j + 1] &&

t == board[i + 2][j + 2] && t == board[i + 3][j + 3] && t == board[i + 4][j + 4])

return 1;

}

for (i = a - 4, j = b + 4; i <= a, j >= b; i++, j--)

{

if (i >= 1 && i < 16 && j >= 1 && j < 16 && t == board[i][j] && t == board[i + 1][j - 1] &&

t == board[i + 2][j - 2] && t == board[i + 3][j - 3] && t == board[i + 4][j - 4])

return 1;

}

return 0;

}

更多有關(guān)C語言和C++的知識和學(xué)習(xí)資料第股,歡迎關(guān)注微信公眾號:C語言學(xué)習(xí)基地!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铃彰,一起剝皮案震驚了整個濱河市趴俘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掌眠,老刑警劉巖蕾盯,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蓝丙,居然都是意外死亡级遭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門渺尘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挫鸽,“玉大人,你說我怎么就攤上這事鸥跟《迹” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長枫匾。 經(jīng)常有香客問我迅诬,道長,這世上最難降的妖魔是什么婿牍? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任侈贷,我火速辦了婚禮,結(jié)果婚禮上等脂,老公的妹妹穿的比我還像新娘俏蛮。我一直安慰自己,他們只是感情好上遥,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布搏屑。 她就那樣靜靜地躺著,像睡著了一般粉楚。 火紅的嫁衣襯著肌膚如雪辣恋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天模软,我揣著相機(jī)與錄音伟骨,去河邊找鬼。 笑死燃异,一個胖子當(dāng)著我的面吹牛携狭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播回俐,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼逛腿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了仅颇?” 一聲冷哼從身側(cè)響起单默,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忘瓦,沒想到半個月后搁廓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡政冻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年枚抵,在試婚紗的時候發(fā)現(xiàn)自己被綠了线欲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片明场。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖李丰,靈堂內(nèi)的尸體忽然破棺而出苦锨,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布舟舒,位于F島的核電站拉庶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏秃励。R本人自食惡果不足惜氏仗,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夺鲜。 院中可真熱鬧皆尔,春花似錦、人聲如沸币励。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽食呻。三九已至流炕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仅胞,已是汗流浹背每辟。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留干旧,地道東北人影兽。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像莱革,于是被迫代替她去往敵國和親峻堰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容