美文网首页程序员的日常
关灯游戏的算法 js实现

关灯游戏的算法 js实现

作者: 柠檬草的幸运 | 来源:发表于2016-08-20 17:23 被阅读0次

游戏规则:

关灯游戏的原理是这样的,如果我们有10x10共100盏灯,开始时都处于关闭状态,100盏灯全部点亮时,游戏结束。但是每次只能打开/关闭一盏灯,由于电路设计的原因,和它相邻的四盏灯也会改变关闭/打开状态,所以要把100盏灯全部打开多多思考。

游戏算法分析:

我们可以用一盏灯来分析问题,根据游戏规则可知,第一次点击灯时,灯会被点亮,第二次点击灯时,灯又会被熄灭,在点击灯的同时它的上下左右也会跟着点亮,同理第二次点击时灯会被熄灭。

在写算法饿时候就应该考虑如何操作才能获取它的上下左右,让其上下左右同时跟着点亮/熄灭,这个时候我们可以定义一个数组,通过计算其上下左右的下标来来控制其灯的状态。

这是我写的关灯游戏的效果图:

//这是定义外面大的div的样式

* {

margin: 0px;

padding: 0px;

}

#wrap {

width: 500px;

height: 500px;

margin: 0 auto;

position: relative;

}

//这是用js实现关灯游戏的算法

// 获取wrap div

var wrap = document.getElementById('wrap');

// 定义空数组,保存所有的lights

var lights = [];

for (var i = 0; i < 10; i++) {

for (var j = 0; j < 10; j ++) {

// 生成div,用作关灯游戏的灯

var aLight = document.createElement('div');

// 为wrap添加子标签

wrap.appendChild(aLight);

// 设置aLight的样式

aLight.style.width = '10%';

aLight.style.height = '10%';

aLight.style.border = '1px solid gray';

aLight.style.backgroundColor = 'black';

aLight.style.position = 'absolute';

aLight.style.top = i * 10 + '%';

aLight.style.left = j * 10 + '%';

aLight.index = lights.length;

// 同时alight将保存在lights数组中

lights.push(aLight);

aLight.onclick = function () {

// 首先改变当前点击lights的颜色

// event.target 是指当前正在接受事件对象

// 如果是点击div,则就是被点击div的本身

var currentLight = event.target;

if (currentLight.style.backgroundColor == 'black') {

currentLight.style.backgroundColor = 'yellow';

}else {

currentLight.style.backgroundColor = 'black';

}

// 获取上边的灯

if (currentLight.index >= 10) {

var topLight = lights[currentLight.index - 10];

topLight.style.backgroundColor =

(topLight.style.backgroundColor == 'black') ? 'yellow' : 'black';

}

// 获取下边的灯

if (currentLight.index + 10 < lights.length) {

var bottomLight = lights[currentLight.index + 10];

bottomLight.style.backgroundColor =

(bottomLight.style.backgroundColor == 'black') ? 'yellow' : 'black';

}

// 获取左边的灯

if (currentLight.index % 10 != 0) {

var leftLight = lights[currentLight.index - 1];

leftLight.style.backgroundColor =

(leftLight.style.backgroundColor == 'black') ? 'yellow' : 'black';

}

// 获取右边的灯

if (currentLight.index % 10 != 9) {

var rightLight = lights[currentLight.index + 1];

rightLight.style.backgroundColor =

(rightLight.style.backgroundColor == 'black') ? 'yellow' : 'black';

}

}

}

}

相关文章

  • 关灯游戏的算法 js实现

    游戏规则: 关灯游戏的原理是这样的,如果我们有10x10共100盏灯,开始时都处于关闭状态,100盏灯全部点亮时,...

  • JS开关灯游戏

    开关灯游戏的大体的思路分为三部分:1、创建格子 ;2、开关函数 ;3、判断上下左右的函数 一、创建格子的时候呢...

  • JavaScript模拟图操作

    JS操作实现无向网的Prim算法 最后输出结果如下: 其中例子中的图如下: JavaScript实现Dijkstra算法

  • 关灯游戏

    关灯是件不容易的事 瞬间被黑暗淹没的感觉 提供了不为人知的秘密 一个人的时候 眼泪都是咸的 那些爱过的 疼过的 错...

  • 关灯游戏

    我不喜欢下雨天,可我所在的城市却偏偏细雨绵绵。我多希望明天可以看到晴空万里。那样我应该就不会像现在这样压抑 这样的...

  • 关灯游戏

    房间里黑漆漆的,谁也看不见谁。 “谁先开灯谁输,十……九……”白炽光大亮,我还没喊后面的八七六五呢! “弟弟,你怎...

  • JS简单实现决策树(ID3算法)

    推荐阅读:ID3算法 wiki决策树算法及实现完整示例代码:JS简单实现决策树(ID3算法)_demo.html ...

  • 游戏开发:js实现简单的板球游戏

    js实现简单的板球游戏 大家好,本次我们来使用js来实现一个简单的板球游戏。截图如下: 首先,设计页面代码,页面代...

  • 全网最好的数据结构学习文章合集系列之空间复杂度

    二、空间复杂度 算法概念 及 复杂度 简单的LRU Cache设计与实现 js算法初窥07(算法复杂度) 算法的时...

  • 好程序员分享js实现简单的板球游戏

    好程序员分享js实现简单的板球游戏,大家好,本次我们来使用js来实现一个简单的板球游戏。截图如下: 首先,设计页面...

网友评论

    本文标题:关灯游戏的算法 js实现

    本文链接:https://www.haomeiwen.com/subject/kjsisttx.html