var Cube = Container.expand(function () {
	var self = Container.call(this);
	var cubeGraphics = self.createAsset('cube', 'Cube object', .5, .5);
	self.spawn = function (x, y) {
		this.x = x;
		this.y = y + 100;
	};
});
var Floor = Container.expand(function () {
	var self = Container.call(this);
	var floorGraphics = self.createAsset('floor', 'Floor platform', 0, 1);
	floorGraphics.width = 2048;
	self.spawn = function (x, y) {
		this.x = x;
		this.y = y;
	};
});
var Monkey = Container.expand(function () {
	var self = Container.call(this);
	var monkeyGraphics = self.createAsset('monkey', 'Monkey character', .5, .5);
	monkeyGraphics.scale.x *= 0.8;
	monkeyGraphics.scale.y *= 0.8;
	self.jumpCount = 0;
	self.jumpHeight = 100;
	self.gravity = 5;
	self.velocityY = null;
	self.move = function (direction) {
		if (direction === 'left') {
			this.x -= 20;
			monkeyGraphics.scale.x = -1;
		} else if (direction === 'right') {
			this.x += 20;
			monkeyGraphics.scale.x = 1;
		}
	};
	self.jump = function () {
		if (this.jumpCount < 2) {
			this.velocityY = -this.jumpHeight;
			this.jumpCount++;
			this.onPlatform = false;
		}
	};
	self.collectBanana = function (banana) {
		banana.destroy();
	};
});
var BlueBanana = Container.expand(function () {
	var self = Container.call(this);
	var bananaGraphics = self.createAsset('banana', 'Banana collectible', .5, .5);
	self.spawn = function () {
		this.x = Math.random() * 2048;
		this.y = -this.height;
		this.velocityY = 2;
	};
});
var Platform = Container.expand(function () {
	var self = Container.call(this);
	var platformGraphics = self.createAsset('platform', 'Platform for monkey to jump on', .5, .5);
	self.spawn = function (x, y) {
		this.x = Math.random() * 2048;
		this.y = y;
	};
});
var Game = Container.expand(function () {
	var self = Container.call(this);
	var background = self.createAsset('background', 'Game background', 0, 0);
	background.width = 2048;
	background.height = 2732;
	var monkey = self.addChild(new Monkey());
	var score = 0;
	var cube = self.addChild(new Cube());
	cube.spawn(500, 2732 - cube.height);
	self.bananas = [];
	var platforms = [];
	var floor = self.addChild(new Floor());
	floor.spawn(0, 2732 - floor.height + 100);
	var scoreTxt = new Text2('0', {
		size: 150,
		fill: '#ffffff'
	});
	scoreTxt.anchor.set(.5, 0);
	LK.gui.topCenter.addChild(scoreTxt);
	var leftButton = self.createAsset('leftButton', 'Left control button', 0, 1);
	var rightButton = self.createAsset('rightButton', 'Right control button', 1, 1);
	leftButton.x = 50;
	leftButton.y = 2732 - leftButton.height - 200;
	leftButton.scale.x *= 1.5;
	leftButton.scale.y *= 1.5;
	rightButton.x = 2048 - rightButton.width - 50;
	rightButton.y = 2732 - rightButton.height - 200;
	rightButton.scale.x *= 1.5;
	rightButton.scale.y *= 1.5;
	var leftJumpButton = self.createAsset('jumpButton', 'Jump control button', 0, 1);
	leftJumpButton.x = leftButton.x;
	leftJumpButton.y = leftButton.y + leftButton.height + 100;
	leftJumpButton.scale.x *= 1.5;
	leftJumpButton.scale.y *= 1.5;
	leftJumpButton.on('down', function () {
		monkey.jump();
	});
	var rightJumpButton = self.createAsset('jumpButton', 'Jump control button', 1, 1);
	rightJumpButton.x = rightButton.x;
	rightJumpButton.y = rightButton.y + rightButton.height + 100;
	rightJumpButton.scale.x *= 1.5;
	rightJumpButton.scale.y *= 1.5;
	rightJumpButton.on('down', function () {
		monkey.jump();
	});
	for (var i = 0; i < 5; i++) {
		var platform = new Platform();
		if (i !== 0) {
			platform.spawn(i * 500, 2732 - i * 200 - rightButton.height - 100);
		}
		platforms.push(platform);
		self.addChild(platform);
		var banana = new BlueBanana();
		banana.spawn();
		banana.x = platform.x + platform.width / 2 - 100;
		banana.y = platform.y - banana.height / 2 - 100;
		self.bananas.push(banana);
		self.addChild(banana);
	}
	var startPlatform = new Platform();
	startPlatform.spawn(500, 2732 - monkey.height - 200);
	platforms.push(startPlatform);
	self.addChild(startPlatform);
	monkey.x = cube.x;
	monkey.y = cube.y - monkey.height + 100;
	var leftClickCount = 0;
	leftButton.on('down', function () {
		this.moveLeft = true;
		this.y -= 10;
	});
	leftButton.on('up', function () {
		this.moveLeft = false;
		this.y += 10;
		monkey.move('left');
	});
	leftButton.on('move', function (obj) {
		var event = obj.event;
		var pos = event.getLocalPosition(self);
		if (pos.y < this.y) {}
	});
	rightButton.on('down', function () {
		this.moveRight = true;
		this.y -= 10;
	});
	rightButton.on('up', function () {
		this.moveRight = false;
		this.y += 10;
		monkey.move('right');
	});
	rightButton.on('move', function (obj) {
		var event = obj.event;
		var pos = event.getLocalPosition(self);
		if (pos.y < this.y) {}
	});
	LK.on('tick', function () {
		if (leftButton.moveLeft) {
			monkey.move('left');
		}
		if (rightButton.moveRight) {
			monkey.move('right');
		}
		monkey.velocityY += monkey.gravity;
		if (!(monkey.y + monkey.height > floor.y && monkey.y + monkey.height + monkey.velocityY < floor.y + floor.height) && !(monkey.y + monkey.height > cube.y && monkey.y + monkey.height + monkey.velocityY < cube.y + cube.height)) {
			monkey.y += monkey.velocityY;
		} else if (monkey.y + monkey.height > cube.y && monkey.y + monkey.height + monkey.velocityY < cube.y + cube.height) {
			monkey.y = cube.y - monkey.height;
			monkey.velocityY = 0;
			monkey.jumpCount = 0;
		}
		for (var i = 0; i < platforms.length; i++) {
			if (monkey.y + monkey.height >= platforms[i].y && monkey.y < platforms[i].y + platforms[i].height && monkey.x + monkey.width > platforms[i].x && monkey.x < platforms[i].x + platforms[i].width) {
				monkey.y = platforms[i].y - monkey.height;
				monkey.velocityY = 0;
				monkey.jumpCount = 0;
			}
		}
		for (var i = 0; i < self.bananas.length; i++) {
			if (monkey.intersects(self.bananas[i])) {
				monkey.collectBanana(self.bananas[i]);
				score++;
				scoreTxt.setText(score);
				self.bananas.splice(i, 1);
			}
		}
		for (var i = 0; i < platforms.length; i++) {
			if (monkey.velocityY > 0 && monkey.y + monkey.height <= platforms[i].y && monkey.y + monkey.height + monkey.velocityY >= platforms[i].y && monkey.x + monkey.width > platforms[i].x && monkey.x < platforms[i].x + platforms[i].width) {
				monkey.y = platforms[i].y - monkey.height;
				monkey.velocityY = 0;
				monkey.jumpCount = 0;
				monkey.onPlatform = true;
				if (monkey.x + monkey.width > platforms[i].x + platforms[i].width) {
					monkey.x = platforms[i].x + platforms[i].width - monkey.width;
				}
				if (monkey.x < platforms[i].x) {
					monkey.x = platforms[i].x;
				}
			}
			for (var j = 0; j < self.bananas.length; j++) {
				if (monkey.intersects(self.bananas[j])) {
					monkey.collectBanana(self.bananas[j]);
					self.bananas.splice(j, 1);
				}
			}
		}
		if (monkey.y < platforms[platforms.length - 1].y - 200) {
			var platform = new Platform();
			platform.spawn(platforms[platforms.length - 1].x, platforms[platforms.length - 1].y - 200);
			platforms.push(platform);
			self.addChild(platform);
			var banana = new BlueBanana();
			banana.spawn();
			banana.x = platform.x + platform.width / 2 - 100;
			banana.y = platform.y - banana.height / 2 - 100;
			self.bananas.push(banana);
			self.addChild(banana);
		}
		if (monkey.y < 2732 / 2 && monkey.velocityY < 0 && monkey.jumpCount > 0) {
			for (var i = 0; i < platforms.length; i++) {
				platforms[i].y += Math.abs(monkey.velocityY);
			}
			for (var i = 0; i < self.bananas.length; i++) {
				self.bananas[i].y += Math.abs(monkey.velocityY);
			}
			cube.y += Math.abs(monkey.velocityY);
			monkey.y += Math.abs(monkey.velocityY);
			floor.y += Math.abs(monkey.velocityY);
		}
		for (var i = platforms.length - 1; i >= 0; i--) {
			if (platforms[i].y > 2732) {
				platforms[i].destroy();
				platforms.splice(i, 1);
			}
		}
		if (monkey.y > 2732 || score >= 50) {
			LK.showGameOver();
		}
		for (var i = self.bananas.length - 1; i >= 0; i--) {
			if (self.bananas[i].y > 2732) {
				self.bananas[i].destroy();
				self.bananas.splice(i, 1);
			}
		}
	});
});
 var Cube = Container.expand(function () {
	var self = Container.call(this);
	var cubeGraphics = self.createAsset('cube', 'Cube object', .5, .5);
	self.spawn = function (x, y) {
		this.x = x;
		this.y = y + 100;
	};
});
var Floor = Container.expand(function () {
	var self = Container.call(this);
	var floorGraphics = self.createAsset('floor', 'Floor platform', 0, 1);
	floorGraphics.width = 2048;
	self.spawn = function (x, y) {
		this.x = x;
		this.y = y;
	};
});
var Monkey = Container.expand(function () {
	var self = Container.call(this);
	var monkeyGraphics = self.createAsset('monkey', 'Monkey character', .5, .5);
	monkeyGraphics.scale.x *= 0.8;
	monkeyGraphics.scale.y *= 0.8;
	self.jumpCount = 0;
	self.jumpHeight = 100;
	self.gravity = 5;
	self.velocityY = null;
	self.move = function (direction) {
		if (direction === 'left') {
			this.x -= 20;
			monkeyGraphics.scale.x = -1;
		} else if (direction === 'right') {
			this.x += 20;
			monkeyGraphics.scale.x = 1;
		}
	};
	self.jump = function () {
		if (this.jumpCount < 2) {
			this.velocityY = -this.jumpHeight;
			this.jumpCount++;
			this.onPlatform = false;
		}
	};
	self.collectBanana = function (banana) {
		banana.destroy();
	};
});
var BlueBanana = Container.expand(function () {
	var self = Container.call(this);
	var bananaGraphics = self.createAsset('banana', 'Banana collectible', .5, .5);
	self.spawn = function () {
		this.x = Math.random() * 2048;
		this.y = -this.height;
		this.velocityY = 2;
	};
});
var Platform = Container.expand(function () {
	var self = Container.call(this);
	var platformGraphics = self.createAsset('platform', 'Platform for monkey to jump on', .5, .5);
	self.spawn = function (x, y) {
		this.x = Math.random() * 2048;
		this.y = y;
	};
});
var Game = Container.expand(function () {
	var self = Container.call(this);
	var background = self.createAsset('background', 'Game background', 0, 0);
	background.width = 2048;
	background.height = 2732;
	var monkey = self.addChild(new Monkey());
	var score = 0;
	var cube = self.addChild(new Cube());
	cube.spawn(500, 2732 - cube.height);
	self.bananas = [];
	var platforms = [];
	var floor = self.addChild(new Floor());
	floor.spawn(0, 2732 - floor.height + 100);
	var scoreTxt = new Text2('0', {
		size: 150,
		fill: '#ffffff'
	});
	scoreTxt.anchor.set(.5, 0);
	LK.gui.topCenter.addChild(scoreTxt);
	var leftButton = self.createAsset('leftButton', 'Left control button', 0, 1);
	var rightButton = self.createAsset('rightButton', 'Right control button', 1, 1);
	leftButton.x = 50;
	leftButton.y = 2732 - leftButton.height - 200;
	leftButton.scale.x *= 1.5;
	leftButton.scale.y *= 1.5;
	rightButton.x = 2048 - rightButton.width - 50;
	rightButton.y = 2732 - rightButton.height - 200;
	rightButton.scale.x *= 1.5;
	rightButton.scale.y *= 1.5;
	var leftJumpButton = self.createAsset('jumpButton', 'Jump control button', 0, 1);
	leftJumpButton.x = leftButton.x;
	leftJumpButton.y = leftButton.y + leftButton.height + 100;
	leftJumpButton.scale.x *= 1.5;
	leftJumpButton.scale.y *= 1.5;
	leftJumpButton.on('down', function () {
		monkey.jump();
	});
	var rightJumpButton = self.createAsset('jumpButton', 'Jump control button', 1, 1);
	rightJumpButton.x = rightButton.x;
	rightJumpButton.y = rightButton.y + rightButton.height + 100;
	rightJumpButton.scale.x *= 1.5;
	rightJumpButton.scale.y *= 1.5;
	rightJumpButton.on('down', function () {
		monkey.jump();
	});
	for (var i = 0; i < 5; i++) {
		var platform = new Platform();
		if (i !== 0) {
			platform.spawn(i * 500, 2732 - i * 200 - rightButton.height - 100);
		}
		platforms.push(platform);
		self.addChild(platform);
		var banana = new BlueBanana();
		banana.spawn();
		banana.x = platform.x + platform.width / 2 - 100;
		banana.y = platform.y - banana.height / 2 - 100;
		self.bananas.push(banana);
		self.addChild(banana);
	}
	var startPlatform = new Platform();
	startPlatform.spawn(500, 2732 - monkey.height - 200);
	platforms.push(startPlatform);
	self.addChild(startPlatform);
	monkey.x = cube.x;
	monkey.y = cube.y - monkey.height + 100;
	var leftClickCount = 0;
	leftButton.on('down', function () {
		this.moveLeft = true;
		this.y -= 10;
	});
	leftButton.on('up', function () {
		this.moveLeft = false;
		this.y += 10;
		monkey.move('left');
	});
	leftButton.on('move', function (obj) {
		var event = obj.event;
		var pos = event.getLocalPosition(self);
		if (pos.y < this.y) {}
	});
	rightButton.on('down', function () {
		this.moveRight = true;
		this.y -= 10;
	});
	rightButton.on('up', function () {
		this.moveRight = false;
		this.y += 10;
		monkey.move('right');
	});
	rightButton.on('move', function (obj) {
		var event = obj.event;
		var pos = event.getLocalPosition(self);
		if (pos.y < this.y) {}
	});
	LK.on('tick', function () {
		if (leftButton.moveLeft) {
			monkey.move('left');
		}
		if (rightButton.moveRight) {
			monkey.move('right');
		}
		monkey.velocityY += monkey.gravity;
		if (!(monkey.y + monkey.height > floor.y && monkey.y + monkey.height + monkey.velocityY < floor.y + floor.height) && !(monkey.y + monkey.height > cube.y && monkey.y + monkey.height + monkey.velocityY < cube.y + cube.height)) {
			monkey.y += monkey.velocityY;
		} else if (monkey.y + monkey.height > cube.y && monkey.y + monkey.height + monkey.velocityY < cube.y + cube.height) {
			monkey.y = cube.y - monkey.height;
			monkey.velocityY = 0;
			monkey.jumpCount = 0;
		}
		for (var i = 0; i < platforms.length; i++) {
			if (monkey.y + monkey.height >= platforms[i].y && monkey.y < platforms[i].y + platforms[i].height && monkey.x + monkey.width > platforms[i].x && monkey.x < platforms[i].x + platforms[i].width) {
				monkey.y = platforms[i].y - monkey.height;
				monkey.velocityY = 0;
				monkey.jumpCount = 0;
			}
		}
		for (var i = 0; i < self.bananas.length; i++) {
			if (monkey.intersects(self.bananas[i])) {
				monkey.collectBanana(self.bananas[i]);
				score++;
				scoreTxt.setText(score);
				self.bananas.splice(i, 1);
			}
		}
		for (var i = 0; i < platforms.length; i++) {
			if (monkey.velocityY > 0 && monkey.y + monkey.height <= platforms[i].y && monkey.y + monkey.height + monkey.velocityY >= platforms[i].y && monkey.x + monkey.width > platforms[i].x && monkey.x < platforms[i].x + platforms[i].width) {
				monkey.y = platforms[i].y - monkey.height;
				monkey.velocityY = 0;
				monkey.jumpCount = 0;
				monkey.onPlatform = true;
				if (monkey.x + monkey.width > platforms[i].x + platforms[i].width) {
					monkey.x = platforms[i].x + platforms[i].width - monkey.width;
				}
				if (monkey.x < platforms[i].x) {
					monkey.x = platforms[i].x;
				}
			}
			for (var j = 0; j < self.bananas.length; j++) {
				if (monkey.intersects(self.bananas[j])) {
					monkey.collectBanana(self.bananas[j]);
					self.bananas.splice(j, 1);
				}
			}
		}
		if (monkey.y < platforms[platforms.length - 1].y - 200) {
			var platform = new Platform();
			platform.spawn(platforms[platforms.length - 1].x, platforms[platforms.length - 1].y - 200);
			platforms.push(platform);
			self.addChild(platform);
			var banana = new BlueBanana();
			banana.spawn();
			banana.x = platform.x + platform.width / 2 - 100;
			banana.y = platform.y - banana.height / 2 - 100;
			self.bananas.push(banana);
			self.addChild(banana);
		}
		if (monkey.y < 2732 / 2 && monkey.velocityY < 0 && monkey.jumpCount > 0) {
			for (var i = 0; i < platforms.length; i++) {
				platforms[i].y += Math.abs(monkey.velocityY);
			}
			for (var i = 0; i < self.bananas.length; i++) {
				self.bananas[i].y += Math.abs(monkey.velocityY);
			}
			cube.y += Math.abs(monkey.velocityY);
			monkey.y += Math.abs(monkey.velocityY);
			floor.y += Math.abs(monkey.velocityY);
		}
		for (var i = platforms.length - 1; i >= 0; i--) {
			if (platforms[i].y > 2732) {
				platforms[i].destroy();
				platforms.splice(i, 1);
			}
		}
		if (monkey.y > 2732 || score >= 50) {
			LK.showGameOver();
		}
		for (var i = self.bananas.length - 1; i >= 0; i--) {
			if (self.bananas[i].y > 2732) {
				self.bananas[i].destroy();
				self.bananas.splice(i, 1);
			}
		}
	});
});
:quality(85)/https://cdn.frvr.ai/6553e4ac50ec5994a5408715.png%3F3) 
 Yellow circle button unreal engine 5 Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/6553e59450ec5994a540872b.png%3F3) 
 green circle button unreal engine 5 Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/6553ed5d84fc4ae4c4b06364.png%3F3) 
 2d single log laying long ways on side with vines seen from side unreal engine 5 Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/6553f1b4896d31683fc45e4b.png%3F3) 
 2d jungle canopy background side scroller unreal engine 5 Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows No ground
:quality(85)/https://cdn.frvr.ai/6553f364896d31683fc45e66.png%3F3) 
 Monkey full body animation unreal engine seen from the side very cute In-Game asset. 3d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6553f539896d31683fc45e74.png%3F3) 
 jungle floor dirt 2d unreal engine seen from the side In-Game asset. 3d. Blank background. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6553fa8f896d31683fc45e90.png%3F3) 
 yellow banana unreal engine 5 Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/6553ff5e896d31683fc45eb8.png%3F3) 
 blue banana unreal engine 5 Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.