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

?01

編碼過程

定義函數(shù)和變量

游戲初始化,繪制界面

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

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

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è)置線條為實(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)//實(shí)現(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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容