制作两个具有两种不同功能的正方形,(JavaScript)

时间:2017-05-31 14:38:39

标签: javascript function components

我试图并排制作两个正方形,一个选择随机位置,另一个选择固定位置。我这样做是通过制作两个组件函数,每个函数都有不同的属性。但是,每当我尝试添加component2函数时,都会出现一个错误,表示在我的代码的最末端输入意外结束。这阻止我运行代码。我该怎么做才能解决这个问题?

<html>
	<head>
	
		
	</head>
<body>

<p> Click Start Game to play </p>
<div id="start">Start Game</div>
<div id="hi">Hi</div>




<script>




function component(width, height, color, x, y, type) {
    this.type = type;
    if (type == "image"){
	this.image = new Image();
	this.image.src = color;
    }
    this.score = 0;
    this.width = width;
    this.height = height;
    this.speedX = 0;
    this.speedY = 0;    
    this.x = x;
    this.y = y;
    this.gravity = 0;
    this.gravitySpeed = 0;
    this.color=color;
    this.update = function() {
       random = Math.floor((Math.random()*200) + 1);
       random2 = Math.floor((Math.random()*200) + 1);
       function getRandomColor() {
           var letters = '0123456789ABCDEF';
           var color = '#';
           for (var i = 0; i < 6; i++ ) {
              color += letters[Math.floor(Math.random() * 16)];
            }
           return color;
       }
       randcolor=getRandomColor();
        ctx = myGameArea.context;
        if (this.type == "image"){
	    ctx.drawImage(this.image, random, random2, random,random2);
        } else {
            ctx.fillStyle = randcolor;
            ctx.fillRect(random, random2, 50, 50);
        }
        this.x=random;
        this.y=random2;
        this.width=50;
        this.height=50;
        this.color=randcolor;
    }

}


function component2(width, height, color, x, y, type) {
    this.type = type;
    if (type == "image"){
	this.image = new Image();
	this.image.src = color;
    }
    this.score = 0;
    this.width = width;
    this.height = height;
    this.speedX = 0;
    this.speedY = 0;    
    this.x = x;
    this.y = y;
    this.gravity = 0;
    this.gravitySpeed = 0;
    this.update = function() {
        ctx = myGameArea.context;
        if (this.type == "image"){
	    ctx.drawImage(this.image,this.x, this.y, this.width,this.height);
        } else {
            ctx.fillStyle = color;
            ctx.fillRect(this.x, this.y, this.width, this.height);
        }
    }
    this.newPos = function() {
        this.x = this.x + this.speedX;
        this.y = this.y + this.speedY;
	//removed hitting rock bottom because the background and other pieces will be off screen.
	
    }
    this.hitBottom = function() {
        var rockbottom = myGameArea.canvas.height - this.height;
        if (this.y > rockbottom) {
            this.y = rockbottom;
            this.gravitySpeed = 0;
	    board =1;
        }
    }
    this.crashWith = function(otherobj) {
        var myleft = this.x;
        var myright = this.x + (this.width);
        var mytop = this.y;
        var mybottom = this.y + (this.height);
        var otherleft = otherobj.x;
        var otherright = otherobj.x + (otherobj.width);
        var othertop = otherobj.y;
        var otherbottom = otherobj.y + (otherobj.height);
        var crash = true;
        if ((mybottom < othertop) || (mytop > otherbottom) || (myright < otherleft) || (myleft > otherright)) {
            crash = false;
        }
        return crash;
    }
function startGame() {
	random = Math.floor((Math.random()*100) + 1);


	random2 = Math.floor((Math.random()*100) + 1);


	square = new component(50, 50, "green", random, random2);
	myGamePiece = new component(30, 40, "greenhorn.gif", 220, 120,"image");
myGameArea.start();
return square		
}



var myGameArea = {
    canvas : document.createElement("canvas"),
    start : function() {
	
        this.canvas.width = 450;
        this.canvas.height = 270;
        this.context = this.canvas.getContext("2d");
        document.body.insertBefore(this.canvas, document.body.childNodes[0]);
        
        this.interval = setInterval(updateGameArea, 1000);
        },
    clear : function() {
      this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
    }
}



function updateGameArea() {
    
    myGameArea.clear();
    square.update();

}




document.getElementById("start").addEventListener('click', startGame);
</script>
</body>


</html>

1 个答案:

答案 0 :(得分:1)

之后需要一个额外的结束花括号
objects = [
  {
    firstname: 'Jo',
    lastname : 'Brown'
    mail: 'jo@brown.com',
    courses: ['en', 'fr', 'es']

    ....and a lot more...
  },
  {
    firstname: 'Jack',
    lastname : 'Black'
    mail: 'blackjack@jackblack.win',
    courses: ['en', 'fr']
    ....and a lot more...
  },
  {
    firstname: 'Jeff',
    lastname : 'Grey'
    mail: 'grey@jeff.co.uk',
    courses: ['es']
    ....and a lot more...
  },

  ...and a lot more...
]

_objectsFilters = [
  {
    property: ['courses']
    value: ['es']
  }
]

objectsFiltered = [
  {
    firstname: 'Jo',
    lastname : 'Brown'
    mail: 'jo@brown.com',
    courses: ['en', 'fr', 'es']

    ....and a lot more...
  },
  {
    firstname: 'Jeff',
    lastname : 'Grey'
    mail: 'grey@jeff.co.uk',
    courses: ['es']
    ....and a lot more...
  },

  ...and a lot more...
]

inactiveObjects = [
  {
    inactiveCause: {
      property: ['courses'],
      value: ['es']
    },
    /* containing all objects inactive because of the above filter */
    objects: [
      {
        firstname: 'Jack',
        lastname : 'Black'
        mail: 'blackjack@jackblack.win',
        courses: ['en', 'fr']
        ....and a lot more...
      },
    ]
  }
]

        return crash;
    } 
} // this is missing
function component(width, height, color, x, y, type) {
    this.type = type;
    if (type == "image") {
        this.image = new Image();
        this.image.src = color;
    }
    this.score = 0;
    this.width = width;
    this.height = height;
    this.speedX = 0;
    this.speedY = 0;
    this.x = x;
    this.y = y;
    this.gravity = 0;
    this.gravitySpeed = 0;
    this.color = color;
    this.update = function () {
        random = Math.floor((Math.random() * 200) + 1);
        random2 = Math.floor((Math.random() * 200) + 1);
        function getRandomColor() {
            var letters = '0123456789ABCDEF';
            var color = '#';
            for (var i = 0; i < 6; i++) {
                color += letters[Math.floor(Math.random() * 16)];
            }
            return color;
        }
        randcolor = getRandomColor();
        ctx = myGameArea.context;
        if (this.type == "image") {
            ctx.drawImage(this.image, random, random2, random, random2);
        } else {
            ctx.fillStyle = randcolor;
            ctx.fillRect(random, random2, 50, 50);
        }
        this.x = random;
        this.y = random2;
        this.width = 50;
        this.height = 50;
        this.color = randcolor;
    }

}

function component2(width, height, color, x, y, type) {
    this.type = type;
    if (type == "image") {
        this.image = new Image();
        this.image.src = color;
    }
    this.score = 0;
    this.width = width;
    this.height = height;
    this.speedX = 0;
    this.speedY = 0;
    this.x = x;
    this.y = y;
    this.gravity = 0;
    this.gravitySpeed = 0;
    this.update = function () {
        ctx = myGameArea.context;
        if (this.type == "image") {
            ctx.drawImage(this.image, this.x, this.y, this.width, this.height);
        } else {
            ctx.fillStyle = color;
            ctx.fillRect(this.x, this.y, this.width, this.height);
        }
    }
    this.newPos = function () {
        this.x = this.x + this.speedX;
        this.y = this.y + this.speedY;
        //removed hitting rock bottom because the background and other pieces will be off screen.

    }
    this.hitBottom = function () {
        var rockbottom = myGameArea.canvas.height - this.height;
        if (this.y > rockbottom) {
            this.y = rockbottom;
            this.gravitySpeed = 0;
            board = 1;
        }
    }
    this.crashWith = function (otherobj) {
        var myleft = this.x;
        var myright = this.x + (this.width);
        var mytop = this.y;
        var mybottom = this.y + (this.height);
        var otherleft = otherobj.x;
        var otherright = otherobj.x + (otherobj.width);
        var othertop = otherobj.y;
        var otherbottom = otherobj.y + (otherobj.height);
        var crash = true;
        if ((mybottom < othertop) || (mytop > otherbottom) || (myright < otherleft) || (myleft > otherright)) {
            crash = false;
        }
        return crash;
    }
}
function startGame() {
    random = Math.floor((Math.random() * 100) + 1);
    random2 = Math.floor((Math.random() * 100) + 1);
    square = new component(50, 50, "green", random, random2);
    myGamePiece = new component(30, 40, "greenhorn.gif", 220, 120, "image");
    myGameArea.start();
    return square
}

var myGameArea = {
    canvas: document.createElement("canvas"),
    start: function () {
        this.canvas.width = 450;
        this.canvas.height = 270;
        this.context = this.canvas.getContext("2d");
        document.body.insertBefore(this.canvas, document.body.childNodes[0]);
        this.interval = setInterval(updateGameArea, 1000);
    },
    clear: function () {
        this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
    }
}

function updateGameArea() {
    myGameArea.clear();
    square.update();
}

document.getElementById("start").addEventListener('click', startGame);