|
1 |
| -// window.onload = function () { |
2 |
| -// Note that this html file is set to pull down Phaser 2.5.0 from the JS Delivr CDN. |
3 |
| -// Although it will work fine with this tutorial, it's almost certainly not the most current version. |
4 |
| -// Be sure to replace it with an updated version before you start experimenting with adding your own code. |
5 |
| - |
6 |
| -let game = new Phaser.Game(1280, 720, Phaser.AUTO, "", { |
7 |
| - preload: preload, |
8 |
| - create: create, |
9 |
| - update: update, |
10 |
| -}); |
11 |
| - |
12 |
| -let score = 28; |
13 |
| -let scoreText; |
14 |
| -let facing = "right"; |
15 |
| -let hozMove = 300; |
16 |
| -let vertMove = -300; |
17 |
| -let coin; |
18 |
| -let platforms; |
19 |
| -let keys; |
20 |
| -let jumpTimer = 0; |
21 |
| -let reiner; |
22 |
| -let reiner2; |
23 |
| -let female; |
24 |
| -let attackTitan; |
25 |
| - |
26 |
| -function preload() { |
27 |
| - // game.load.image("startscreen", "assets/startscreen.png"); |
28 |
| - // game.load.image("loading", "assets/loading.png"); |
29 |
| - game.load.image("ground", "assets/platform.png"); |
30 |
| - game.load.image("house", "assets/aotHouses.png"); |
31 |
| - game.load.image("key", "assets/key.png"); |
32 |
| - game.load.spritesheet("eren", "assets/eren.png", 50, 50); |
33 |
| - game.load.spritesheet("reiner", "assets/reiner.png", 65, 70); |
34 |
| - game.load.spritesheet("reiner2", "assets/reiner.png", 65, 70); |
35 |
| - game.load.spritesheet("female", "assets/female.png", 65, 70); |
36 |
| - game.load.spritesheet("attackTitan", "assets/attackTitan.png", 65, 70); |
37 |
| - game.load.audio("backgroundMusic", "assets/themeSong.mp3"); |
38 |
| - game.load.audio("coin", "assets/coin.mp3"); |
39 |
| -} |
40 |
| - |
41 |
| -function create() { |
42 |
| - game.stage.backgroundColor = "#FFFFFF"; |
43 |
| - game.physics.startSystem(Phaser.Physics.ARCADE); |
44 |
| - game.add.sprite(0, 0, "house"); |
45 |
| - |
46 |
| - platforms = game.add.group(); |
47 |
| - platforms.enableBody = true; |
48 |
| - |
49 |
| - //grounds |
50 |
| - let ground = platforms.create(0, game.world.height - 30, "ground"); |
51 |
| - ground.scale.setTo(4, 4); |
52 |
| - ground.body.immovable = true; |
53 |
| - |
54 |
| - // ledges |
55 |
| - let ledge = platforms.create(-300, 175, "ground"); |
56 |
| - ledge.scale.setTo(1, 0.25); |
57 |
| - ledge.body.immovable = true; |
58 |
| - |
59 |
| - ledge = platforms.create(200, 350, "ground"); |
60 |
| - ledge.scale.setTo(0.25, 0.25); |
61 |
| - ledge.body.immovable = true; |
62 |
| - |
63 |
| - ledge = platforms.create(300, 90, "ground"); |
64 |
| - ledge.scale.setTo(0.25, 0.25); |
65 |
| - ledge.body.immovable = true; |
66 |
| - |
67 |
| - ledge = platforms.create(450, 500, "ground"); |
68 |
| - ledge.scale.setTo(0.35, 0.25); |
69 |
| - ledge.body.immovable = true; |
70 |
| - |
71 |
| - ledge = platforms.create(670, 250, "ground"); |
72 |
| - ledge.scale.setTo(0.2, 0.25); |
73 |
| - ledge.body.immovable = true; |
74 |
| - |
75 |
| - ledge = platforms.create(900, 150, "ground"); |
76 |
| - ledge.scale.setTo(0.2, 0.25); |
77 |
| - ledge.body.immovable = true; |
78 |
| - |
79 |
| - ledge = platforms.create(1100, 350, "ground"); |
80 |
| - ledge.scale.setTo(0.5, 0.25); |
81 |
| - ledge.body.immovable = true; |
82 |
| - |
83 |
| - keys = game.add.group(); |
84 |
| - keys.enableBody = true; |
85 |
| - for (let i = 0; i < 28; i++) { |
86 |
| - // create a key inside of the keys group |
87 |
| - let key = keys.create(i * 42, 0, "key"); |
88 |
| - key.body.gravity.y = 1000; |
89 |
| - // each key has a slightly random bounce value |
90 |
| - key.body.bounce.y = 0.3 + Math.random() * 0.2; |
91 |
| - } |
92 |
| - |
93 |
| - scoreText = game.add.text(game.world.width / 2.4, 16, "", { |
94 |
| - fontSize: "32px", |
95 |
| - fill: "#000", |
| 1 | +window.onload = function () { |
| 2 | + let game = new Phaser.Game(1280, 720, Phaser.AUTO, "", { |
| 3 | + preload: preload, |
| 4 | + create: create, |
| 5 | + update: update, |
96 | 6 | });
|
97 |
| - // cursors = game.input.keyboard.createCursorKeys(); |
98 |
| - |
99 |
| - //eren |
100 |
| - eren = game.add.sprite(20, 0, "eren"); |
101 |
| - eren.scale.set(1.5); |
102 |
| - game.physics.arcade.enable(eren, Phaser.Physics.ARCADE); |
103 |
| - eren.body.bounce.y = 0.25; |
104 |
| - eren.body.gravity.y = 800; |
105 |
| - eren.body.collideWorldBounds = true; |
106 |
| - |
107 |
| - //reiner |
108 |
| - reiner = game.add.sprite(0, 250, "reiner"); |
109 |
| - reiner.name = "reiner"; |
110 |
| - game.physics.enable(reiner, Phaser.Physics.ARCADE); |
111 |
| - reiner.scale.set(2); |
112 |
| - |
113 |
| - reiner.body.collideWorldBounds = true; |
114 |
| - reiner.body.bounce.setTo(1, 1); |
115 |
| - reiner.body.velocity.x = 250; |
116 |
| - reiner.body.immovable = true; |
117 |
| - reiner.scale.x *= -1; |
118 |
| - |
119 |
| - //reiner2 |
120 |
| - reiner2 = game.add.sprite(1200, 800, "reiner2"); |
121 |
| - reiner2.name = "reiner2"; |
122 |
| - game.physics.enable(reiner2, Phaser.Physics.ARCADE); |
123 |
| - reiner2.scale.set(2); |
124 |
| - |
125 |
| - reiner2.body.collideWorldBounds = true; |
126 |
| - reiner2.body.bounce.setTo(1, 1); |
127 |
| - |
128 |
| - reiner2.body.velocity.x = 400; |
129 |
| - reiner2.body.immovable = true; |
130 |
| - |
131 |
| - //female |
132 |
| - female = game.add.sprite(800, 700, "female"); |
133 |
| - female.name = "female"; |
134 |
| - game.physics.enable(female, Phaser.Physics.ARCADE); |
135 |
| - female.scale.set(2); |
136 |
| - |
137 |
| - female.body.collideWorldBounds = true; |
138 |
| - female.body.bounce.setTo(1, 1); |
139 |
| - |
140 |
| - female.body.velocity.y = 200; |
141 |
| - female.body.immovable = true; |
142 |
| - |
143 |
| - //attack titan |
144 |
| - attackTitan = game.add.sprite(300, 0, "attackTitan"); |
145 |
| - attackTitan.name = "attackTitan"; |
146 |
| - game.physics.enable(attackTitan, Phaser.Physics.ARCADE); |
147 |
| - attackTitan.scale.set(2); |
148 |
| - |
149 |
| - attackTitan.body.collideWorldBounds = true; |
150 |
| - attackTitan.body.bounce.setTo(1, 1); |
151 |
| - |
152 |
| - attackTitan.body.velocity.y = 300; |
153 |
| - attackTitan.body.immovable = true; |
154 |
| - |
155 |
| - //music |
156 |
| - backgroundMusic = game.sound.add("backgroundMusic"); |
157 |
| - coin = game.sound.add("coin"); |
158 |
| - // backgroundMusic.play(); |
159 |
| -} |
160 |
| - |
161 |
| -function update() { |
162 |
| - game.physics.arcade.collide(eren, platforms); |
163 |
| - game.physics.arcade.collide(keys, platforms); |
164 |
| - game.physics.arcade.collide(eren, reiner, lose, null, this); |
165 |
| - game.physics.arcade.collide(eren, reiner2, lose, null, this); |
166 |
| - game.physics.arcade.collide(eren, female, lose, null, this); |
167 |
| - game.physics.arcade.collide(eren, attackTitan, lose, null, this); |
168 |
| - game.physics.arcade.overlap(eren, keys, collectKey, null, this); |
169 |
| - |
170 |
| - if (score === 0) { |
171 |
| - const endMenuWin = document.querySelector(".game-win"); |
172 |
| - endMenuWin.classList.remove("hidden"); |
173 |
| - score = 28; |
174 |
| - } |
175 | 7 |
|
176 |
| - function collectKey(eren, key) { |
177 |
| - key.kill(); |
178 |
| - coin.play(); |
179 |
| - score -= 1; |
180 |
| - scoreText.text = "Remaining: " + score; |
| 8 | + let score = 28; |
| 9 | + let scoreText; |
| 10 | + let facing = "right"; |
| 11 | + let hozMove = 300; |
| 12 | + let vertMove = -300; |
| 13 | + let coin; |
| 14 | + let platforms; |
| 15 | + let keys; |
| 16 | + let jumpTimer = 0; |
| 17 | + let reiner; |
| 18 | + let reiner2; |
| 19 | + let female; |
| 20 | + let attackTitan; |
| 21 | + |
| 22 | + function preload() { |
| 23 | + game.load.image("ground", "assets/platform.png"); |
| 24 | + game.load.image("house", "assets/aotHouses.png"); |
| 25 | + game.load.image("key", "assets/key.png"); |
| 26 | + game.load.spritesheet("eren", "assets/eren.png", 50, 50); |
| 27 | + game.load.spritesheet("reiner", "assets/reiner.png", 65, 70); |
| 28 | + game.load.spritesheet("reiner2", "assets/reiner.png", 65, 70); |
| 29 | + game.load.spritesheet("female", "assets/female.png", 65, 70); |
| 30 | + game.load.spritesheet("attackTitan", "assets/attackTitan.png", 65, 70); |
| 31 | + game.load.audio("backgroundMusic", "assets/themeSong.mp3"); |
| 32 | + game.load.audio("coin", "assets/coin.mp3"); |
181 | 33 | }
|
182 | 34 |
|
183 |
| - function lose(eren) { |
184 |
| - const endMenuLose = document.querySelector(".game-lose"); |
185 |
| - endMenuLose.classList.remove("hidden"); |
| 35 | + function create() { |
| 36 | + //music |
| 37 | + backgroundMusic = game.add.audio("backgroundMusic"); |
| 38 | + backgroundMusic.play(); |
| 39 | + coin = game.sound.add("coin"); |
| 40 | + |
| 41 | + game.stage.backgroundColor = "#FFFFFF"; |
| 42 | + game.physics.startSystem(Phaser.Physics.ARCADE); |
| 43 | + game.add.sprite(0, 0, "house"); |
| 44 | + |
| 45 | + platforms = game.add.group(); |
| 46 | + platforms.enableBody = true; |
| 47 | + |
| 48 | + //grounds |
| 49 | + let ground = platforms.create(0, game.world.height - 30, "ground"); |
| 50 | + ground.scale.setTo(4, 4); |
| 51 | + ground.body.immovable = true; |
| 52 | + |
| 53 | + // ledges |
| 54 | + let ledge = platforms.create(-300, 175, "ground"); |
| 55 | + ledge.scale.setTo(1, 0.25); |
| 56 | + ledge.body.immovable = true; |
| 57 | + |
| 58 | + ledge = platforms.create(200, 350, "ground"); |
| 59 | + ledge.scale.setTo(0.25, 0.25); |
| 60 | + ledge.body.immovable = true; |
| 61 | + |
| 62 | + ledge = platforms.create(300, 90, "ground"); |
| 63 | + ledge.scale.setTo(0.25, 0.25); |
| 64 | + ledge.body.immovable = true; |
| 65 | + |
| 66 | + ledge = platforms.create(450, 500, "ground"); |
| 67 | + ledge.scale.setTo(0.35, 0.25); |
| 68 | + ledge.body.immovable = true; |
| 69 | + |
| 70 | + ledge = platforms.create(670, 250, "ground"); |
| 71 | + ledge.scale.setTo(0.2, 0.25); |
| 72 | + ledge.body.immovable = true; |
| 73 | + |
| 74 | + ledge = platforms.create(900, 150, "ground"); |
| 75 | + ledge.scale.setTo(0.2, 0.25); |
| 76 | + ledge.body.immovable = true; |
| 77 | + |
| 78 | + ledge = platforms.create(1100, 350, "ground"); |
| 79 | + ledge.scale.setTo(0.5, 0.25); |
| 80 | + ledge.body.immovable = true; |
| 81 | + |
| 82 | + keys = game.add.group(); |
| 83 | + keys.enableBody = true; |
| 84 | + for (let i = 0; i < 28; i++) { |
| 85 | + // create a key inside of the keys group |
| 86 | + let key = keys.create(i * 42, 0, "key"); |
| 87 | + key.body.gravity.y = 1000; |
| 88 | + // each key has a slightly random bounce value |
| 89 | + key.body.bounce.y = 0.3 + Math.random() * 0.2; |
| 90 | + } |
| 91 | + |
| 92 | + scoreText = game.add.text(game.world.width / 2.4, 16, "", { |
| 93 | + fontSize: "32px", |
| 94 | + fill: "#000", |
| 95 | + }); |
| 96 | + |
| 97 | + //eren |
| 98 | + eren = game.add.sprite(20, 0, "eren"); |
| 99 | + eren.scale.set(1.5); |
| 100 | + game.physics.arcade.enable(eren, Phaser.Physics.ARCADE); |
| 101 | + eren.body.bounce.y = 0.25; |
| 102 | + eren.body.gravity.y = 800; |
| 103 | + eren.body.collideWorldBounds = true; |
| 104 | + |
| 105 | + //reiner |
| 106 | + reiner = game.add.sprite(0, 250, "reiner"); |
| 107 | + reiner.name = "reiner"; |
| 108 | + game.physics.enable(reiner, Phaser.Physics.ARCADE); |
| 109 | + reiner.scale.set(2); |
| 110 | + |
| 111 | + reiner.body.collideWorldBounds = true; |
| 112 | + reiner.body.bounce.setTo(1, 1); |
| 113 | + reiner.body.velocity.x = 250; |
| 114 | + reiner.body.immovable = true; |
| 115 | + reiner.scale.x *= -1; |
| 116 | + |
| 117 | + //reiner2 |
| 118 | + reiner2 = game.add.sprite(1200, 800, "reiner2"); |
| 119 | + reiner2.name = "reiner2"; |
| 120 | + game.physics.enable(reiner2, Phaser.Physics.ARCADE); |
| 121 | + reiner2.scale.set(2); |
| 122 | + |
| 123 | + reiner2.body.collideWorldBounds = true; |
| 124 | + reiner2.body.bounce.setTo(1, 1); |
| 125 | + |
| 126 | + reiner2.body.velocity.x = 400; |
| 127 | + reiner2.body.immovable = true; |
| 128 | + |
| 129 | + //female |
| 130 | + female = game.add.sprite(800, 700, "female"); |
| 131 | + female.name = "female"; |
| 132 | + game.physics.enable(female, Phaser.Physics.ARCADE); |
| 133 | + female.scale.set(2); |
| 134 | + |
| 135 | + female.body.collideWorldBounds = true; |
| 136 | + female.body.bounce.setTo(1, 1); |
| 137 | + |
| 138 | + female.body.velocity.y = 200; |
| 139 | + female.body.immovable = true; |
| 140 | + |
| 141 | + //attack titan |
| 142 | + attackTitan = game.add.sprite(300, 0, "attackTitan"); |
| 143 | + attackTitan.name = "attackTitan"; |
| 144 | + game.physics.enable(attackTitan, Phaser.Physics.ARCADE); |
| 145 | + attackTitan.scale.set(2); |
| 146 | + |
| 147 | + attackTitan.body.collideWorldBounds = true; |
| 148 | + attackTitan.body.bounce.setTo(1, 1); |
| 149 | + |
| 150 | + attackTitan.body.velocity.y = 300; |
| 151 | + attackTitan.body.immovable = true; |
186 | 152 | }
|
187 | 153 |
|
188 |
| - eren.body.velocity.x = 0; |
| 154 | + function update() { |
| 155 | + game.physics.arcade.collide(eren, platforms); |
| 156 | + game.physics.arcade.collide(keys, platforms); |
| 157 | + game.physics.arcade.collide(eren, reiner, lose, null, this); |
| 158 | + game.physics.arcade.collide(eren, reiner2, lose, null, this); |
| 159 | + game.physics.arcade.collide(eren, female, lose, null, this); |
| 160 | + game.physics.arcade.collide(eren, attackTitan, lose, null, this); |
| 161 | + game.physics.arcade.overlap(eren, keys, collectKey, null, this); |
| 162 | + |
| 163 | + if (score === 0) { |
| 164 | + const endMenuWin = document.querySelector(".game-win"); |
| 165 | + endMenuWin.classList.remove("hidden"); |
| 166 | + score = 28; |
| 167 | + } |
| 168 | + |
| 169 | + function collectKey(eren, key) { |
| 170 | + key.kill(); |
| 171 | + coin.play(); |
| 172 | + score -= 1; |
| 173 | + scoreText.text = "Remaining: " + score; |
| 174 | + } |
189 | 175 |
|
190 |
| - if (game.input.keyboard.isDown(Phaser.Keyboard.A)) { |
191 |
| - eren.body.velocity.x = -hozMove; |
192 |
| - if (facing !== "left") { |
193 |
| - facing = "left"; |
194 |
| - eren.scale.x *= -1; |
| 176 | + function lose(eren) { |
| 177 | + const endMenuLose = document.querySelector(".game-lose"); |
| 178 | + endMenuLose.classList.remove("hidden"); |
195 | 179 | }
|
196 |
| - } else if (game.input.keyboard.isDown(Phaser.Keyboard.D)) { |
197 |
| - eren.body.velocity.x = hozMove; |
198 |
| - if (facing !== "right") { |
199 |
| - facing = "right"; |
200 |
| - eren.scale.x *= -1; |
| 180 | + |
| 181 | + eren.body.velocity.x = 0; |
| 182 | + |
| 183 | + if (game.input.keyboard.isDown(Phaser.Keyboard.A)) { |
| 184 | + eren.body.velocity.x = -hozMove; |
| 185 | + if (facing !== "left") { |
| 186 | + facing = "left"; |
| 187 | + eren.scale.x *= -1; |
| 188 | + } |
| 189 | + } else if (game.input.keyboard.isDown(Phaser.Keyboard.D)) { |
| 190 | + eren.body.velocity.x = hozMove; |
| 191 | + if (facing !== "right") { |
| 192 | + facing = "right"; |
| 193 | + eren.scale.x *= -1; |
| 194 | + } |
201 | 195 | }
|
202 |
| - } |
203 | 196 |
|
204 |
| - if (game.input.keyboard.isDown(Phaser.Keyboard.W)) { |
205 |
| - eren.body.velocity.y = vertMove; |
206 |
| - jumpTimer = game.time.now + 625; |
| 197 | + if (game.input.keyboard.isDown(Phaser.Keyboard.W)) { |
| 198 | + eren.body.velocity.y = vertMove; |
| 199 | + jumpTimer = game.time.now + 625; |
| 200 | + } |
207 | 201 | }
|
208 |
| - |
209 |
| - // if (cursors.left.isDown) { |
210 |
| - // eren.body.velocity.x = -150; |
211 |
| - // eren.animations.play("left"); |
212 |
| - // } else if (cursors.right.isDown) { |
213 |
| - // eren.body.velocity.x = 150; |
214 |
| - // eren.animations.play("right"); |
215 |
| - // } else { |
216 |
| - // eren.animations.stop(); |
217 |
| - // } |
218 |
| - // if (cursors.up.isDown) { |
219 |
| - // //&& player.body.touching.down |
220 |
| - // eren.body.velocity.y = -400; |
221 |
| - // } |
222 |
| -} |
| 202 | +}; |
0 commit comments