-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Add files via upload * Add files via upload * add cooldown to shooting * fixes and improvements * Update bullet_heaven.js * Update bullet_heaven.js * fix bug by removing the ability to move up and down because its basically useless in this game * apparently i didn't have quotation marks in the sprig editor version * last change i didn't sync back to sprig * Fixing metadata --------- Co-authored-by: graham <[email protected]>
- Loading branch information
1 parent
a4f16b4
commit b3957dc
Showing
2 changed files
with
299 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,299 @@ | ||
/* | ||
@title: Bullet Heaven | ||
@author: OtterDev | ||
@tags: ["shooter"] | ||
@addedOn: 2024-07-30 | ||
*/ | ||
|
||
const player = "p"; | ||
const jerk = "j"; | ||
const bullet = "b"; | ||
const wall = "w" | ||
const playerWall = "i" | ||
const jerkBullet = "u"; | ||
let jerkHealth = 40; | ||
let jerkMovingLeft = false; | ||
let stillAlive = true; | ||
const bulletNoise = tune` | ||
500: C4-500, | ||
15500` | ||
const jerkSpeed = 400; | ||
const winNoise = tune` | ||
500: C4/500, | ||
500: D4/500, | ||
500: E4/500, | ||
14500` | ||
const deadNoise = tune` | ||
500: E4/500, | ||
500: D4/500, | ||
500: C4/500, | ||
14500` | ||
let jerkCanShoot = true; | ||
let canShoot = true; | ||
|
||
function delay(time) { | ||
return new Promise(resolve => setTimeout(resolve, time)); | ||
} | ||
setLegend( | ||
[player, bitmap` | ||
0000000000000000 | ||
0000000000000000 | ||
0022200000022200 | ||
0022200000022200 | ||
0022200000022200 | ||
0000000000000000 | ||
0000000000000000 | ||
0000000000000000 | ||
0000000000000000 | ||
0000000000000000 | ||
0000000000000000 | ||
0000000000000000 | ||
0000002222000000 | ||
0000000000000000 | ||
0000000000000000 | ||
0000000000000000`], | ||
[jerk, bitmap` | ||
3333333333333333 | ||
3033333333333303 | ||
3303333333333033 | ||
3330333333330333 | ||
3333333333333333 | ||
3333303333033333 | ||
3333303333033333 | ||
3333303333033333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333330000333333 | ||
3333303333033333 | ||
3333303333033333 | ||
3333303333033333`], | ||
[bullet, bitmap` | ||
....66666666.... | ||
....66666666.... | ||
...6666666666... | ||
...6666666666... | ||
..666666666666.. | ||
..666666666666.. | ||
..666666666666.. | ||
..666666666666.. | ||
..666666666666.. | ||
..666666666666.. | ||
..666666666666.. | ||
..666666666666.. | ||
..666666666666.. | ||
..666666666666.. | ||
..FFFFFFFFFFFF.. | ||
..FFFFFFFFFFFF..`], | ||
[jerkBullet, bitmap` | ||
..CCCCCCCCCCCC.. | ||
..CCCCCCCCCCCC.. | ||
..333333333333.. | ||
..333333333333.. | ||
..333333333333.. | ||
..333333333333.. | ||
..333333333333.. | ||
..333333333333.. | ||
..333333333333.. | ||
..333333333333.. | ||
..333333333333.. | ||
..333333333333.. | ||
...3333333333... | ||
...3333333333... | ||
....33333333.... | ||
....33333333....`], | ||
[wall, bitmap` | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333 | ||
3333333333333333`], | ||
[playerWall, bitmap` | ||
................ | ||
................ | ||
................ | ||
................ | ||
................ | ||
................ | ||
................ | ||
................ | ||
................ | ||
................ | ||
................ | ||
................ | ||
................ | ||
................ | ||
................ | ||
................`], | ||
) | ||
|
||
setSolids([]) | ||
|
||
const level = map` | ||
wwwwwwww | ||
........ | ||
j....... | ||
........ | ||
........ | ||
...p.... | ||
iiiiiiii` | ||
|
||
|
||
setMap(level) | ||
|
||
setPushables({ | ||
[player]: [] | ||
}) | ||
getFirst(player).y += 1; | ||
/* i think it'd make more sense to just scrap moving up and down as its basically useless | ||
and opens up the opportunity for bugs | ||
onInput("s", () => { | ||
if (stillAlive) { | ||
getFirst(player).y += 1; | ||
} | ||
}); | ||
*/ | ||
onInput("d", () => { | ||
if (stillAlive) { | ||
getFirst(player).x += 1; | ||
} | ||
}); | ||
/* | ||
onInput("w", () => { | ||
if (stillAlive) { | ||
getFirst(player).y -= 1; | ||
} | ||
}); | ||
*/ | ||
onInput("a", () => { | ||
if (stillAlive) { | ||
getFirst(player).x -= 1; | ||
} | ||
}); | ||
onInput("l", () => { | ||
if (stillAlive && canShoot) { | ||
addSprite(getFirst(player).x, getFirst(player).y, bullet) | ||
canShoot = false | ||
} | ||
}); | ||
onInput("i", () => { | ||
if (stillAlive && canShoot) { | ||
addSprite(getFirst(player).x, getFirst(player).y, bullet) | ||
canShoot = false | ||
} | ||
}); | ||
onInput("j", () => { | ||
if (stillAlive && canShoot) { | ||
addSprite(getFirst(player).x, getFirst(player).y, bullet) | ||
canShoot = false | ||
} | ||
}); | ||
onInput("k", () => { | ||
if (stillAlive && canShoot) { | ||
addSprite(getFirst(player).x, getFirst(player).y, bullet) | ||
canShoot = false | ||
} | ||
}); | ||
|
||
function moveBullets() { | ||
let bullets = getAll(bullet); | ||
let jerkBullets = getAll(jerkBullet); | ||
for (let i = 0; i < bullets.length; i++) { | ||
bullets[i].y -= 1; | ||
} | ||
for (let i = 0; i < jerkBullets.length; i++) { | ||
jerkBullets[i].y += 1; | ||
} | ||
} | ||
let timer = setInterval(() => { | ||
moveBullets() | ||
const bullets = getAll(bullet); | ||
const jerkBullets = getAll(jerkBullet); | ||
const walls = getAll(wall); | ||
const playerWalls = getAll(playerWall); | ||
if (getFirst(jerk).x === getFirst(player).x && jerkCanShoot) { | ||
addSprite(getFirst(jerk).x, getFirst(jerk).y, jerkBullet) | ||
jerkCanShoot = false | ||
} | ||
jerkBullets.forEach(bullet => { | ||
if (getFirst(player).x === bullet.x && getFirst(player).y === bullet.y) { | ||
bullet.remove() | ||
stillAlive = false; | ||
playTune(deadNoise) | ||
addText(`you died!`, { | ||
x: 5, | ||
y: 5, | ||
color: color`9` | ||
}) | ||
clearInterval(timer) | ||
} | ||
playerWalls.forEach(wall => { | ||
if (bullet.x === wall.x && bullet.y === wall.y) { | ||
bullet.remove(); | ||
} | ||
}); | ||
}); | ||
bullets.forEach(bullet => { | ||
walls.forEach(wall => { | ||
if (bullet.x === wall.x && bullet.y === wall.y) { | ||
bullet.remove(); | ||
} | ||
}); | ||
if (bullet.x === getFirst(jerk).x && bullet.y === getFirst(jerk).y && stillAlive) { | ||
if (jerkHealth <= 1) { | ||
// set stillalive to false so it has the same effect as if you died | ||
stillAlive = false | ||
clearInterval(jerkTimer) | ||
getFirst(jerk).remove(); | ||
playTune(winNoise); | ||
addText(`you won!`, { | ||
x: 5, | ||
y: 5, | ||
color: color`F` | ||
}) | ||
clearInterval(timer) | ||
return; | ||
} | ||
jerkHealth -= 1; | ||
playTune(bulletNoise) | ||
bullet.remove() | ||
} | ||
|
||
}); | ||
}, 100); | ||
let jerkTimer = setInterval(() => { | ||
if (!stillAlive) { | ||
return; | ||
} | ||
if (getFirst(jerk).x === 0) { | ||
jerkMovingLeft = false; | ||
} | ||
if (getFirst(jerk).x < 7) { | ||
if (jerkMovingLeft) { | ||
getFirst(jerk).x -= 1 | ||
} else { | ||
getFirst(jerk).x += 1 | ||
} | ||
} else { | ||
jerkMovingLeft = true | ||
getFirst(jerk).x -= 1 | ||
} | ||
}, jerkSpeed); | ||
let bulletTimer = setInterval(() => { | ||
jerkCanShoot = true | ||
}, 2000) | ||
let playerTimer = setInterval(() => { | ||
canShoot = true | ||
}, 200) |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.