集中实验3 方块游戏 实验要求: 1)在800*800的框中每隔2秒随机位置生成小方块,宽高为5px,颜色为绿色,随着生存时间的增加,宽高逐渐变大,最多为10px,颜色逐渐转红; 2)小方块在框中随机移动,每次移动距离在5px以内,不能移出框外; 3)用鼠标点击任意一个方块,则方块消失; 4)如果框中的方块数目少于20个,则新生成一个。步骤: 1. 页面上放一个800*800的div 2. 创建函数实现 (1)在最大的div上添加5x5的div,位置随机,但top与left不能大于790,不足20要继续添加;(要用到createElement、appendChild) (2) 单击某一个小div要消失(要用到removeChild) (3) 随着生存时间的增加,宽高逐渐变大(修改width和height) (4) 颜色逐渐变红 (5) 小方块在框中随机移动,每次移动距离在5px以内(改变left、top.在-5到+5之间) 3.该函数每个2秒被调用
时间: 2023-11-27 15:50:09 浏览: 234
以下是代码实现:
HTML部分:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>方块游戏</title>
<style type="text/css">
#container {
width: 800px;
height: 800px;
border: 1px solid black;
position: relative;
}
.box {
width: 5px;
height: 5px;
background-color: green;
border: 1px solid black;
position: absolute;
cursor: pointer;
}
</style>
</head>
<body>
<div id="container"></div>
<script type="text/javascript" src="script.js"></script>
</body>
</html>
```
JavaScript部分:
```javascript
var container = document.getElementById("container");
var boxCount = 0;
function createBox() {
if (boxCount < 20) {
var box = document.createElement("div");
box.className = "box";
box.style.top = Math.floor(Math.random() * 790) + "px";
box.style.left = Math.floor(Math.random() * 790) + "px";
container.appendChild(box);
boxCount++;
}
}
function removeBox(box) {
container.removeChild(box);
boxCount--;
}
function moveBox(box) {
var left = parseInt(box.style.left) + Math.floor(Math.random() * 11) - 5;
var top = parseInt(box.style.top) + Math.floor(Math.random() * 11) - 5;
if (left < 0) left = 0;
if (left > 790) left = 790;
if (top < 0) top = 0;
if (top > 790) top = 790;
box.style.left = left + "px";
box.style.top = top + "px";
}
function updateBox(box) {
var width = parseInt(box.style.width);
var height = parseInt(box.style.height);
if (width < 10) {
box.style.width = (width + 1) + "px";
box.style.height = (height + 1) + "px";
}
var color = box.style.backgroundColor;
var red = parseInt(color.substring(4, color.indexOf(","))) + 1;
if (red > 255) red = 255;
box.style.backgroundColor = "rgb(" + red + ", 0, 0)";
}
setInterval(function() {
createBox();
var boxes = document.getElementsByClassName("box");
for (var i = 0; i < boxes.length; i++) {
moveBox(boxes[i]);
updateBox(boxes[i]);
boxes[i].addEventListener("click", function() {
removeBox(this);
});
}
}, 2000);
```
解释:
1. 通过 `document.getElementById()` 方法获取容器元素,定义计数器 `boxCount`,初始为0。
2. 定义 `createBox()` 函数,用于创建小方块。如果 `boxCount` 小于20,则创建一个新的小方块。设置小方块的类名为 `box`,在容器内随机设置其 `top` 和 `left` 值,并添加到容器内,同时将 `boxCount` 加1。
3. 定义 `removeBox(box)` 函数,用于移除小方块。通过 `container.removeChild()` 方法从容器内移除传入的小方块元素,并将 `boxCount` 减1。
4. 定义 `moveBox(box)` 函数,用于移动小方块。在 `left` 和 `top` 值上随机增加或减少不超过5的数值,但保证不超出容器边界。
5. 定义 `updateBox(box)` 函数,用于更新小方块属性。每次调用,将小方块的宽和高分别增加1,直到最大为10。同时将小方块的背景色从绿色逐渐变为红色。
6. 使用 `setInterval()` 方法每隔2秒调用一次函数。首先调用 `createBox()` 函数创建新的小方块,然后遍历容器内的所有小方块,依次调用 `moveBox(box)`、`updateBox(box)` 和添加点击事件的代码。
7. 点击小方块时,会触发 `removeBox(box)` 方法,移除该小方块。如果小方块数量少于20,则在下一次调用 `createBox()` 时会创建新的小方块。
阅读全文