You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
2.5 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. pico-8 cartridge // http://www.pico-8.com
  2. version 32
  3. __lua__
  4. -- library
  5. black = 0
  6. dark_blue = 1
  7. dark_purple = 2
  8. dark_green = 3
  9. brown = 4
  10. dark_gray = 5
  11. light_gray = 6
  12. white = 7
  13. red = 8
  14. orange = 9
  15. yellow = 10
  16. green = 11
  17. blue = 12
  18. indigo = 13
  19. pink = 14
  20. peach = 15
  21. function print_ctr(s,y,c)
  22. print(s,64 - #s * 2,y,c)
  23. end
  24. -->8
  25. -- game code
  26. bg = 12
  27. function init_world()
  28. player = {}
  29. player.x = 64
  30. player.y = 16
  31. player.spr = 1
  32. drops = {}
  33. ramps = {}
  34. add_ramp(50,20,15,10)
  35. add_ramp(60,50,15,-15)
  36. add_ramp(50,60,20,0)
  37. end
  38. function _init()
  39. -- button-press initial delay
  40. poke(0x5f5c, 1)
  41. -- button-press repeat
  42. poke(0x5f5d, 2)
  43. init_world()
  44. end
  45. function _update()
  46. update_player()
  47. update_drops()
  48. end
  49. function add_ramp(x,y,dx,dy)
  50. r = {}
  51. r.x = x
  52. r.y = y
  53. r.dx = dx
  54. r.dy = dy
  55. add(ramps, r)
  56. end
  57. function update_player()
  58. if btn(0) then
  59. player.x -= 1
  60. end
  61. if btn(1) then
  62. player.x += 1
  63. end
  64. if btn(2) then
  65. player.y -= 1
  66. end
  67. if btn(3) then
  68. player.y += 1
  69. end
  70. if (player.y < 0) player.y = 0
  71. if (player.y > 127) player.y = 127
  72. if (player.x < 0) player.x = 0
  73. if (player.x > 127) player.x = 127
  74. if btnp(🅾️) then
  75. drop = {}
  76. drop.x = player.x
  77. drop.y = player.y
  78. add(drops, drop)
  79. end
  80. end
  81. function update_drops()
  82. draw_world()
  83. new_drops = {}
  84. for i=1,#drops do
  85. drop = drops[i]
  86. drop.y += 1
  87. if drop.y < 128 then
  88. add(new_drops, drop)
  89. end
  90. end
  91. drops = new_drops
  92. end
  93. function _draw()
  94. draw_world()
  95. spr(player.spr,player.x-1,player.y-1)
  96. print("drops: "..#drops, 1, 6, white)
  97. end
  98. function draw_world()
  99. cls(bg)
  100. foreach(drops, draw_drop)
  101. foreach(ramps, draw_ramp)
  102. end
  103. function draw_ramp(r)
  104. line(r.x,r.y,r.x+r.dx,r.y+r.dy,brown)
  105. end
  106. function draw_drop(drop)
  107. pset(drop.x, drop.y, white)
  108. end
  109. __gfx__
  110. 000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  111. 00000000aaa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  112. 007007000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  113. 00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  114. 00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  115. 00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000