原生js实现五子棋游戏
作者:阿布的小布 发布时间:2024-06-18 03:22:13
标签:js,五子棋
本文实例为大家分享了js实现五子棋游戏的具体代码,供大家参考,具体内容如下
html:
<body>
<h2>五子棋游戏</h2>
<div id="box">
<div id="box01"></div>
<div id="box02">haha</div>
</div>
</body>
css:
<style type="text/css">
*{
margin: 0;
padding: 0;
}
body{
/*overflow: hidden;*/
margin-top: 10px;
text-align: center;
background-color: #C7C7C7;
}
#box{
position: relative;
border: 1px solid;
margin: 20px auto;
width: 546px;
height: 546px;
background-color: #C7C7C7;
}
#box .squre{
width: 40px;
height: 40px;
border: 1px solid;
float: left;
}
#box01 .squre:hover{
background-color: pink;
}
#box01{
position: absolute;
/*border: 1px solid;*/
margin: 0 auto;
width: 588px;
height: 588px;
/*background-color: pink;*/
/*opacity: 0.5;*/
top: -20px;
left: -20px;
}
#box01 .qz{
width: 30px;
height: 30px;
border: 1px solid #C7C7C7;
float: left;
border-radius: 50%;
margin: 5px;
}
#box01 .qz:hover{
background-color: pink;
}
#box02{
position: absolute;
line-height: 546px;
font-size: 50px;
color: black;
width: 100%;
background-color: pink;
display: none;
opacity: 0.6;
}
</style>
script:
<script type="text/javascript">
window.onload = function () {
let box = document.getElementById("box");
let box01 = document.getElementById("box01");
//画棋盘
let arr = new Array();
for (let i=0;i<13;i++){
arr[i] = new Array();
for (let j=0;j<13;j++){
arr[i][j] = document.createElement("div");
arr[i][j].className = "squre";
box.appendChild(arr[i][j]);
}
}
//画棋子
let arr01 = new Array();
for (let i=0;i<14;i++){
arr01[i] = new Array();
for (let j=0;j<14;j++){
arr01[i][j] = document.createElement("div");
arr01[i][j].className = "qz";
box01.appendChild(arr01[i][j]);
}
}
for (let m=0;m<14;m++){
for (let n=0;n<14;n++){
arr01[m][n].onclick = function () {
//下棋之前统计一下黑白棋的个数,以便黑白交换下棋
let count = 0;
for (let l = 0; l < 14; l++) {
for (let k = 0; k < 14; k++){
if (arr01[l][k].style.backgroundColor != "") {
count++;
}
}
}
// console.log(count);
if (this.className == "qz" && count % 2 == 0 && this.style.backgroundColor == "") {
//下棋
this.style.backgroundColor = "black";
//引入判断函数
// console.log(m,n);
checkGame(m, n);
} else if (this.className == "qz" && count % 2 != 0 && this.style.backgroundColor == "") {
//下棋
this.style.backgroundColor = "white";
//引入判断函数
checkGame(m, n);
}
}
}
}
//判断哪方输赢,四个方向(横向、纵向、左斜、右斜)
//m是y轴,n是x轴
let a,b;
let flag = 0;
let box02 = document.getElementById("box02");
function checkGame(a,b) {
//判断横向
let qzColor = arr01[a][b].style.backgroundColor;
// console.log(qzColor);
for (let k=(b-4);k<=(b+4);k++){
if (k>=0 && k < 14){
if (qzColor == arr01[a][k].style.backgroundColor && arr01[a][k].style.backgroundColor != ""){
flag++;
if (flag == 5){
// alert(qzColor+" win!!");
box02.innerHTML = qzColor+" win!!";
box02.style.display = "block";
}
} else {
flag = 0;
}
} else {
flag = 0;
}
}
//判断纵向
for (let k=(a-4);k<=(a+4);k++){
if (k>=0 && k < 14){
if (qzColor == arr01[k][b].style.backgroundColor && arr01[k][b].style.backgroundColor != ""){
flag++;
if (flag == 5){
// alert(qzColor+" win!!");
box02.innerHTML = qzColor+" win!!";
box02.style.display = "block";
}
} else {
flag = 0;
}
} else {
flag = 0;
}
}
//判断左斜
let ax = (a-4);//ax用来记录横坐标的变化
for (let k=(b-4);k<=(b+4);k++){
if (k>=0 && k < 14 && ax>=0 && ax<14){
if (qzColor == arr01[ax][k].style.backgroundColor && arr01[ax][k].style.backgroundColor != ""){
flag++;
if (flag == 5){
// alert(qzColor+" win!!");
box02.innerHTML = qzColor+" win!!";
box02.style.display = "block";
}
} else {
flag = 0;
}
} else {
flag = 0;
}
ax++;
}
//判断右斜
bx = a-4;
for (let k=(b+4);k>=(b-4);k--){
if (k>=0 && k < 14 && bx>=0 && bx<14){
if (qzColor == arr01[bx][k].style.backgroundColor && arr01[bx][k].style.backgroundColor != ""){
flag++;
if (flag == 5){
// alert(qzColor+" win!!");
box02.innerHTML = qzColor+" win!!";
box02.style.display = "block";
}
} else {
flag = 0;
}
} else {
flag = 0;
}
bx++;
}
}
}
</script>
来源:https://blog.csdn.net/weixin_44038355/article/details/84944060


猜你喜欢
- 一、JSON数据格式介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON建
- 表的普通字段 一对多字段 多对多字段 插入数据#插入数据def add(request):G_title=request.POST.get(
- Python是一种高级编程语言,它在众多编程语言中,拥有极高的人气和使用率。Python中的多进程和进程池是其强大的功能之一,可以让我们更加
- 例如,当前网页中的url为https://www.baidu.com?a=111&b=222想要获取url中的a,b参数,代码如下:
- 使用auto.js实现自动化每日打卡疫情原因,需要在家每天定时打卡,每天刚起床的时候避免不了出现注意力不集中或者是看不到app,点不到按钮什
- javaScript 代码如下:$(document).ready(function(){ $(".message_list .m
- 引言:今天又双叒搞新电脑的环境,对于我这个.Net程序员,那就肯定离不开安装 SQL Server 了,网上没有找到很详细的教程,所以决定自
- 以前经常吃公司旁边的食堂,人多,排队。夏天的时候,我们总要找一个靠窗口通风好的地方坐,没有空调只有风扇,风扇很多,开关都集中在一个地方,应该
- 1. 前台templates/upload/upload.html<!DOCTYPE html><html lang=&q
- 本文实例讲述了Java连接各种数据库的方法。分享给大家供大家参考。具体如下://MySQL:  
- 本文实例讲述了C#操作SQLite数据库方法。分享给大家供大家参考,具体如下:SQLite介绍SQLite is a software li
- 一、pip异常有一小部分童鞋在打开cmd输入pip后出现下面情况:Did not provide a commandDid not prov
- 官网文档http://www.yiiframework.com/doc-2.0/guide-structure-assets.htmlyii
- 1. 排名函数与PARTITION BY --所有数据 SELECT * FROM dbo.student AS a INNER JOIN
- 介绍RANGE分区基于一个给定的连续区间范围,早期版本RANGE主要是基于整数的分区。在5.7版本中DATE、DATETIME列也可以使用R
- 加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysda
- 在使用pip安装Tensorflow后,在其目录中没有找到model目录,重复安装了两遍依然没有,原因未知。于是,使用源码安装的方法:(1)
- 一 前言前文 介绍了5.5/5.6 版本的MySQL semi sync 基础原理和配置,随着MySQL 5.7 的发布,新版本的MySQL
- 大凡人世间的痛苦,多是因放不下有时候我常想,痛苦,该是时光刮给生命的一场飓风吧生活,本就是以这样一种特别的方式,掀起遮盖的一切,让你看到人生
- 在做接口自动化的时候,请求数据之前都是JSON格式的,Python有自带的包来解决。最近在做APP的接口,遇到XML格式的请求数据,费了很大