WPS-js宏 做了一个“黑”棋

最近在研究wps的js宏,想要通过js宏提高工作中文档处理的效率。不过目前是自己摸索着去学习。

学习过程中使用js宏制作了一个“黑”棋小游戏(官方的游戏名不太清楚)

游戏概述:运行后会出现一个九宫格+一个开始按钮+一个显示下棋步数的控件

游戏规则:运行后九个正方形会随机变成黑色/红色,点击方块可以改变正方形的颜色(黑色红色互转),同时被点击的正方形的相邻(上下左右)正方形也会改变颜色,将9个正方形的颜色都点击为黑色,游戏即胜利同时会显示用到的步数。

以下是关于这个小游戏的制作教程:

(1)新建一个excel文件并打开WPS的js宏编辑器,在编辑器中新建一个窗体,然后就从控件区各种拉,这里拉了一个button(用于开始按钮)、一个标签框(用于显示游戏步数信息)、九个切换按钮(用于9个游戏方块)

(2)代码实现1:游戏加载时的初始化程序+开始按钮对应的程序

//游戏加载初始化程序
function allblack(){
	UserForm1.Close()
	UserForm5.Label1.Caption = ''
	UserForm5.StartUpPostion = 1
	//	设置9个切换按钮的显示值(这个是显示在切换按钮上的值,此处不需要所以设置为空)
	UserForm5.ToggleButton1.Caption = ''
	UserForm5.ToggleButton2.Caption = ''
	UserForm5.ToggleButton3.Caption = ''
	UserForm5.ToggleButton4.Caption = ''
	UserForm5.ToggleButton5.Caption = ''
	UserForm5.ToggleButton6.Caption = ''
	UserForm5.ToggleButton7.Caption = ''
	UserForm5.ToggleButton8.Caption = ''
	UserForm5.ToggleButton11.Caption = ''
	//	显示窗体
	UserForm5.Show()
}
//点击开始按钮程序
function UserForm5_CommandButton1_Click()
{
	UserForm5.Label1.Caption = '-1'
	//	设置切换按钮的值(不是显示值!是值,0和1分别代表切换按钮的两种状态)
	//	这里设置了随机数,实现9个方块随机值的效果
	UserForm5.ToggleButton1.Value = Math.round(Math.random()) 
	UserForm5.ToggleButton2.Value = Math.round(Math.random()) 
	UserForm5.ToggleButton3.Value = Math.round(Math.random()) 
	UserForm5.ToggleButton4.Value = Math.round(Math.random()) 
	UserForm5.ToggleButton5.Value = Math.round(Math.random()) 
	UserForm5.ToggleButton6.Value = Math.round(Math.random()) 
	UserForm5.ToggleButton7.Value = Math.round(Math.random()) 
	UserForm5.ToggleButton8.Value = Math.round(Math.random()) 
	UserForm5.ToggleButton11.Value = Math.round(Math.random()) 
	//	值是随机的但是此时方块不会有颜色,调用颜色更新的程序
	color()
}

 (3)代码实现2:根据切换按钮的值判断方块颜色程序+游戏结束判定程序+记录步数程序

//颜色判定
function color(){
	//	上一步切换按钮生成了随机值0或1,这里值为1背景色为黑色,值为2背景色为红色
	//	此时的颜色值是用的十进制,可能会觉得看不懂
	if(UserForm5.ToggleButton1.Value){
		UserForm5.ToggleButton1.BackColor = 0
	}else{
		UserForm5.ToggleButton1.BackColor = 16711680
	}
	if(UserForm5.ToggleButton2.Value){
		UserForm5.ToggleButton2.BackColor = 0
	}else{
		UserForm5.ToggleButton2.BackColor = 16711680
	}
	if(UserForm5.ToggleButton3.Value){
		UserForm5.ToggleButton3.BackColor = 0
	}else{
		UserForm5.ToggleButton3.BackColor = 16711680
	}
	if(UserForm5.ToggleButton4.Value){
		UserForm5.ToggleButton4.BackColor = 0
	}else{
		UserForm5.ToggleButton4.BackColor = 16711680
	}
	if(UserForm5.ToggleButton5.Value){
		UserForm5.ToggleButton5.BackColor = 0
	}else{
		UserForm5.ToggleButton5.BackColor = 16711680
	}
	if(UserForm5.ToggleButton6.Value){
		UserForm5.ToggleButton6.BackColor = 0
	}else{
		UserForm5.ToggleButton6.BackColor = 16711680
	}
	if(UserForm5.ToggleButton7.Value){
		UserForm5.ToggleButton7.BackColor = 0
	}else{
		UserForm5.ToggleButton7.BackColor = 16711680
	}
	if(UserForm5.ToggleButton8.Value){
		UserForm5.ToggleButton8.BackColor = 0
	}else{
		UserForm5.ToggleButton8.BackColor = 16711680
	}
	if(UserForm5.ToggleButton11.Value){
		UserForm5.ToggleButton11.BackColor = 0
	}else{
		UserForm5.ToggleButton11.BackColor = 16711680
	}
	//	更新完颜色后会触发记录步数的程序和游戏结束判定的程序
	jibu()
	end()
}
//结束判定
function end()
{
	//	当切换按钮(游戏方块)的值全为1,游戏结束!
	if (UserForm5.ToggleButton1.Value == 1 && 
		UserForm5.ToggleButton2.Value == 1 && 
		UserForm5.ToggleButton3.Value == 1 && 
		UserForm5.ToggleButton4.Value == 1 && 
		UserForm5.ToggleButton5.Value == 1 && 
		UserForm5.ToggleButton6.Value == 1 && 
		UserForm5.ToggleButton7.Value == 1 && 
		UserForm5.ToggleButton8.Value == 1 && 
		UserForm5.ToggleButton11.Value == 1
		)
		{
			let a = UserForm5.Label1.Caption
			UserForm5.Label1.Caption = "success" + a
		}
}
//记录步数
function jibu()
{
	UserForm5.Label1.Caption ++
}

  (4)代码实现3:9个切换按钮(游戏方块)被按下后更换值的程序

//以下9段程序为9个切换按钮(游戏方块)的对应程序
//当方块被点击时,程序会让该方块的上下左右四面的相邻方块的值变化(0和1的转换),并执行颜色更新的程序
//!!!此处不需要写被点击的方块更改值的程序,因为切换按钮被点击会自动切换!!!
function UserForm5_ToggleButton1_Click()
{
	UserForm5.ToggleButton2.Value = 1 ^ (UserForm5.ToggleButton2.Value ? 1 : 0)
	UserForm5.ToggleButton4.Value = 1 ^ (UserForm5.ToggleButton4.Value ? 1 : 0)
	color()
}
function UserForm5_ToggleButton2_Click()
{
	UserForm5.ToggleButton1.Value = 1 ^ (UserForm5.ToggleButton1.Value ? 1 : 0)
	UserForm5.ToggleButton3.Value = 1 ^ (UserForm5.ToggleButton3.Value ? 1 : 0)
	UserForm5.ToggleButton5.Value = 1 ^ (UserForm5.ToggleButton5.Value ? 1 : 0)
	color()
}
function UserForm5_ToggleButton3_Click()
{
	UserForm5.ToggleButton2.Value = 1 ^ (UserForm5.ToggleButton2.Value ? 1 : 0)
	UserForm5.ToggleButton6.Value = 1 ^ (UserForm5.ToggleButton6.Value ? 1 : 0)
	color()
}
function UserForm5_ToggleButton4_Click()
{
	UserForm5.ToggleButton1.Value = 1 ^ (UserForm5.ToggleButton1.Value ? 1 : 0)
	UserForm5.ToggleButton7.Value = 1 ^ (UserForm5.ToggleButton7.Value ? 1 : 0)
	UserForm5.ToggleButton5.Value = 1 ^ (UserForm5.ToggleButton5.Value ? 1 : 0)
	color()
}
function UserForm5_ToggleButton5_Click()
{
	UserForm5.ToggleButton2.Value = 1 ^ (UserForm5.ToggleButton2.Value ? 1 : 0)
	UserForm5.ToggleButton4.Value = 1 ^ (UserForm5.ToggleButton4.Value ? 1 : 0)
	UserForm5.ToggleButton8.Value = 1 ^ (UserForm5.ToggleButton8.Value ? 1 : 0)
	UserForm5.ToggleButton6.Value = 1 ^ (UserForm5.ToggleButton6.Value ? 1 : 0)
	color()
}
function UserForm5_ToggleButton6_Click()
{
	UserForm5.ToggleButton3.Value = 1 ^ (UserForm5.ToggleButton3.Value ? 1 : 0)
	UserForm5.ToggleButton11.Value = 1 ^ (UserForm5.ToggleButton11.Value ? 1 : 0)
	UserForm5.ToggleButton5.Value = 1 ^ (UserForm5.ToggleButton5.Value ? 1 : 0)
	color()
}
function UserForm5_ToggleButton7_Click()
{
	UserForm5.ToggleButton4.Value = 1 ^ (UserForm5.ToggleButton4.Value ? 1 : 0)
	UserForm5.ToggleButton8.Value = 1 ^ (UserForm5.ToggleButton8.Value ? 1 : 0)
	color()
}
function UserForm5_ToggleButton8_Click()
{
	UserForm5.ToggleButton7.Value = 1 ^ (UserForm5.ToggleButton7.Value ? 1 : 0)
	UserForm5.ToggleButton11.Value = 1 ^ (UserForm5.ToggleButton11.Value ? 1 : 0)
	UserForm5.ToggleButton5.Value = 1 ^ (UserForm5.ToggleButton5.Value ? 1 : 0)
	color()
}
function UserForm5_ToggleButton11_Click()
{
	UserForm5.ToggleButton6.Value = 1 ^ (UserForm5.ToggleButton6.Value ? 1 : 0)
	UserForm5.ToggleButton8.Value = 1 ^ (UserForm5.ToggleButton8.Value ? 1 : 0)
	color()
}

 到此完成

另:目前网上关于JS宏的教程少且乱,毕竟是在VBA宏之后出现的,所以搜索问题时经常会出现vba宏的教程和讲解,这对于个人学习JS宏真的太难了,如果有同样需求同样问题的bro,可以评论区集合讨论一波~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值