master
Fabien Freling 2021-08-10 16:53:55 +02:00
parent 26599cf0e9
commit f4daf5a0b0
1 changed files with 29 additions and 2 deletions

View File

@ -26,7 +26,7 @@ class Star {
TIC.circ(_x, _y, _size, _color) TIC.circ(_x, _y, _size, _color)
} }
isPassed { expired {
_x + _size < 0 _x + _size < 0
} }
} }
@ -45,6 +45,10 @@ class Bullet {
draw() { draw() {
TIC.rect(_x, _y, 3, 1, 4) TIC.rect(_x, _y, 3, 1, 4)
} }
expired {
_x > W
}
} }
class Ship { class Ship {
@ -68,6 +72,8 @@ class Ship {
if (TIC.btn(3)) { if (TIC.btn(3)) {
_x = _x + _speed _x = _x + _speed
} }
_x.clamp(0, W)
_y.clamp(0, H)
if (TIC.btnp(4, 5, 10)) { if (TIC.btnp(4, 5, 10)) {
shoot() shoot()
@ -76,6 +82,9 @@ class Ship {
for (b in _bullets) { for (b in _bullets) {
b.update() b.update()
} }
while (_bullets.count > 0 && _bullets[0].expired) {
_bullets.removeAt(0)
}
} }
draw() { draw() {
@ -95,6 +104,9 @@ class World {
_t = 0 _t = 0
_stars = [] _stars = []
_player = Ship.new(W / 2, H / 2) _player = Ship.new(W / 2, H / 2)
_world_x = 0
_world_y = 0
_world_scroll_speed = 60 / 2
// init background // init background
for (i in 0..W) { for (i in 0..W) {
@ -109,7 +121,7 @@ class World {
s.update() s.update()
} }
// collect passed stars // collect passed stars
while (_stars.count > 0 && _stars[0].isPassed) { while (_stars.count > 0 && _stars[0].expired) {
_stars.removeAt(0) _stars.removeAt(0)
} }
// small stars // small stars
@ -125,9 +137,15 @@ class World {
_stars.add(Star.new(W, R.int(0,H), width, speed, 13)) _stars.add(Star.new(W, R.int(0,H), width, speed, 13))
} }
_t = _t + 1 _t = _t + 1
if (_t % _world_scroll_speed == 0) {
_world_x = _world_x + 1
}
} }
draw() { draw() {
var sx = (_t % _world_scroll_speed) / (_world_scroll_speed / 8)
TIC.map(_world_x, _world_y, 30 + 1, 17 + 1, -sx, 0)
for (s in _stars) { for (s in _stars) {
s.draw() s.draw()
} }
@ -171,10 +189,13 @@ class Game is TIC{
// 002:ccccceee8888cceeaaaa0cee888a0ceeccca0ccc0cca0c0c0cca0c0c0cca0c0c // 002:ccccceee8888cceeaaaa0cee888a0ceeccca0ccc0cca0c0c0cca0c0c0cca0c0c
// 003:eccccccccc888888caaaaaaaca888888cacccccccacccccccacc0ccccacc0ccc // 003:eccccccccc888888caaaaaaaca888888cacccccccacccccccacc0ccccacc0ccc
// 004:ccccceee8888cceeaaaa0cee888a0ceeccca0cccccca0c0c0cca0c0c0cca0c0c // 004:ccccceee8888cceeaaaa0cee888a0ceeccca0cccccca0c0c0cca0c0c0cca0c0c
// 005:2222222223312331231123112111211122222222233123312311231121112111
// 017:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec // 017:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec
// 018:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee // 018:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee
// 019:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec // 019:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec
// 020:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee // 020:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee
// 033:0000000000000000000000000002200000022000000000000000000000000000
// 034:0000000000000000000000000003300000033000000000000000000000000000
// </TILES> // </TILES>
// <SPRITES> // <SPRITES>
@ -184,6 +205,12 @@ class Game is TIC{
// 017:ddccccccddddddd0eeeeee000000000000000000000000000000000000000000 // 017:ddccccccddddddd0eeeeee000000000000000000000000000000000000000000
// </SPRITES> // </SPRITES>
// <MAP>
// 014:000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000500000000000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
// 015:000000000000000000000000000000000000000000000000000000000000000000000000505050000000000050505000000000005050500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
// 016:000000000000000000000000000000000000000000000000000000000000505050505050505050505050505050505050505050505050505050505050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
// </MAP>
// <WAVES> // <WAVES>
// 000:00000000ffffffff00000000ffffffff // 000:00000000ffffffff00000000ffffffff
// 001:0123456789abcdeffedcba9876543210 // 001:0123456789abcdeffedcba9876543210