Untitled
unknown
plain_text
9 months ago
6.9 kB
5
Indexable
var keys = [];
var game = function() {
this.level = myMap;
this.players = [];
this.blocks = [];
this.airs = [];
this.blockSize = 20;
this.tagID = 1;
};
var block = function(x,y,id,scal) {
this.x = x;
this.y = y;
this.id = id;
this.scal = scal;
};
block.prototype.collision = function(x,y) {
if(x >= this.x && y >= this.y && x <= this.x+this.scal && y <= this.y+this.scal){
return true;
}else{
return false;
}
};
block.prototype.draw = function() {
noStroke();
switch(this.id){
default:
break;
case 1:
stroke(250, 0, 17);
fill(0, 0, 0);
rect(this.x,this.y,this.scal,this.scal);
break;
}
};
var player = function(x,y,blocks,scal,controls,id,isIt) {
this.blocks = blocks;
this.x = x;
this.y = y;
this.scal = scal/2;
this.acc = 0.1;
this.grav = 0.1;
this.velX = 0;
this.velY = 0;
this.jumpCount = 0;
this.jumped = false;
this.cS = controls;
this.id = id;
this.isIt = isIt;
};
player.prototype.update = function() {
if(this.velY >= 0){
this.jumped = false;
}
if(this.jumped){
for(var i = 0; i < abs(this.velY); i++){
if(!this.checkCollision(0) && this.y > 0){
this.y--;
}else{
this.jumped = false;
this.velY = 0;
}
}
}else{
for(var i = 0; i < this.velY; i++){
if(!this.checkCollision(2)){
this.y++;
}
}
}
if(!this.checkCollision(2)){
this.velY+=0.1;
}else if(this.jumped === false){
this.velY = 0;
this.jumpCount = 0;
}
this.move();
};
player.prototype.draw = function() {
noStroke();
fill(0, 0, 255);
rect(this.x,this.y,this.scal,this.scal);
if(this.isIt){
fill(255, 0, 0);
rect(this.x,this.y,this.scal/1,this.scal/1);
}
textAlign(CENTER,BOTTOM);
fill(179, 0, 0);
text("P" + this.id,this.x+(this.scal/2),this.y);
};
player.prototype.checkCollision = function(side) {
//0 = top, 1 = right, 2 = bottom, 3 = left
this.collision = false;
for(var i in this.blocks){
if(side === 0){
this.s1 = this.blocks[i].collision(this.x+1,this.y);
this.s2 = this.blocks[i].collision(this.x+this.scal-1,this.y);
}else if(side === 1){
this.s1 = this.blocks[i].collision(this.x+this.scal,this.y+1);
this.s2 = this.blocks[i].collision(this.x+this.scal,this.y+this.scal-1);
}else if(side === 2){
this.s1 = this.blocks[i].collision(this.x+1,this.y+this.scal);
this.s2 = this.blocks[i].collision(this.x+this.scal-1,this.y+this.scal);
}else if(side === 3){
//This is buggy for some odd reason
this.s1 = this.blocks[i].collision(this.x,this.y+1);
this.s2 = this.blocks[i].collision(this.x,this.y+this.scal-1);
}
if(this.s1 || this.s2){
this.collision = true;
}
}
if(this.collision){
return true;
}else{
return false;
}
};
player.prototype.move = function() {
if(keys[this.cS[0]] && this.jumped === false && this.jumpCount < 1 && this.velY === 0){
playSound(getSound("retro/jump2"));
this.velY = -4;
this.jumped = true;
this.jumpCount++;
}
if(!this.checkCollision(2) && keys[this.cS[1]]){
}
if(keys[this.cS[2]]){
for(var i = 0; i < 3; i++){
if(!this.checkCollision(3) && this.x > 0){
this.x--;
}
}
}
if(keys[this.cS[3]]){
for(var i = 0; i < 3; i++){
if(!this.checkCollision(1) && this.x+this.scal < 400){
this.x++;
}
}
}
};
var controls = [[UP,DOWN,LEFT,RIGHT],[87,83,65,68],[73,75,74,76]];
game.prototype.setupLevel = function() {
for(var y in this.level){
for(var x in this.level[y]){
if(this.level[y][x] !== 0 && this.level[y][x] !== 2){
this.blocks.push(new block(x*this.blockSize,y*this.blockSize,this.level[y][x],this.blockSize));
}
}
}
for(var y in this.level){
for(var x in this.level[y]){
if(this.level[y][x] === 2 && this.tagID === this.players.length+1){
this.players.push(new player(x*this.blockSize,y*this.blockSize,this.blocks,this.blockSize,controls[this.players.length % controls.length],this.players.length+1,true));
}else if(this.level[y][x] === 2){
this.players.push(new player(x*this.blockSize,y*this.blockSize,this.blocks,this.blockSize,controls[this.players.length % controls.length],this.players.length+1,false));
}
}
}
};
game.prototype.setupBlocks = function() {
for(var y in this.level){
for(var x in this.level[y]){
if(this.level[y][x] !== 0 && this.level[y][x] !== 2){
this.blocks.push(new block(x*this.blockSize,y*this.blockSize,this.level[y][x],this.blockSize));
}
}
}
};
game.prototype.update = function() {
this.pCords = [];
for(var i in this.players){
this.players[i].update();
this.pCords.push([this.players[i].x,this.players[i].y,this.players[i].scal]);
}
if(this.players[0].x>=this.players[1].x&&
this.players[0].y>=this.players[1].y&&
this.players[0].x<=this.players[1].x+this.players[1].scal&&
this.players[0].y<=this.players[1].y+this.players[1].scal && this.tagID !== 3||
this.players[0].x+this.players[0].scal>=this.players[1].x&&
this.players[0].y+this.players[0].scal>=this.players[1].y&&
this.players[0].x+this.players[0].scal<=this.players[1].x+this.players[1].scal&&
this.players[0].y+this.players[0].scal<=this.players[1].y+this.players[1].scal && this.tagID !== 3){
//println("P" + this.tagID + "Tagged!");
if(this.tagID === 2){
this.tagID = 1;
}else{
this.tagID = 2;
}
this.players = [];
this.blocks = [];
this.setupLevel();
}
};
game.prototype.render = function() {
for(var i in this.airs) {
this.airs[i].draw();
}
for(var i in this.blocks){
this.blocks[i].draw();
}
for(var i in this.players){
this.players[i].draw();
}
};
game.prototype.input = function() {
for(var i in this.players){
//this.players[i].move();
}
};
var Game = new game();
Game.setupLevel();
background(59, 64, 199);
draw = function() {
fill(0, 0, 0,10);
rect(0,0,400,400);
Game.render();
Game.update();
};
keyPressed = function() {
keys[keyCode] = true;
};
keyReleased = function() {
keys[keyCode] = false;
};Editor is loading...
Leave a Comment