From 5552258b72f6a572f6baae3c33214b095780c64c Mon Sep 17 00:00:00 2001 From: MegaBrutal Date: Tue, 5 Dec 2017 23:40:00 +0100 Subject: [PATCH] Initial commit First version published at LD40. new file: determination.png new file: determination.svg new file: determination_shot1.png new file: determination_shot2.png new file: index.html new file: ld40.html new file: ld40.js new file: monster.png new file: projectile.png new file: projectile.svg new file: wall.png --- determination.png | Bin 0 -> 587 bytes determination.svg | 3 + determination_shot1.png | Bin 0 -> 19644 bytes determination_shot2.png | Bin 0 -> 16284 bytes index.html | 21 +++ ld40.html | 16 +++ ld40.js | 306 ++++++++++++++++++++++++++++++++++++++++ monster.png | Bin 0 -> 2301 bytes projectile.png | Bin 0 -> 387 bytes projectile.svg | 3 + wall.png | Bin 0 -> 84 bytes 11 files changed, 349 insertions(+) create mode 100644 determination.png create mode 100644 determination.svg create mode 100644 determination_shot1.png create mode 100644 determination_shot2.png create mode 100644 index.html create mode 100644 ld40.html create mode 100644 ld40.js create mode 100644 monster.png create mode 100644 projectile.png create mode 100644 projectile.svg create mode 100644 wall.png diff --git a/determination.png b/determination.png new file mode 100644 index 0000000000000000000000000000000000000000..27f5d329af05a9267b88c41b6dbec8da0cffb150 GIT binary patch literal 587 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBC=nar6XN;M1U|NpQ0|DW&wf8PK9SO5Rd@c;jp|NlSy|IhXR|M&m@H~s(b`~N@B|Nor-|6Be4 zzwrP6&;S2B{r~U%|G&up|AGJi3;qAk|Np=J|Nox<|E~d>%f3B!56~jUk|4ie28U-i z(my$?bK`hh%x`l>I-g* z)zX~5Cmg%AVJ2_wCf?W_XYtz?(xb0hKaslIU#z_Fd?|m|(KlwdWuxL$cz+)beAy-2 za=^=A&K=9xEmjKz|IEs}e^<8u`$u_evDm*!UpIOji|Idg=5fu@4}ab_r^RmGyzbW3 z_`s68Vs|&J?mr%&K+6F*|f%FfNizpg$^HVa@DsgMbTDm3|s6i5BLvVgtNqJ&XDnogBxn5>o dc5!lIL8@MUQTpt6Hc~)E44$rjF6*2UngFg7^P>O& literal 0 HcmV?d00001 diff --git a/determination.svg b/determination.svg new file mode 100644 index 0000000..454277d --- /dev/null +++ b/determination.svg @@ -0,0 +1,3 @@ + + + diff --git a/determination_shot1.png b/determination_shot1.png new file mode 100644 index 0000000000000000000000000000000000000000..5efcf6ee3664b4fd929ce98eb81e73d5fd3a43e5 GIT binary patch literal 19644 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 + + + + Ludum Dare 40 – DETERMINATION + + + + +
+

Ludum Dare 40 – DETERMINATION

+

(Game for Ludum Dare 40)

+ +

By MegaBrutal

+
+ + diff --git a/ld40.html b/ld40.html new file mode 100644 index 0000000..0b6167a --- /dev/null +++ b/ld40.html @@ -0,0 +1,16 @@ + + + + + Ludum Dare 40 – DETERMINATION + + + + + + + + diff --git a/ld40.js b/ld40.js new file mode 100644 index 0000000..5c84a99 --- /dev/null +++ b/ld40.js @@ -0,0 +1,306 @@ + var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update }); + var player; + var walls; + var determinations; // I know it's grammatically incorrect. :P + var monsters; + var nexttime_monsterspawn; + var nexttime_determination; + + const WAIT_KEY = 200; + const WAIT_SHOOT = 200; + const WAIT_INVINCIBILITY = 800; + const WAIT_SOULMODE = 10000; + const WAIT_MONSTERSHOOT = 500; + const WAIT_MONSTERSPAWN = 20000; + const WAIT_DETERMINATION = 4000; + const WALL_THICKNESS = 16; + const WALL_BORDER = 8; + const WALL_BORDERBOTTOM = 48; + const HB_THICKNESS = 20; + const MAX_HEALTH = 20; + const MONSTER_HEALTH = 20; + const MODE_DETERMINATION = 0; + const MODE_JUSTICE = 1; + const SPEED_PLAYER = 150; + const SPEED_PROJECTILE = 500; + + window.addEventListener("keydown", function(e) { + // Prevent default browser action for arrows and spacebar + if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) { + e.preventDefault(); + } + }, false); + + + class Player extends Phaser.Text { + constructor(x, y) { + super(game, x, y, "♥️", { align: 'center', fill: 'red', font: 'Ubuntu Mono', fontSize: 32, fontWeight: 'bold' }); + this.anchor.setTo(0.5, 0.5); + this.maxHealth = MAX_HEALTH; + this.health = this.maxHealth; + this.love = 1; + this.lastmovetime = 0; + this.lasttime_shoot = 0; + this.lasttime_mode = 0; + this.lasttime_damage = 0; + this.speed = 150; + this.switchmode(MODE_DETERMINATION); + this.projectiles = game.add.group(); + this.healthBar = new HealthBar(60, game.world.height - (WALL_BORDERBOTTOM / 2)); + } + + enablePhysics() { + game.physics.arcade.enable(this); + this.body.bounce.y = 0.2; + this.body.bounce.x = 0.2; + this.body.collideWorldBounds = true; + } + + overlap_determination(determination) { + determination.kill(); + this.heal(2); + this.speed += 50; + this.switchmode(MODE_JUSTICE); + } + + damage(amount) { + if ((game.time.now - this.lasttime_damage) > WAIT_INVINCIBILITY) + { + super.damage(amount); + this.lasttime_damage = game.time.now; + } + } + + loveUp() { + this.love++ + this.maxHealth += this.love; + this.heal(this.love); + } + + control() { + if (this.alive) + { + if (cursors.left.isDown) + { + player.body.velocity.x = -player.speed; + player.lastmovetime = game.time.now; + } + else if (cursors.right.isDown) + { + player.body.velocity.x = player.speed; + player.lastmovetime = game.time.now; + } + if (cursors.up.isDown) + { + player.body.velocity.y = -player.speed; + player.lastmovetime = game.time.now; + } + else if (cursors.down.isDown) + { + player.body.velocity.y = player.speed; + player.lastmovetime = game.time.now; + } + if ((this.mode == MODE_JUSTICE) && game.input.keyboard.isDown(Phaser.Keyboard.SPACEBAR) && ((game.time.now - this.lasttime_shoot) > WAIT_SHOOT)) + { + this.shoot(0, SPEED_PROJECTILE); + this.shoot(0, -SPEED_PROJECTILE); + this.shoot(SPEED_PROJECTILE, 0); + this.shoot(-SPEED_PROJECTILE, 0); + } + } + } + + switchmode(soulmode) { + switch(soulmode) + { + case MODE_DETERMINATION: + this.addColor('red', 0); + break; + case MODE_JUSTICE: + this.addColor('yellow', 0); + this.lasttime_mode = game.time.now; + break; + } + this.mode = soulmode; + } + + shoot(velocityx, velocityy) { + var projectile = new Justice(this.x, this.y, velocityx, velocityy); + projectile.enablePhysics(); + this.projectiles.add(projectile); + this.lasttime_shoot = game.time.now; + } + + update() { + super.update(); + this.control(); + this.healthBar.update(this.love, this.maxHealth, this.health); + if ((game.time.now - this.lasttime_mode) > WAIT_SOULMODE) { this.switchmode(MODE_DETERMINATION); } + } + } + + class Monster extends Phaser.Sprite { + constructor(x, y) { + super(game, x, y, 'monster'); + this.anchor.setTo(0.5, 0.5); + this.health = MONSTER_HEALTH; + this.nexttime_shoot = game.time.now; + this.weapon = new Phaser.Weapon(game, this); + this.weapon.x = x; + this.weapon.y = y; + this.weapon.createBullets(20, 'projectile'); + } + + enablePhysics() { + game.physics.arcade.enable(this); + } + + kill() { + super.kill(); + player.loveUp(); + } + + overlap_player(player) { + player.damage(10); + player.switchmode(MODE_DETERMINATION); + } + + update() { + super.update(); + if (this.alive && player.alive && (game.time.now > this.nexttime_shoot)) + { + this.weapon.fireAtSprite(player); + this.nexttime_shoot = game.time.now + (WAIT_MONSTERSHOOT / 2) + (Math.random() * WAIT_MONSTERSHOOT); + } + game.physics.arcade.overlap(player, this.weapon.bullets, function(p,b) { p.damage(p.love); }); + } + } + + class Determination extends Phaser.Sprite { + constructor(x, y) { + super(game, x, y, 'determination'); + this.anchor.setTo(0.5, 0.5); + } + + enablePhysics() { + game.physics.arcade.enable(this); + } + } + + class Justice extends Phaser.Sprite { + constructor(x, y, velocityx, velocityy) { + super(game, x, y, 'projectile'); + this.anchor.setTo(0.5, 0.5); + this.velocityx = velocityx; + this.velocityy = velocityy; + } + + enablePhysics() { + game.physics.arcade.enable(this); + this.body.velocity.x = this.velocityx; + this.body.velocity.y = this.velocityy; + } + + overlap(entity) { + entity.damage(player.love); + this.kill(); + } + } + + class HealthBar { + constructor(x, y) { + this.mhealth = game.add.tileSprite(x + 10, y, 0, HB_THICKNESS, 'wall'); + this.ahealth = game.add.tileSprite(x + 10, y, 0, HB_THICKNESS, 'wall'); + this.mhealth.anchor.setTo(0, 0.5); + this.ahealth.anchor.setTo(0, 0.5); + this.mhealth.tint = '0xff0000'; + this.ahealth.tint = '0xffff00'; + this.text_love = new Phaser.Text(game, x - 50, y + 2, null, { align: 'center', fill: 'white', font: 'Ubuntu Mono', fontSize: 16, fontWeight: 'bold' }); + this.text_love.anchor.setTo(0, 0.5); + game.add.existing(this.text_love); + } + + update(love, mhealth, ahealth) { + this.mhealth.width = mhealth; + this.ahealth.width = ahealth; + this.text_love.text = "LV " + love; + } + } + + function preload () { + + game.load.image('wall', 'wall.png'); + game.load.image('player', 'player.png'); + game.load.image('monster', 'monster.png'); + game.load.image('determination', 'determination.png'); + game.load.image('projectile', 'projectile.png'); + + } + + function create () { + + game.world.setBounds(0, 0, 800, 600); + game.stage.backgroundColor = '#000000'; + game.physics.startSystem(Phaser.Physics.ARCADE); + + walls = game.add.group(); + walls.classType = Phaser.TileSprite; + walls.enableBody = true; + + walls.add(game.add.tileSprite(WALL_BORDER, WALL_BORDER, game.world.width - (WALL_BORDER * 2), WALL_THICKNESS, 'wall')); + walls.add(game.add.tileSprite(WALL_BORDER, game.world.height - WALL_THICKNESS - WALL_BORDERBOTTOM, game.world.width - (WALL_BORDER * 2), WALL_THICKNESS, 'wall')); + walls.add(game.add.tileSprite(WALL_BORDER, WALL_BORDER, WALL_THICKNESS, game.world.height - WALL_BORDER - WALL_BORDERBOTTOM, 'wall')); + walls.add(game.add.tileSprite(game.world.width - WALL_THICKNESS - WALL_BORDER, WALL_BORDER, WALL_THICKNESS, game.world.height - WALL_BORDER - WALL_BORDERBOTTOM, 'wall')); + walls.children.forEach(function(wall) { wall.body.immovable = true; }); + + determinations = game.add.group(); + nexttime_determination = Math.random() * WAIT_DETERMINATION; + + monsters = game.add.group(); + monsters.add(new Monster(400, 500)); + monsters.children.forEach(function(monster) { monster.enablePhysics(); }); + nexttime_monsterspawn = WAIT_MONSTERSPAWN; + + player = new Player(game.world.width / 2, game.world.height / 2); + player.enablePhysics(); + game.add.existing(player); + game.camera.follow(player); + cursors = game.input.keyboard.createCursorKeys(); + + keyboard_handler = keyPress_default; + + } + + function update () { + + game.physics.arcade.collide(player, walls); + game.physics.arcade.overlap(player, determinations, function(p,d) { p.overlap_determination(d); }); + game.physics.arcade.overlap(player, monsters, function(p,m) { m.overlap_player(p); }); + game.physics.arcade.overlap(monsters, player.projectiles, function(m,j) { j.overlap(m); }); + + if (game.time.now > nexttime_determination) + { + var determination = new Determination((Math.random() * (game.world.width - ((WALL_THICKNESS + WALL_BORDER) * 4))) + ((WALL_THICKNESS + WALL_BORDER) * 2), (Math.random() * (game.world.height - ((WALL_THICKNESS + WALL_BORDER) * 4) - WALL_BORDERBOTTOM)) + ((WALL_THICKNESS + WALL_BORDER) * 2)); + determination.enablePhysics(); + determinations.add(determination); + nexttime_determination = game.time.now + (WAIT_DETERMINATION / 2) + (Math.random() * WAIT_DETERMINATION); + } + + if (game.time.now > nexttime_monsterspawn) + { + var monster = new Monster(Math.random() * game.world.width, Math.random() * game.world.height); + monster.enablePhysics(); + monsters.add(monster); + nexttime_monsterspawn = game.time.now + (WAIT_MONSTERSPAWN / player.love) + (Math.random() * WAIT_MONSTERSPAWN); + } + + if ((game.time.now - player.lastmovetime) > WAIT_KEY) player.body.velocity.x = player.body.velocity.y = 0; + if (keyboard_handler) keyboard_handler(); + + } + + function keyPress_default() { + + // Maybe needed later. + + } diff --git a/monster.png b/monster.png new file mode 100644 index 0000000000000000000000000000000000000000..42827bd3d190b317de10bc5672b56ee71eb9605b GIT binary patch literal 2301 zcmWkw3pkVS8~(@`5wrb?pF?TMDWQo{YMP{kw7(F>LQCwI^D)BZ{LA5&FrzVlX=%uD zlSrkJN}3VUCJoCWL{8EFbzj%_zSs4=-}k-m^W67yKVQ0|y^WlVstg1{a<*r2PGCO1 zeZeKccDTzDgP&7PJSx9wx<;P&zaboryEMfeg;isH!}}hKaprbdGDITy4Q5X?BW3`Wk%U9 zn_5&oxT3`m3$=;pzq;|NSxW5-eX_N8I_mxO=CPWU=~mck4`FLDKEb|{yS5n@uY;0t zWja?mG4L7<7s8V0I(qlcRpgvDP|CcHQGJIUaaP`);;n!G|1r4$f6L=@Q6)YNXvz)>sDzc?d3#kDVzPx%};8^fOO_ z;d<`$lisi~UlIvkM5XSf*jW(>gicO~XliPzYvc(>0hTt0@fr~Hb%7-qeqhl=*9$KWD6);_D!SQ>20#kd(L6&Dp*HILjG z3J7-)H7bE>dOy7!&3^{Cym8~kPQ=2-$`3wbrR~i@m7uj8;o;xN1NOy&jm@dPatNwz zY=nVjsdSupeSQ7S*nY_g&7#1XnMAttJ4J9-+9WjquL<4^3H#QYyl20-4;tO3_ zSy?A&T+veeUjP;W-Iw+O^)23-gdkv%mn)nYJ|>g^A0MA@Z|><|*6RaJqrlLkrGa`t zQz7n4=apu%_ZEHeMV)~g)44TzSr1e|-|KmE#-vh*kt`Atl99V>Ih?s zowoiXBJi{H4lkqD*tJDpjOv|j_esYsxO^TO8q+T-80})!)JFb6vfT~agT`OWf%#Aq z6*LL(GU9x@vi|J{*N4f?Bl~jC`m{gqs0-*Mip8NuX(!`7AE{kg2x0BUl9@dJMoU^R z=hh|Vbez`T;3yk2L-p6XeN5Q308gGIXj;aeO7T9|5>RraBagxOLktfO&xhaPj0XXg zp*BpXe$ZD<`|i8DRdPijZwA1=k?A;MNJvP1dwV;rb!m&MbA=_i5@Zv(@U=6OPiDeV zPeZX^7v{%arrrVA-V=zGxJ?I8KwE2T>t{ZnA8(|cc|JjqA1k^U6&2+QSlRU&y-=!? z;Z()*zfGv|lF>1S{l2ed*HDW`+`vs zLBjRL(sy3fW$nA&4Ir|45x3I8XKhE+M3 z0=4D+fjHJL{Mwmvi0A8?A7-wWWs|LOLPkPd?CB`Eh9r%okSn+%Ol4k(z!7B~^n(OQ z`!pLK^DdLCn?dg~_jGr6M|FRBRCc{c1BCc2$;#@Zo_{jNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5l#mYa332@o0>A(N@B07W z=l_3(|Np!H|M&g>{|`{~-@Ug}fyx+5g8YIR9G=}s196hP-CY`sfLmn1UX1-oE_CBDHoTrOp2*>s01P3-JHztRmqpA!Zvv#N) zxVdO0tHvva@M7k6^`85QK$WT`t`Q|Ei6yC4$wjF^iowXh&|KHhNY}t5#K_Rfz}U*r zMB4z!FzCJVwFX5)ZhlH;S|x4`e>!~+05wR0YzWRzD=AMbN@XZ7FW1Y=%Pvk%EJ)SM WFG`>N&PEETh{4m<&t;ucLK6Vz5_c5< literal 0 HcmV?d00001 diff --git a/projectile.svg b/projectile.svg new file mode 100644 index 0000000..54e8bdf --- /dev/null +++ b/projectile.svg @@ -0,0 +1,3 @@ + + + diff --git a/wall.png b/wall.png new file mode 100644 index 0000000000000000000000000000000000000000..aa512b712f85b3706a833423098838fb16b2537f GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blmSQK*5Dp-y;YjHK^0_@-978x} dCja1PVc`7D{P%I_r#V1j22WQ%mvv4FO#oL>5={UA literal 0 HcmV?d00001 -- 2.34.1