用画布加js实现了一个五子棋的小游戏,喜欢的朋友可以看看呦~
HTML部分
<body>
<canvas id="play" width="640px" height="640px"></canvas>
<button id="bBt">开始</button>
<span id="span">请先按开始</span>
</body>
css部分
<style>
body{
margin: 0px;
padding: 0px;
background: black;
position: relative;
}
#play{
margin-left: 200px;
background: #c0c0c0;
}
#bBt{
position: absolute;
width: 50px;
height: 30px;
}
span{
position: absolute;
top: 40px;
left: 850px;
width: 100px;
height: 30px;
color: #fff;
}
</style>
js部分~
<script>
window.οnlοad=function(){
var bBtu=document.getElementById('bBt');
var oSpan=document.getElementById('span');
var can=document.getElementById('play');
var ctx=can.getContext('2d');
var arr11=[];
var arr12=[];
var arr21=[];
var arr22=[];
var arr31=[];
var arr32=[];
var BTu=true;
ctx.moveTo(20,20);
ctx.lineTo(20,620);
ctx.lineTo(620,620);
ctx.lineTo(620,20);
ctx.lineTo(20,20);
ctx.stroke();
for(var i=20;i<620;i=i+40){
ctx.moveTo(20,i);
ctx.lineTo(620,i);
ctx.stroke();
ctx.moveTo(i,20);
ctx.lineTo(i,620);
ctx.stroke();
}
for(var j=20;j<640;j=j+40){
for(var k=20;k<640;k=k+40){
ctx.beginPath();
ctx.arc(j,k,3,0,2*Math.PI,false);
ctx.closePath();
ctx.fill();
}
}
var a=Math.random();
var b=Math.random();
bBtu.οnmοusedοwn=function(){
if(BTu){
if (a>b) {
oSpan.innerHTML="此局黑子先落";
}else{
oSpan.innerHTML="此局白子先落";
}
BTu=false;
}
can.οnmοusedοwn=function(ev){
var e=ev||window.event;
var X=e.clientX;
var Y=e.clientY;
var x=Math.floor((X-220)/40)*40+40;
var y=Math.floor((Y-20)/40)*40+40;
var Btu=true;
for(var n=0;n<arr31.length;n++){
if(x==arr31[n]&&y==arr32[n]){
Btu=false;
}
}
if(Btu){
if(a>b){
b=2;
a=1;
ctx.fillStyle='#000';
ctx.beginPath();
ctx.arc(x,y,16,0,2*Math.PI,false);
ctx.closePath();
ctx.fill();
arr11.push(x);
arr12.push(y);
arr31.push(x);
arr32.push(y);
win(1);
}else{
a=2;
b=1;
ctx.fillStyle='#fff';
ctx.beginPath();
ctx.arc(x,y,16,0,2*Math.PI,false);
ctx.closePath();
ctx.fill();
arr21.push(x);
arr22.push(y);
arr31.push(x);
arr32.push(y);
win(2);
}
}
}
}
function win(a){
if(a==1){
for(var i=0;i<arr11.length;i++){
var arr111=[1,1,1,1];
for(var j=0;j<arr11.length;j++){
if(arr11[i]==arr11[j]&&((arr12[i]-arr12[j])==40||(arr12[i]-arr12[j])==80||(arr12[i]-arr12[j])==120||(arr12[i]-arr12[j])==160)){
arr111[0]++;
if(arr111[0]==5){
alert("此局黑子胜");
}
}else if(arr12[i]==arr12[j]&&((arr11[i]-arr11[j])==40||(arr11[i]-arr11[j])==80||(arr11[i]-arr11[j])==120||(arr11[i]-arr11[j])==160)){
arr111[1]++;
if(arr111[1]==5){
alert("此局黑子胜");
}
}
for(var c=1;c<5;c++){
if (arr11[i]-arr11[j]==c*40&&arr12[i]-arr12[j]==c*40) {
arr111[2]++;
if(arr111[2]==5){
alert("此局黑子胜");
}
}
if (arr11[i]-arr11[j]==c*40&&arr12[i]-arr12[j]==c*(-40)) {
arr111[3]++;
if(arr111[3]==5){
alert("此局黑子胜");
}
}
}
}
}
}
if(a==2){
for(var n=0;n<arr21.length;n++){
var arr222=[1,1,1,1];
for(var m=0;m<arr21.length;m++){
if(arr21[n]==arr21[m]&&((arr22[n]-arr22[m])==40||(arr22[n]-arr22[m])==80||(arr22[n]-arr22[m])==120||(arr22[n]-arr22[m])==160)){
arr222[0]++;
if(arr222[0]==5){
alert("此局白子胜");
}
}else if(arr22[n]==arr22[m]&&((arr21[n]-arr21[m])==40||(arr21[n]-arr21[m])==80||(arr21[n]-arr21[m])==120||(arr21[n]-arr21[m])==160)){
arr222[1]++;
if(arr222[1]==5){
alert("此局白子胜");
}
}
for(var d=1;d<5;d++){
if (arr21[n]-arr21[m]==d*40&&arr22[n]-arr22[m]==d*40) {
arr222[2]++;
if(arr222[2]==5){
alert("此局白子胜");
}
}
if (arr21[n]-arr21[m]==d*40&&arr22[n]-arr22[m]==d*(-40)) {
arr222[3]++;
if(arr222[3]==5){
alert("此局白子胜");
}
}
}
}
}
}
}
}
</script>