<!DOCTYPE html><html dir="ltr"><head> <meta charset="utf-8"> <title>贪吃蛇</title> <style media="screen"> .map { width: 800px; height: 600px; background-color: #ccc; position: relative; margin: auto; } </style></head><body> <div class="map"></div> <script type="text/javascript"> //map的这个div var map = document.querySelector(".map"); //食物对象 (function() { var elements = []; // var num=11; // window.num = num; function Food(width, height, color, x, y) { this.width = width; this.height = height; this.color = color; this.x = x; this.y = y; console.log(this.width); console.log(window); var num=11; window.num = num; }; //食物方法 初识化 在地图 Food.prototype.init = function(map) { remove(); //把div创建 var div = document.createElement("div"); //方地图 map.appendChild(div); //初始化div div.style.position = "absolute"; div.style.width = this.width + "px"; div.style.height = this.height + "px"; div.style.backgroundColor = this.color; this.x = parseInt(Math.random() * (map.offsetWidth / this.width)) * this.width; this.y = parseInt(Math.random() * (map.offsetHeight / this.height)) * this.height; div.style.left = this.x + "px"; div.style.top = this.y + "px"; elements.push(div); // console.log(elements); }; function remove() { for (var i = 0; i < elements.length; i++) { var ele = elements[i]; ele.parentNode.removeChild(ele); elements.splice(i, 1); } } window.Food = Food; }()); //小蛇 自调用 (function() { var elements=[]; function Snake(width, height, direction) { // 方块(每个)宽高 this.width = width; this.height = height; // 身体数组 this.body = [{ x: 3, y: 2, color: "red" }, //头 { x: 2, y: 2, color: "orange" }, //身体 { x: 1, y: 2, color: "orange" } //身体 ]; //方向 this.direction = direction||"right"; //初始化小蛇 Snake.prototype.init = function(map) { //删除上一次小蛇 remove(); //每个div进行循环() for (var i = 0; i < this.body.length; i++) { var obj = this.body[i]; //创建 var div = document.createElement('div'); //放到地图上 map.appendChild(div); //设置样式 div.style.width = this.width + "px"; div.style.height = this.height + "px"; div.style.position = "absolute"; div.style.left = obj.x * this.width + "px"; div.style.top = obj.y * this.height + "px"; //背景颜色 div.style.backgroundColor = obj.color; elements.push(div); console.log(num); } } } //小蛇移动 Snake.prototype.move = function(food, map) { //针对身体 for (var i = this.body.length - 1; i > 0; i--) { this.body[i].x = this.body[i - 1].x; this.body[i].y = this.body[i - 1].y; } //对于头部 // console.log(this.direction); switch (this.direction) { case "right": this.body[0].x += 1 break; case "left": this.body[0].x -= 1 break; case "top": this.body[0].y += 1 break; case "bottom": this.body[0].y -= 1 break; // default:"请使用方向键进行移动" } } function remove() { for (var i = elements.length - 1; i >=0 ; i--) { var ele=elements[i]; // console.log(Snake); // console.dif(Snake); ele.parentNode.removeChild(ele); elements.splice(i,1); } } window.Snake = Snake; }()); //测试function a() { console.log(window.num); console.log(Food); alert("sds")};a(); console.log(window); // console.log(num); // console.log(devicePixelRatio); // console.log(Food.length); var fd = new Food(20, 20, "green"); fd.init(map); var sna = new Snake(20, 20); sna.init(map); sna.move(map); sna.init(map); // sna.move(map); // sna.init(map); // sna.move(map); // sna.init(map); </script></body></html>
1 回答
已采纳
聪明的汤姆
TA贡献112条经验 获得超33个赞
你的代码window.num = num写在Food构造函数里,构造函数里面的代码要实例化之后才会执行,也就是new Food()之后,而你在函数a里面输出window.num,这时候还没成功赋值呢,应该把a函数的调用放在new Food()之后。
function Food () { window.num = 11; } var fd = new Food(); function a () { console.log(window.num); } a();
望采纳~
添加回答
举报
0/150
提交
取消