1.采用acllib图形库的画图工具创建棋盘和棋子,并定义鼠标点击事件,用数组储存棋子坐标。
2.设置整型变量n=1,每次点击会使n+1,n为奇数时生成蓝棋,n为偶数时生成黑棋,从而控制实现了蓝棋走一步、黑棋走一步的游戏规则。
3.判胜的四种情况:横、竖、左斜、右斜。
国际五子棋规则
光标控制,两颜色棋子的持有者一人一步。
void paintchessboard(); 作用是在可视化窗口生成了一个37列 27行的棋盘
void paintchess(); 画出棋子
void mouse(int x,int y,int button,int e); 监视光标点击事件
void win(); 用四个if语句判胜(横、竖、左斜、右斜。)
Setup(); 在acllib中相当于main函数,initWindow函数用于生成可视化窗口。
#include "acllib.h"
#include
int winwidth = 800;
int winheight = 580;
int x00 = 20, y00 = 20;
int x11 = 760, y11 = 20;
int x22 = 20, y22 = 540;
int x33 = 760,y33 = 540;
void paintchessboard();
void paintchess();
void mouse(int x,int y,int button,int e);
void win();
int n = 1;
const int maxnum = 30;
int f[maxnum][maxnum];
int g[maxnum][maxnum];
/*for (int i = 0; i < maxnum; i++)
{
for (int j = 0; j < maxnum; j++) { f[i][j] = 0; }
}*/
int Setup()
{
initWindow("chessgame", DEFAULT, DEFAULT, winwidth, winheight);
paintchessboard();
//paintchess();
registerMouseEvent(mouse);
return 0;
}
void paintchessboard()//棋盘及格子坐标初始化
{
beginPaint();
moveTo(0, 0);
line(x00, y00, x11 , y11);
line(x00, y00, x22, y22);
line(x11, y11, x33, y33);
line(x22, y22, x33, y33);
for (int x = 20; x <= 760; x = x + 37)
{
line(x, y00, x, y22);
}
for (int y = 20; y <= 540; y = y + 26)
{
line(x00, y, x11, y);
}
endPaint();
}
void paintchess()
{
beginPaint();
setBrushColor(BLACK);
ellipse(43, 33, 71, 61);
endPaint();//外切正方形边长18
}
void mouse(int x, int y, int button, int e)
{
if (e != BUTTON_DOWN) return;
if (button == LEFT_BUTTON )
{
beginPaint();
for (int i = 20; i <= 760; i = i + 37)
{
for (int j = 20; j <= 540; j = j + 26)
if (x >= i - 4 && x<=i + 4 && y>=j - 4 && y <= j + 4)
{ if(n%2==1)
setBrushColor(BLUE);
else
setBrushColor(BLACK);
ellipse(i - 13, j - 13, i + 13, j + 13);
int qx = (i - 20) / 37;
int qy = (j - 20) / 26;
if (n % 2 == 1)
f[qx][qy] = 1;
else
g[qx][qy] = 1;
//cout<
五子棋游戏基本实现,但目前只能同一台设备操作,且不存在人机对战,有待开发。