定义canvas及黑白棋变量
<font color="#2f4f4f" face="微软雅黑" size="3">var canvas
var context
var isWhite = true//设置是否该轮到白棋
var isWell = false//设置该局棋盘是否赢了,如果赢了就不能再走了
var img_b = new Image()
img_b.src = "images/b.png"//白棋图片
var img_w = new Image()
img_w.src = "images/c.png"//黑棋图片</font>
为棋盘的二维数组用来保存棋盘信息
<font color="#2f4f4f" face="微软雅黑" size="3">var chessData = new Array(15)//初始化0为没有走过的,1为白棋走的,2为黑棋走的
for (var x = 0x <15x++) {
chessData[x] = new Array(15)
for (var y = 0y <15y++) {
chessData[x][y] = 0
}
}</font>
绘制棋盘的线
<font color="#2f4f4f" face="微软雅黑" size="3"> for (var i = 0i <= 640i += 40) {
context.beginPath()
context.moveTo(0, i)
context.lineTo(640, i)
context.closePath()
context.stroke()
context.beginPath()
context.moveTo(i, 0)
context.lineTo(i, 640)
context.closePath()
context.stroke()
}
}</font>
判断该棋局的输赢
<font color="#2f4f4f" face="微软雅黑" size="3">if (count1 >= 5 || count2 >= 5 || count3 >= 5 || count4 >= 5) {
if (chess == 1) {
alert("白棋赢了")
}
else {
alert("黑棋赢了")
}
isWell = true//设置该局棋盘已经赢了,不可以再走了
}</font>
html代码:
<font color="#2f4f4f" face="微软雅黑" size="3"><body onload="drawRect()">
<div>
<canvas width="640" id="canvas" onmousedown="play(event)" height="640">你的浏览器不支持HTML5 canvas ,请使用 google chrome 浏览器 打开.
</canvas>
</div>
</body></font>
#include<iostream.h>#include<stdlib.h>#define Num 15//********************************************************//类class T//定义类用来封装所有相关函数和变量{ char board[Num][Num]//用数组board[Num][Num]来定义棋盘public: void PrintMenu() //打印菜单 说明游戏规则和方法void PrintBoard() //打印棋盘 void GameStart(char*,int &,int &,char) //下棋 int whichwin(int,int,char) //判断那个选手赢 void Choice(char &) //是否再玩 void Setboard() //重置棋盘}//****************************************************************//main主函数void main ()//主函数{ T s//说明类的一个对象ss.PrintMenu()//通过s调用PrintMenu函数提示如何游戏 char player1[20],player2[20]//玩家姓名 int FirstWin=0,SecondWin=0,Draws=0,x,y,N//说明变量,赋初值为0以待计算输赢结果 char choice='Y' cin.ignore(20,'\n')//输入输出流,前面如果有输入把输入行所有字符取空,以便后面的输入从新的一行开始 cout<<"请输入第一个玩家姓名:" cin.getline(player1,20)//连续读取数据 cout<<"请输入第二个玩家姓名:" cin.getline(player2,20) while(choice=='Y'||choice=='y')//条件成立,执行 { s.Setboard()//调用Setboard函数 N=0 while(N<=(Num*Num)) { s.PrintBoard()//打印棋盘 s.GameStart(player1,x,y,'O') N++//记录已下棋子数 if(s.whichwin(x-1,y-1,'O'))//返回值不为0则条件成立 { s.PrintBoard() cout<<player1<<"赢了。"<<endl FirstWin++//记录赢局数 break//终止本次循环 } s.PrintBoard()//同上 s.GameStart(player2,x,y,'X') N++ if(s.whichwin(x-1,y-1,'X')) { s.PrintBoard() cout<<player2<<"赢了。"<<endl SecondWin++ break } if(N==(Num*Num)) { cout<<"和棋!" Draws++//记录平局数 break } } s.Choice(choice)//给玩家提供一次选择是否再玩的机会 } //输出游戏输赢次数 cout<<player1<<"赢了"<<FirstWin<<"次"<<endl cout<<player2<<"赢了"<<SecondWin<<"次"<<endl cout<<"和"<<Draws<<"次"<<endl cout<<"谢谢使用。"<<endl cout<<"任意键继续。"<<endl cin.get()//很必要的,目的是空度换行字符}//*******************************************************************//定义公有成员函数void T::PrintMenu(){ cout<<"欢迎进入五子棋游戏!\n" cout<<"******************************************"<<endl cout<<"\t游戏说明:"<<endl<<endl cout<<"1.第一个玩家用O第二个玩家用X;"<<endl cout<<"2.请根据提示输入所要走的行和列;"<<endl cout<<"3.按<Enter>下棋。"<<endl cout<<"#include "iostream"#include <iomanip>
using namespace std
const int M=20
const int N=20
int main()
{
char weizhi[M][N]
int k,i,j,x,y,flag=0
cout<<"欢迎使用简易双人对战五子棋游戏"<<endl
cout<<"五子棋棋谱如下:"<<endl
for(k=0k<=Nk++)
cout<<setw(3)<<setfill(' ')<<k
cout<<endl
for(i=1i<=Mi++)
{
cout<<setw(3)<<setfill(' ')<<i
for(j=1j<=Nj++)
{
weizhi[i][j]='-'
cout<<setw(3)<<setfill(' ')<<weizhi[i][j]
}
cout<<endl
}
while(flag==0)
{
//红方落子
cout<<"请红方输入落子位置:"<<endl
loop1:
cout<<"请输入落子的行数:"
cin>>x
cout<<"请输入落子的列数:"
cin>>y
if(weizhi[x][y]=='-')
{
weizhi[x][y]='*'
for(k=0k<=Nk++)
cout<<setw(3)<<setfill(' ')<<k
cout<<endl
for(i=1i<=Mi++)
{
cout<<setw(3)<<setfill(' ')<<i
for(j=1j<=Nj++)
cout<<setw(3)<<setfill(' ')<<weizhi[i][j]
cout<<endl
}
}
else
{
cout<<"你不能在这落子,请重新选择落子位置:"<<endl
goto loop1
}
//判断胜利
for(i=1i<=M-4i++)
{
for(j=1j<=N-4j++)
{
if(weizhi[i][j]=='*' &&weizhi[i][j+1]=='*' &&weizhi[i][j+2]=='*' &&weizhi[i][j+3]=='*' &&weizhi[i][j+4]=='*')
{
cout<<"恭喜红方获得简易双人对战五子棋的胜利!耶~~~"<<endl
flag=1
break
}
if(weizhi[i][j]=='*' &&weizhi[i+1][j]=='*' &&weizhi[i+2][j]=='*' &&weizhi[i+3][j]=='*' &&weizhi[i+4][j]=='*')
{
cout<<"恭喜红方获得简易双人对战五子棋的胜利!耶~~~"<<endl
flag=1
break
}
if(weizhi[i][j]=='*' &&weizhi[i+1][j+1]=='*' &&weizhi[i+2][j+2]=='*' &&weizhi[i+3][j+3]=='*' &&weizhi[i+4][j+4]=='*')
{
cout<<"恭喜红方获得简易双人对战五子棋的胜利!耶~~~"<<endl
flag=1
break
}
if(flag==1)
break
}
}
//蓝方落子
cout<<"请蓝方输入落子位置:"<<endl
loop2:
cout<<"请输入落子的行数:"
cin>>x
cout<<"请输入落子的列数:"
cin>>y
if(weizhi[x][y]=='-')
{
weizhi[x][y]='#'
for(k=0k<=Nk++)
cout<<setw(3)<<setfill(' ')<<k
cout<<endl
for(i=1i<=Mi++)
{
cout<<setw(3)<<setfill(' ')<<i
for(j=1j<=Nj++)
cout<<setw(3)<<setfill(' ')<<weizhi[i][j]
cout<<endl
}
}
else
{
cout<<"你不能在这落子,请重新选择落子位置:"
goto loop2
}
//判断胜利
for(i=1i<=M-4i++)
{
for(j=1j<=N-4j++)
{
if(weizhi[i][j]=='#' &&weizhi[i][j+1]=='#' &&weizhi[i][j+2]=='#' &&weizhi[i][j+3]=='#' &&weizhi[i][j+4]=='#')
{
cout<<"恭喜蓝方获得简易双人对战五子棋的胜利!耶~~~"<<endl
flag=1
break
}
if(weizhi[i][j]=='#' &&weizhi[i+1][j]=='#' &&weizhi[i+2][j]=='#' &&weizhi[i+3][j]=='#' &&weizhi[i+4][j]=='#')
{
cout<<"恭喜蓝方获得简易双人对战五子棋的胜利!耶~~~"<<endl
flag=1
break
}
if(weizhi[i][j]=='#' &&weizhi[i+1][j+1]=='#' &&weizhi[i+2][j+2]=='#' &&weizhi[i+3][j+3]=='#' &&weizhi[i+4][j+4]=='#')
{
cout<<"恭喜蓝方获得简易双人对战五子棋的胜利!耶~~~"<<endl
flag=1
break
}
if(flag==1)
break
}
}
}
return 0
}
我运行过,没有错误.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)