思路分析如下。
(1)定义一个二维数组,对应棋盘及棋子的位置。
(2)使用 while(1) 循环语句等待鼠标在窗口中单击。
(3)获取鼠标单击的位置,若单击位置在绘制的棋盘内,且对应的数组元素未被赋值,则根据当前步数判断是哪位玩家落子,分别以 1或 -1 表示并保存到对应的二维数组元素中。
(4)每一次循环执行时,刷新绘制的棋盘和棋子。
参考程序如下。
- #include"picture.h"//加入绘图头文件
- intb[20][20],step,m,x,y;/b[20][20]表示棋盘,step表示步数
- void DrawChess()//绘制棋盘
- {
- for(inti=0;i<20;i++)//横向一个格子占两个字符
- for(intj=0;j<20;j++)//纵向一个格子占一个字符
- if(b[i]〔j]==0)
- Cmd.TextColor(0,2);//设置字符颜色
- Cmd.Cout(i*2,j,"口");//绘制棋盘格,“☐”从ord的“插入字符”中取
- else if(b[i][j]>o)
- Cmd.TextCo.1or(4,1);//设置甲方棋子的颜色
- Cmd.Cout(i*2,j,"●");//绘制甲方棋子
- else
- Cmd.TextColor(9,1);//设置乙方棋子的颜色
- Cmd.Cout(i*2,j,"●");//绘制乙方棋子
- }
- }
- int main()
- {
- Cmd.HideCursor();//隐藏光标
- while(1)
- DrawChess();//绘制棋盘
- m=Cmd.GetMouse ()
- =Cmd.GetMousex(m);//获取鼠标单击时指针位置的x值
- y=Cmd.GetMouseY(m);//获取鼠标单击时指针位置的v值
- if(K40&y<20&b[x/2][y]=0)/鼠标须在棋盘范围内单击且单击位置未出界、无落子
- if (step++용2=0)//step定方
- b[x/2][y]=1:
- else
- b[x/2][y]=-1;
- Win.Show();//启动绘图窗口