awacke1 commited on
Commit
8c5907c
·
1 Parent(s): 1b70052

Create game.js

Browse files
Files changed (1) hide show
  1. game.js +130 -0
game.js ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Create the canvas
2
+ var canvas = document.createElement("canvas");
3
+ var ctx = canvas.getContext("2d");
4
+ canvas.width = 512;
5
+ canvas.height = 480;
6
+ document.body.appendChild(canvas);
7
+
8
+ // Background image
9
+ var bgReady = false;
10
+ var bgImage = new Image();
11
+ bgImage.onload = function () {
12
+ bgReady = true;
13
+ };
14
+ bgImage.src = "images/background.png";
15
+
16
+ // Hero image
17
+ var heroReady = false;
18
+ var heroImage = new Image();
19
+ heroImage.onload = function () {
20
+ heroReady = true;
21
+ };
22
+ heroImage.src = "images/hero.png";
23
+
24
+ // Monster image
25
+ var monsterReady = false;
26
+ var monsterImage = new Image();
27
+ monsterImage.onload = function () {
28
+ monsterReady = true;
29
+ };
30
+ monsterImage.src = "images/monster.png";
31
+
32
+ // Game objects
33
+ var hero = {
34
+ speed: 256 // movement in pixels per second
35
+ };
36
+ var monster = {};
37
+ var monstersCaught = 0;
38
+
39
+ // Handle keyboard controls
40
+ var keysDown = {};
41
+
42
+ addEventListener("keydown", function (e) {
43
+ keysDown[e.keyCode] = true;
44
+ }, false);
45
+
46
+ addEventListener("keyup", function (e) {
47
+ delete keysDown[e.keyCode];
48
+ }, false);
49
+
50
+ // Reset the game when the player catches a monster
51
+ var reset = function () {
52
+ hero.x = canvas.width / 2;
53
+ hero.y = canvas.height / 2;
54
+
55
+ // Throw the monster somewhere on the screen randomly
56
+ monster.x = 32 + (Math.random() * (canvas.width - 64));
57
+ monster.y = 32 + (Math.random() * (canvas.height - 64));
58
+ };
59
+
60
+ // Update game objects
61
+ var update = function (modifier) {
62
+ if (38 in keysDown) { // Player holding up
63
+ hero.y -= hero.speed * modifier;
64
+ }
65
+ if (40 in keysDown) { // Player holding down
66
+ hero.y += hero.speed * modifier;
67
+ }
68
+ if (37 in keysDown) { // Player holding left
69
+ hero.x -= hero.speed * modifier;
70
+ }
71
+ if (39 in keysDown) { // Player holding right
72
+ hero.x += hero.speed * modifier;
73
+ }
74
+
75
+ // Are they touching?
76
+ if (
77
+ hero.x <= (monster.x + 32)
78
+ && monster.x <= (hero.x + 32)
79
+ && hero.y <= (monster.y + 32)
80
+ && monster.y <= (hero.y + 32)
81
+ ) {
82
+ ++monstersCaught;
83
+ reset();
84
+ }
85
+ };
86
+
87
+ // Draw everything
88
+ var render = function () {
89
+ if (bgReady) {
90
+ ctx.drawImage(bgImage, 0, 0);
91
+ }
92
+
93
+ if (heroReady) {
94
+ ctx.drawImage(heroImage, hero.x, hero.y);
95
+ }
96
+
97
+ if (monsterReady) {
98
+ ctx.drawImage(monsterImage, monster.x, monster.y);
99
+ }
100
+
101
+ // Score
102
+ ctx.fillStyle = "rgb(250, 250, 250)";
103
+ ctx.font = "24px Helvetica";
104
+ ctx.textAlign = "left";
105
+ ctx.textBaseline = "top";
106
+ ctx.fillText("Goblins caught: " + monstersCaught, 32, 32);
107
+ };
108
+
109
+ // The main game loop
110
+ var main = function () {
111
+ var now = Date.now();
112
+ var delta = now - then;
113
+
114
+ update(delta / 1000);
115
+ render();
116
+
117
+ then = now;
118
+
119
+ // Request to do this again ASAP
120
+ requestAnimationFrame(main);
121
+ };
122
+
123
+ // Cross-browser support for requestAnimationFrame
124
+ var w = window;
125
+ requestAnimationFrame = w.requestAnimationFrame || w.webkitRequestAnimationFrame || w.msRequestAnimationFrame || w.mozRequestAnimationFrame;
126
+
127
+ // Let's play this game!
128
+ var then = Date.now();
129
+ reset();
130
+ main();