Roach Invaders
About this app
Space Invaders clone that uses emoji of a roach as the playable character and enemies are rat emoji
Roach Invaders Score: 0
Related apps
Put this on your site
Source
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Roach Invaders</title>
<meta name="description" content="Space Invaders clone that uses emoji of a roach as the playable character and enemies are rat emoji">
<meta name="keywords" content="space invaders, game, emoji, roach, rat">
<link href="https://fonts.googleapis.com/css?family=Press+Start+2P" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script type="text/javascript">
try {
// App Javascript Goes Here. Place your entire script content inside the try block for error handling.
var player;
var enemies = [];
var bullets = [];
var score = 0;
var gameOver = false;
function setup() {
createPlayer();
createEnemies();
// Event listeners
$(document).keydown(function(event) {
if (event.which === 32) {
event.preventDefault();
createBullet();
}
});
// Start game loop
setInterval(gameLoop, 16);
}
function createPlayer() {
player = $('<div class="player">🪳</div>');
$("#main-container").append(player);
}
function createEnemies() {
for (var i = 0; i < 5; i++) {
var enemy = $('<div class="enemy">🐀</div>');
$("#main-container").append(enemy);
enemies.push(enemy);
}
}
function createBullet() {
var bullet = $('<div class="bullet"></div>');
bullet.css("left", player.css("left"));
$("#main-container").append(bullet);
bullets.push(bullet);
}
function gameLoop() {
if (!gameOver) {
movePlayer();
moveEnemies();
moveBullets();
checkCollision();
}
}
function movePlayer() {
$(document).keydown(function(event) {
if (event.which === 37) { // Left arrow key
var left = parseInt(player.css("left"));
player.css("left", left - 10);
} else if (event.which === 39) { // Right arrow key
var left = parseInt(player.css("left"));
player.css("left", left + 10);
}
});
}
function moveEnemies() {
for (var i = 0; i < enemies.length; i++) {
var top = parseInt(enemies[i].css("top"));
enemies[i].css("top", top + 2);
if (top > 400) {
gameOver = true;
$("#main-container").append('<div class="game-over">Game Over</div>');
}
}
}
function moveBullets() {
for (var i = 0; i < bullets.length; i++) {
var top = parseInt(bullets[i].css("top"));
bullets[i].css("top", top - 5);
if (top < 0) {
bullets[i].remove();
bullets.splice(i, 1);
}
}
}
function checkCollision() {
for (var i = 0; i < bullets.length; i++) {
var bullet = bullets[i];
var bulletTop = parseInt(bullet.css("top"));
var bulletLeft = parseInt(bullet.css("left"));
for (var j = 0; j < enemies.length; j++) {
var enemy = enemies[j];
var enemyTop = parseInt(enemy.css("top"));
var enemyLeft = parseInt(enemy.css("left"));
if (bulletTop <= enemyTop + 20 && bulletTop >= enemyTop && bulletLeft >= enemyLeft && bulletLeft <= enemyLeft + 20) {
bullet.remove();
bullets.splice(i, 1);
enemy.remove();
enemies.splice(j, 1);
score += 10;
$("#score").text("Score: " + score);
if (enemies.length === 0) {
gameOver = true;
$("#main-container").append('<div class="game-over">You Win!</div>');
}
break;
}
}
}
}
// This will run when the DOM is ready.
document.addEventListener("DOMContentLoaded", function() {
setup();
});
} catch (error) {
// This will throw the error to the parent window.
throw error;
}
</script>
<style>
/* App CSS Goes Here */
body {
background-color: #000;
font-family: 'Press Start 2P', cursive;
color: #fff;
overflow: hidden;
}
#main-container {
position: relative;
width: 400px;
height: 400px;
margin: 0 auto;
overflow: hidden;
}
.player {
position: absolute;
bottom: 10px;
left: 190px;
font-size: 30px;
}
.enemy {
position: absolute;
top: -50px;
left: 50px;
font-size: 30px;
}
.bullet {
position: absolute;
top: 350px;
left: 200px;
width: 3px;
height: 10px;
background-color: #fff;
}
.game-over {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 20px;
}
#score {
position: absolute;
top: 10px;
left: 10px;
}
</style>
</head>
<body>
<div id="main-container" class="container">
<div id="score">Score: 0</div>
</div>
</body>
</html>
NEW APPS
These are apps made by the community!