// pages/mine/mine.js
var app=getApp();
const difficulty={
primary:{
column:9,
row:9,
mine_number:10
},
difficult:{
column:16,
row:16,
mine_number:40
},
expert:{
column:16,
row:30,
mine_number:99
}
}
var map=[],mines=[]
Page({
data:{
level:'',
cells:[],
mines:[],
row:'',
column:'',
mine_number:'',
state:'recover',
class_recover:'buttonR',
class_mark:'buttonR',
x:'',
y:'',
isFailed:'false',
remainBlock:'',
remainMine:'',
remainFlag:''
},
help:function(){
wx.navigateTo({
url: '/pages/help/help',
})
},
recover:function(){
this.setData({
state:'recover',
class_recover:'buttonR_tap',
class_mark:'buttonR'
})
},
mark:function(){
this.setData({
state:'mark',
class_mark:'buttonR_tap',
class_recover:'buttonR'
})
},
tap:function(event){
var x=event.currentTarget.dataset.row_num+1;
var y=event.currentTarget.dataset.column_num+1;
var column=this.data.column;
var row=this.data.row;
console.log(x,y);
if(this.data.state=='recover')
{ if(this.data.cells[(x-1)*column+y-1].markFlag==true){
return;
}
if(this.data.cells[(x-1)*column+y-1].isMine==true){
this.failure()
}
else if(this.data.cells[(x-1)*column+y-1].showFlag==false){
let digit=(x-1)*column+y-1
this.setData({
['cells['+digit+'].showFlag']:true,
remainBlock:this.data.remainBlock-1
})
this.broad(x-1,y-1);
}
}
else if(this.data.state=='mark'){
var digit=(x-1)*column+y-1;
if(this.data.remainFlag>=0){
if(this.data.cells[digit].markFlag==true){
this.setData({
['cells['+digit+'].markFlag']:false,
remainFlag:this.data.remainFlag+1
})
if(this.data.cells[digit].isMine==true){
this.setData({
remainMine:this.data.remainMine+1
})
}
}
else if(this.data.remainFlag==0){
return;
}
else if(this.data.cells[digit].markFlag==false){
this.setData({
['cells['+digit+'].markFlag']:true,
remainFlag:this.data.remainFlag-1
})
if(this.data.cells[digit].isMine==true){
this.setData({
remainMine:this.data.remainMine-1
})
}
}
}
else{
return;
}
}
this.checkIfwin();
},
broad:function(x,y){
var column=this.data.column;
var row=this.data.row;
if(x<1||y<1||x>column||y>row){
return;
}
if(this.data.cells[x*column+y].map>0){
return;
}
else if(this.data.cells[x*column+y].map==0){
if(this.data.cells[x*column+y].showFlag==true){
return;
}
else{
for(var i=x-1;i<=x+1;i++){
for(var j=y-1;j<=y+1;j++){
if(i==x&&j==y){
continue;
}
else{
this.broad(i,j);
this.setData({
remainBlock:this.data.remainBlock-1
})
}
}
}
}
}
},
checkIfwin:function(){
var that=this;
if(this.data.remainBlock==0||this.data.remainMine==0){
wx.showModal({
cancelColor: '#008000',
title:'筛查成功',
cancelText:'退出',
confirmColor:'#00f000',
confirmText:'确认',
success(res){
if(res.cancel){
wx.navigateTo({
url: '/pages/index/index',
})
}
else if(res.confirm){
that.setData({
isFailed:true
})
}
}
})
}
},
failure:function(){
var that=this;
wx.showModal({
confirmlColor: '#008000',
title:'你感染了',
confirmText:'彳亍',
showCancel:true,
cancelText:'退出',
cancelColor:'#00F000',
success(res){
if(res.cancel){
wx.navigateTo({
url: '/pages/index/index',
})
}
else{
that.setData({
isFailed:true
})
console.log(that.data.isFailed)
}
}
})
},
judgeIfHave:function(mine){//判断是否重复生成
let mines=this.data.mines;
for(var i=0;i<mines.length;i++){
if(JSON.stringify(mines[i])==JSON.stringify(mine)){
return true;
}
}
return false
},
count:function(coordinate){//计算周围雷数
var sum=1;
for(var i=coordinate[0]-1;i<=coordinate[0]+1;i++){
for(var j=coordinate[1]-1;j<=coordinate[1]+1;j++){
if(i<1||j<1||i>this.data.column||j>this.data.row){
continue
}
else{
if(this.judgeIfHave({x:i,y:j,isMine:true})==true){
sum++;
}
}
}
}
if(this.judgeIfHave({x:coordinate[0],y:coordinate[1],isMine:true})==false){
sum--;
}
return sum;
},
resetGame:function(){
this.setData({
class_recover:'buttonR',
class_mark:'buttonR',
isFailed:false,
cells:[],
mines:[],
remainMine:this.data.mine_number,
remainFlag:this.data.mine_number,
remainBlock:this.data.row*this.data.column-this.data.mine_number
})
console.log(this.data.remainBlock,this.data.remainMine)
for(var i=0;i<this.data.mine_number;i++){
var x=Math.floor(Math.random()*this.data.column+1);
var y=Math.floor(Math.random()*this.data.row+1);
var mine={x:x,y:y,isMine:true};
if(this.judgeIfHave(mine)==false){
let newn=this.data.mines;
newn.push(mine)
this.setData({
mines:newn
})
}
else{
i--;
}
}
console.log(this.data.mines)
for(var i=1;i<=this.data.row;i++){
for(var j=1;j<=this.data.column;j++){
var coordinate=[i,j]
map[(i-1)*this.data.column+j-1]=this.count(coordinate)
}
}
console.log(map)
for(var i=1;i<=this.data.row;i++){
for(var j=1;j<=this.data.column;j++){
let cell={x:i,y:j,isMine:this.judgeIfHave({x:i,y:j,isMine:true}),map:map[(i-1)*this.data.column+j-1],showFlag:false,markFlag:false}
let cells=this.data.cells;
cells.push(cell)
this.setData({
cells:cells
})
}
}
console.log(this.data.cells)
},
onLoad:function(o
没有合适的资源?快使用搜索试试~ 我知道了~
基于JavaScript开发的一个抗疫主题游戏APP项目源码.zip
共57个文件
json:13个
js:12个
wxss:11个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 73 浏览量
2022-12-24
16:52:51
上传
评论 2
收藏 2.58MB ZIP 举报
温馨提示
基于JavaScript开发的一个抗疫主题游戏APP项目源码.zip 基于JavaScript开发的一个抗疫主题游戏APP项目源码.zip 基于JavaScript开发的一个抗疫主题游戏APP项目源码.zip 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习者。 也可作为课程设计、期末大作业。包含:项目源码、项目说明等,该项目可以直接作为毕设使用。 也可以用来学习参考借鉴!
资源推荐
资源详情
资源评论
收起资源包目录
基于JavaScript开发的一个抗疫主题游戏APP项目源码.zip (57个子文件)
sitemap.json 191B
pages
custom_
custom.wxss 94B
custom.json 52B
custom.wxml 796B
custom.js 607B
index
index.wxml 625B
index.js 579B
index.json 27B
index.wxss 336B
showing
showing.wxml 245B
showing.json 52B
showing.js 429B
showing.wxss 32B
index_virus
index_virus.json 52B
index_virus.js 165B
index_virus.wxml 257B
index_virus.wxss 40B
frontsee
frontsee.wxml 667B
frontsee.wxss 142B
frontsee.json 52B
frontsee.js 39B
Choose_hero
Choose_hero.wxss 459B
Choose_hero.wxml 1KB
Choose_hero.js 658B
Choose_hero.json 52B
drawing
drawing.json 52B
drawing.wxml 2KB
drawing.wxss 289B
drawing.js 4KB
virus
virus.wxml 2KB
virus.wxss 1KB
virus.json 52B
virus.js 8KB
logs
logs.json 77B
logs.js 305B
logs.wxml 197B
logs.wxss 106B
help
help.wxml 1KB
help.wxss 165B
help.js 242B
help.json 52B
项目说明.md 85B
app.json 1KB
project.config.json 2KB
app.js 444B
utils
util.js 460B
app.wxss 904B
images
flag.png 212KB
hesuan.jpg 38KB
zhanshi.png 203KB
reading.png 14KB
swiper
共待春暖花开.png 1.23MB
山河无恙.png 849KB
virus.webp 13KB
question.webp 18KB
maobi.png 59KB
dabai.jpg 50KB
共 57 条
- 1
资源评论
Make程序设计
- 粉丝: 5592
- 资源: 3567
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功