#pragma warning(disable:4996)
#pragma warning(disable:6031)
#include"head.h"
#include"function.h"
int ret;//全局变量表示结果
void init_board(char board[LONGTH][HIGTH], int longth, int higth)//初始化数组,将数组中每个元素替换成空格
{
int i;
int j;
for (i = 0; i < longth; i++)
{
for (j = 0; j < higth; j++)
{
board[i][j] = ' ';
}
}
}
void print_board(char board[LONGTH][HIGTH], int longth, int higth)//打印棋盘
{
int i;
/*与菜单界面类似*/
initgraph(M,N);
HWND hwnd = GetHWnd();
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) - WS_CAPTION);
SetWindowPos(hwnd, HWND_TOP, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CXSCREEN), SWP_SHOWWINDOW);
IMAGE bk;
IMAGE close;
loadimage(&bk, ".\\IMG\\1.jpg", 1536, 864);//背景图片
putimage(0, 0, &bk);
loadimage(&close, ".\\IMG\\close.jpg",30, 30);//关闭图标
putimage(1506, 0, &close);
/*******************/
setlinecolor(WHITE);
for (i = 0; i <= 1536; i += 32)//画出棋盘的格子
{
line(0, i, 1536, i);
}
for (i = 0; i <= 1536; i+=32)//32是每个格子的大小
{
line(i, 0, i, 864);
}
click(board);
}
void click(char board[LONGTH][HIGTH])//判断点击函数
{
int sum = 0;//判断黑子还是白子落子
MOUSEMSG mouse;
while (1)
{
again:
mouse = GetMouseMsg();
if (mouse.uMsg == WM_LBUTTONDOWN)
{
if (mouse.x > 1506 && mouse.x < 1536 && mouse.y>0 && mouse.y < 30)//点击到关闭按钮时
{
exit(0);
}
else if (board[mouse.x / 32][mouse.y / 32] != ' ')//判断落子位置有无棋子
{
goto again;//这里还可以优化一下逻辑,尽量不要用goto
}
else
{
if (sum == 0)//黑子落子
{
board[mouse.x / 32][mouse.y / 32] = 'O';//将点击位置对应的数组位置的空格替换
chess_black();
ret = gameover(board);//判断输赢,如果返回了1或-1则结束落子
if (ret == 1 || ret == -1)
{
break;
}
sum = 1;//切换到白子落子
}
else if (sum == 1)
{
board[mouse.x / 32][mouse.y / 32] = 'X';
chess_white();
ret = gameover(board);
if (ret == 1 || ret == -1)
{
break;
}
sum = 0;
}
}
}
}
}
void chess_black()//画黑棋棋子
{
int i = 0;
IMAGE img;
MOUSEMSG mouse;
mouse = GetMouseMsg();
loadimage(&img, ".\\IMG\\chess_black.jpg", 28, 28);
//先除32在乘32是为了取整
putimage((mouse.x / 32) * 32 + 2, (mouse.y / 32) * 32 + 2, &img);//判断点击的格子,然后在该格子的中间放上棋子贴图
/*
也可以让棋子落在交叉点上
但是建议落在格子内
交叉点上容易导致棋子错位
*/
}
void chess_white()
{
int i = 0;
IMAGE img;
MOUSEMSG mouse;
mouse = GetMouseMsg();
loadimage(&img, ".\\IMG\\chess_white .jpg",28,28);
putimage((mouse.x / 32) * 32+2, (mouse.y / 32) * 32+2, &img);
}
int gameover(char board[LONGTH][HIGTH])//简单的判断输赢的函数
{
int x;
int y;
for (x = 0; x < 48; x++)//遍历数组判断
for (y = 0; y < 27; y++)
{
if (board[x][y] == ' ')
continue;
else if (
(board[x][y] == board[x][y + 1] && board[x][y] == board[x][y + 2] && board[x][y] == board[x][y + 3] && board[x][y] == board[x][y + 4]) ||//判断横
(board[x][y] == board[x + 1][y] && board[x][y] == board[x + 2][y] && board[x][y] == board[x + 3][y] && board[x][y] == board[x + 4][y]) ||//判断纵
(board[x][y] == board[x - 1][y + 1] && board[x][y] == board[x - 2][y + 2] && board[x][y] == board[x - 3][y + 3] && board[x][y] == board[x - 4][y + 4]) ||//判断右斜
(board[x][y] == board[x + 1][y + 1] && board[x][y] == board[x + 2][y + 2] && board[x][y] == board[x + 3][y + 3] && board[x][y] == board[x + 4][y + 4]))//判断左斜
{
if (board[x][y] == 'O')
return 1;
else if (board[x][y] == 'X')
return -1;
}
else
continue;
}
return 0;
}
void game()
{
char board[LONGTH][HIGTH];//定义一个二维数组用于储存棋子信息
init_board(board, LONGTH, HIGTH);
print_board(board, LONGTH, HIGTH);
}
没有合适的资源?快使用搜索试试~ 我知道了~
简易可鼠标点击五子棋(需要easyx)
共82个文件
ipch:18个
jpg:16个
tlog:12个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 12 浏览量
2022-01-11
22:05:56
上传
评论
收藏 208.82MB ZIP 举报
温馨提示
一款简易的可以使用鼠标点击的五子棋
资源推荐
资源详情
资源评论
收起资源包目录
五子棋.zip (82个子文件)
五子棋
开始游戏.exe 54KB
.vs
Project2
project-colors.json 242B
v17
ipch
AutoPCH
37c7143589eb10a9
HEAD.ipch 46.31MB
fd832f6c70b21817
MAIN.ipch 46.31MB
9229e8a5a8813e4c
GAME.ipch 46.31MB
a834c4e0bf566dad
MAIN.ipch 46.81MB
618be4b16b92380a
GAME.ipch 46.81MB
1b7477d648c87fff
MAIN.ipch 44.56MB
73e7802878536053
52a678f4fb4af78c
GAME.ipch 44.56MB
.suo 188KB
Browse.VC.db 31.16MB
IMG
3.jpg 147KB
chess_white .jpg 16KB
2.jpg 8KB
close.jpg 63KB
chess_black.jpg 19KB
1.jpg 23KB
white_win.jpg 43KB
black_win.jpg 44KB
源码
x64
Debug
Project2.pdb 2.16MB
Project2.exe 157KB
Release
Project2.pdb 900KB
Project2.exe 54KB
.vs
Project2
project-colors.json 242B
v17
ipch
AutoPCH
37c7143589eb10a9
HEAD.ipch 46.31MB
7db63f446b510945
MAIN.ipch 46.81MB
fd8168558b3d8a55
MAIN.ipch 46.81MB
aca6f293e941e22
GAME.ipch 46.81MB
fd832f6c70b21817
MAIN.ipch 46.31MB
f7cfb844c9fb8f15
9229e8a5a8813e4c
GAME.ipch 46.31MB
a834c4e0bf566dad
MAIN.ipch 46.81MB
618be4b16b92380a
GAME.ipch 46.81MB
1b7477d648c87fff
MAIN.ipch 44.56MB
73e7802878536053
2ac7380ee004a7f2
GAME.ipch 46.81MB
52a678f4fb4af78c
GAME.ipch 44.56MB
d2e4787910543865
.suo 187KB
Browse.VC.db 31.04MB
Project2
x64
Debug
Project2.ilk 1.39MB
vc143.pdb 156KB
main.obj 58KB
Project2.tlog
link.read.1.tlog 3KB
link.command.1.tlog 1KB
Project2.lastbuildstate 163B
CL.command.1.tlog 1KB
CL.write.1.tlog 1KB
CL.read.1.tlog 53KB
link.write.1.tlog 620B
vc143.idb 443KB
Project2.log 230B
Project2.exe.recipe 299B
game.obj 66KB
Release
Project2.ipdb 17KB
vc143.pdb 164KB
main.obj 251KB
Project2.tlog
link.read.1.tlog 8KB
link.command.1.tlog 5KB
Project2.lastbuildstate 173B
CL.command.1.tlog 4KB
CL.write.1.tlog 3KB
CL.read.1.tlog 103KB
link.write.1.tlog 2KB
Project2.iobj 82KB
Project2.log 367B
Project2.exe.recipe 309B
game.obj 256KB
main.cpp 2KB
function.h 418B
head.h 314B
IMG
3.jpg 147KB
chess_white .jpg 16KB
2.jpg 8KB
close.jpg 63KB
chess_black.jpg 19KB
1.jpg 23KB
white_win.jpg 43KB
black_win.jpg 44KB
Project2.vcxproj.filters 1KB
game.cpp 4KB
Project2.vcxproj.user 168B
Project2.vcxproj 7KB
Project2.sln 1KB
desktop.ini 104B
共 82 条
- 1
资源评论
m0_64463768
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功