20浏览
查看: 20|回复: 4

[项目] 【花雕动手做】基于 Kitronik 游戏机开发板之立方体乐园

[复制链接]
【花雕动手做】基于 Kitronik 游戏机开发板之立方体乐园图2

Kitronik ARCADE 使用 Microsoft MakeCode 平台,具有以下优势:
图形化编程界面:适合初学者,支持拖拽式编程。
即时模拟器:可以实时测试游戏效果。
硬件兼容性:可部署到 Kitronik ARCADE 设备,实现实体游戏体验。
支持 Python/JavaScript:便于进阶学习。


【花雕动手做】基于 Kitronik 游戏机开发板之立方体乐园图1

驴友花雕  中级技神
 楼主|

发表于 4 小时前

【花雕动手做】基于 Kitronik 游戏机开发板之立方体乐园

作为学习、练习与尝试,这里创建一个立方体乐园的小游戏。
打开网页版:https://arcade.makecode.com/,设置项目名称:立方体乐园

JavaScript 实验代码

  1. namespace projectImages {
  2.     export const Gate_H = img`
  3.         . . f f f . . . . . . f f f . .
  4.         . f f f f f f f f f f f f f f .
  5.         f f f . . f f . . f f . . f f f
  6.         f f . . . . f f f f . . . . f f
  7.         f . . f f . . f f . . f f . . f
  8.         f f f f f f . . . . f f f f f f
  9.         f . f f . . f f f f . . f f . f
  10.         f . . . . . . . . . . . . . . f
  11.         f . . . . . . . . . . . . . . f
  12.         f . f f . . f f f f . . f f . f
  13.         f f f f f f . . . . f f f f f f
  14.         f . . f f . . f f . . f f . . f
  15.         f f . . . . f f f f . . . . f f
  16.         f f f . . f f . . f f . . f f f
  17.         . f f f f f f f f f f f f f f .
  18.         . . f f f . . . . . . f f f . .
  19.     `;
  20.     export const House = img`
  21.         0 0 0 0 0 f f f f f f f f f f f f f f f f f f 0 0 0 0 0 0 0 0 0
  22.         0 0 0 0 f f 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 f f 0 0 0 0 0 0 0 0
  23.         0 0 0 f f 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 f f 0 0 0 0 0 0 0
  24.         0 0 f f 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 f f 0 0 0 0 0 0
  25.         0 f f 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 f f 0 0 0 0 0
  26.         f f 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 f f 0 0 0 0
  27.         f 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 f 0 0 0 0
  28.         f f e e e e e e e e e e e e e e e e e e e e e e e e f f 0 0 0 0
  29.         0 f e e f f f f e e e f f f f f f e e e f f f f e e f 0 0 0 0 0
  30.         0 f e e f 1 1 f e e e f 2 2 2 2 f e e e f 1 1 f e e f 0 0 0 0 0
  31.         0 f e e f 1 1 f e e e f 2 2 2 2 f e e e f 1 1 f e e f 0 0 0 0 0
  32.         0 f e e f 1 1 f e e e f 2 2 2 2 f e e e f 1 1 f e e f 0 0 0 0 0
  33.         0 f e e f f f f e e e f 2 2 2 7 f e e e f f f f e e f 0 0 0 0 0
  34.         0 f e e e e e e e e e f 2 2 2 2 f e e e e e e e e e f 0 0 0 0 0
  35.         0 f e e e e e e e e e f 2 2 2 2 f e e e e e e e e e f 0 0 0 0 0
  36.         0 f f f f f f f f f f f f f f f f f f f f f f f f f f 0 0 0 0 0
  37.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  38.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  39.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  40.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  41.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  42.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  43.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  44.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  45.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  46.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  47.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  48.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  49.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  50.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  51.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  52.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  53.     `;
  54.     export const Boss_2 = img`
  55.         . . . . . . . . . . . . . . . .
  56.         . . . . . f f f f f f . . . . .
  57.         . . . f f f 2 2 2 2 f f f . . .
  58.         . . f f 2 2 2 2 2 2 2 2 f f . .
  59.         . . f 2 2 2 1 1 1 1 2 2 2 f . .
  60.         . . f 2 2 2 1 1 f f 2 2 2 f . .
  61.         . . f 2 2 2 1 f f f 2 2 2 f . .
  62.         . . f 2 2 2 1 1 1 1 2 2 2 f . .
  63.         . . f 2 2 2 2 2 2 2 2 2 2 f . .
  64.         . f f f 2 2 2 2 2 2 2 2 f f f .
  65.         . f 7 7 7 7 7 7 7 7 7 7 7 7 f .
  66.         . f 7 7 7 7 7 7 7 7 7 7 7 7 f .
  67.         . f f f f 7 7 7 7 7 7 f f f f .
  68.         . . . f 2 2 2 2 2 2 2 2 f . . .
  69.         . . . f f 2 2 2 2 2 2 f f . . .
  70.         . . . . f f 2 2 2 2 f f . . . .
  71.     `;
  72.     export const Boss_Final = img`
  73.         f 5 f . . . . . . . . . . f 5 f
  74.         5 5 f f . . . . . . . . f f 5 5
  75.         f f 5 5 f . . f f . . f 5 5 f f
  76.         . f 5 5 f f f 5 5 f f f 5 5 f .
  77.         . . f f 5 5 f 5 5 f 5 5 f f . .
  78.         . . f 5 5 5 5 5 5 5 5 5 5 f . .
  79.         . . f 5 5 f f 5 5 f f 5 5 f . .
  80.         . . f 5 5 f f 5 5 f f 5 5 f . .
  81.         . . f 5 5 1 1 5 5 1 1 5 5 f . .
  82.         . . f 5 5 5 5 5 5 5 5 5 5 f . .
  83.         . . f f f f 5 5 5 5 f f f f . .
  84.         . . . . . f f f f f f . . . . .
  85.         . . . f f f f f f f f f f . . .
  86.         . . . f f f f . . f f f f . . .
  87.         . . . f f f . . . . f f f . . .
  88.         . . . f f . . . . . . f f . . .
  89.     `;
  90.     export const Boy = img`
  91.         . . . f f f f f f f f f f . . .
  92.         . . . f c c c c c c c c f . . .
  93.         . . . f c f f c c f f c f . . .
  94.         . . . f c 1 f c c f 1 c f . . .
  95.         . . . f c c c c c c c c f . . .
  96.         . . . f c c c c c c c c f . . .
  97.         . . . f f c c c c c c f f . . .
  98.         . f f f f f c c c c f f f f f .
  99.         f 6 6 6 6 6 6 6 6 6 6 6 6 6 6 f
  100.         f 6 6 6 6 6 6 6 6 6 6 6 6 6 6 f
  101.         f f 6 6 6 6 6 6 6 6 6 6 6 6 f f
  102.         . f f f f 6 6 6 6 6 6 f f f f .
  103.         . . . . f 6 6 6 6 6 6 f . . . .
  104.         . . . . f 6 6 6 6 6 6 f . . . .
  105.         . . . . f f 6 6 6 6 f f . . . .
  106.         . . . . . f f f f f f . . . . .
  107.     `
  108.     export const Chest_1 = img`
  109.         f f f f f f f f f f f f f f f f
  110.         f e e e e e e e e e e e e e e f
  111.         f e e c e e e c e e e c e e e f
  112.         f e e c e e e c e e e c e e e f
  113.         f e e c e f f f f f f e c e e f
  114.         f e e c f 5 5 5 5 5 5 f c e e f
  115.         f f f f f 5 5 5 5 5 5 f f f f f
  116.         f e e e f 5 f f f f 5 f c e e f
  117.         f e e e f 5 5 f f 5 5 f e e e f
  118.         f e c e e f 5 5 5 5 f e e e e f
  119.         f e c c e e f 5 5 f e e e c e f
  120.         f e e c c e e f f c e e e c e f
  121.         f e e e c e e e c e e e e c e f
  122.         f e e e e e e e c e e e e c e f
  123.         f e e e e e e e c e e e c e e f
  124.         f f f f f f f f f f f f f f f f
  125.     `;
  126.     export const Chest = img`
  127.         f f f f f f f f f f f f f f f f
  128.         f e e e e e e e e e e e e e e f
  129.         f e e e e e e e e e e e e e e f
  130.         f e e e e e e e e e e e e e e f
  131.         f e e e e f f f f f f e e e e f
  132.         f e e e f 7 7 7 7 7 7 f e e e f
  133.         f f f f f 7 7 7 7 7 7 f f f f f
  134.         f e e e f 7 f f f f 7 f e e e f
  135.         f e e e f 7 7 f f 7 7 f e e e f
  136.         f e e e e f 7 7 7 7 f e e e e f
  137.         f e e e e e f 7 7 f e e e e e f
  138.         f e e e e e e f f e e e e e e f
  139.         f e e e e e e e e e e e e e e f
  140.         f e e e e e e e e e e e e e e f
  141.         f e e e e e e e e e e e e e e f
  142.         f f f f f f f f f f f f f f f f
  143.     `;
  144.     export const Flag = img`
  145.         0 0 0 f f f f 0 0 0 0 0 0 0 0 0
  146.         0 0 0 f 7 7 f f f 0 0 0 0 0 0 0
  147.         0 0 0 f 7 7 7 7 f f f f 0 0 0 0
  148.         0 0 0 f 7 7 7 7 7 7 7 f f f 0 0
  149.         0 0 0 f 7 7 7 7 7 7 7 7 7 f f 0
  150.         0 0 0 f 7 7 7 7 7 7 7 7 7 7 f 0
  151.         0 0 0 f 7 7 7 7 7 7 2 2 f f f 0
  152.         0 0 0 f 7 7 7 7 2 2 f f 0 0 0 0
  153.         0 0 0 f 7 7 2 f f f f 0 0 0 0 0
  154.         0 0 0 f 7 7 f f 0 0 0 0 0 0 0 0
  155.         0 0 0 f 7 7 f 0 0 0 0 0 0 0 0 0
  156.         0 0 0 f 7 7 f 0 0 0 0 0 0 0 0 0
  157.         f f f f 7 7 f f f f f f f f 0 0
  158.         f 7 7 7 7 7 7 7 7 7 7 7 2 f 0 0
  159.         f 7 7 7 7 7 7 7 7 7 7 2 2 f 0 0
  160.         f f f f f f f f f f f f f f 0 0
  161.     `;
  162.     export const Flower = img`
  163.         . . . . f f f 5 5 f f f . . . .
  164.         . . . . f 5 3 3 3 5 5 f f . . .
  165.         f f f f f 5 3 7 7 3 3 5 f . . .
  166.         5 5 5 f f f 5 3 3 7 3 5 f . . .
  167.         5 3 3 5 f f f 5 3 5 f f f f f f
  168.         5 3 7 5 f f 5 3 5 3 f f f 5 5 f
  169.         f 5 5 4 f f 4 5 4 f f 5 3 3 7 f
  170.         f f 4 4 4 f 4 4 f f 5 3 5 3 3 5
  171.         . f f f 4 4 f 4 4 f 4 5 3 5 3 f
  172.         . . f f 4 4 f 4 4 f 4 4 f 5 5 f
  173.         . . . f f 4 4 4 f 4 4 f f f f f
  174.         . . . . f f 4 4 f 4 f f . . . .
  175.         . . . . . f 4 f 4 4 f . . . . .
  176.         . . . . . f 4 4 4 f f . . . . .
  177.         . . . . . f f 4 f f . . . . . .
  178.         . . . . . . f f f . . . . . . .
  179.     `;
  180.     export const Gate = img`
  181.         0 0 f f f f f f f f f f f f 0 0
  182.         0 f f f 0 f 0 0 0 0 f 0 f f f 0
  183.         f f f 0 0 f f 0 0 f f 0 0 f f f
  184.         f f 0 0 f f f 0 0 f f f 0 0 f f
  185.         f f 0 0 f f 0 0 0 0 f f 0 0 f f
  186.         0 f f 0 0 f 0 0 0 0 f 0 0 f f 0
  187.         0 f f f 0 0 f 0 0 f 0 0 f f f 0
  188.         0 f 0 f f 0 f 0 0 f 0 f f 0 f 0
  189.         0 f 0 f f 0 f 0 0 f 0 f f 0 f 0
  190.         0 f f f 0 0 f 0 0 f 0 0 f f f 0
  191.         0 f f 0 0 f 0 0 0 0 f 0 0 f f 0
  192.         f f 0 0 f f 0 0 0 0 f f 0 0 f f
  193.         f f 0 0 f f f 0 0 f f f 0 0 f f
  194.         f f f 0 0 f f 0 0 f f 0 0 f f f
  195.         0 f f f 0 f 0 0 0 0 f 0 f f f 0
  196.         0 0 f f f f f f f f f f f f 0 0
  197.     `
  198.     export const Girl = img`
  199.         0 0 0 f f f f f f f f f f 0 0 0
  200.         0 0 0 f c c c c c c c c f 0 0 0
  201.         0 0 0 f c f f c c f f c f 0 0 0
  202.         0 0 0 f c 1 f c c f 1 c f 0 0 0
  203.         0 0 0 f c c c c c c c c f 0 0 0
  204.         0 0 0 f c c c c c c c c f 0 0 0
  205.         0 0 0 f f c c c c c c f f 0 0 0
  206.         0 f f f f f c c c c f f f f f 0
  207.         f 3 3 3 3 3 3 3 3 3 3 3 3 3 3 f
  208.         f 3 3 3 3 3 3 3 3 3 3 3 3 3 3 f
  209.         f f 3 3 3 3 3 3 3 3 3 3 3 3 f f
  210.         0 f f f f 3 3 3 3 3 3 f f f f 0
  211.         0 0 0 0 f 3 3 3 3 3 3 f 0 0 0 0
  212.         0 0 0 0 f 3 3 3 3 3 3 f 0 0 0 0
  213.         0 0 0 0 f f 3 3 3 3 f f 0 0 0 0
  214.         0 0 0 0 0 f f f f f f 0 0 0 0 0
  215.     `;
  216.     export const Grass = img`
  217.         0 0 0 0 0 f f f f f 0 0 0 0 0 0
  218.         0 0 0 0 0 f f 6 6 f 0 0 0 0 0 0
  219.         0 0 0 0 0 f 6 6 d f 0 0 0 0 0 0
  220.         0 0 0 0 f f 6 d f f 0 0 0 0 0 0
  221.         0 0 0 0 f 6 6 d f 0 0 f f f f 0
  222.         f f f f f 6 6 f f 0 f f 6 6 f 0
  223.         f 6 6 6 f 6 f f f f f 6 6 d f 0
  224.         f f f 6 6 6 f f f 6 6 6 f f f 0
  225.         0 0 f 6 6 6 f f 6 6 6 f f 0 0 0
  226.         0 0 f f d 6 6 f 6 6 f f 0 0 0 0
  227.         0 0 0 f f d 6 f 6 f f 0 0 0 0 0
  228.         0 0 0 0 f f 6 6 6 f 0 0 0 0 0 0
  229.         0 0 0 0 0 f 6 f f f 0 0 0 0 0 0
  230.         0 0 0 0 0 f 6 f 0 0 0 0 0 0 0 0
  231.         0 0 0 0 0 f f f 0 0 0 0 0 0 0 0
  232.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  233.     `;
  234.     export const Stone_1 = img`
  235.         0 0 0 f f f f f f f f f f 0 0 0
  236.         0 0 f f b b b b b b b b f f 0 0
  237.         0 f f b b f b b b b f b b f f 0
  238.         f f b b b f f b b b f b b b f f
  239.         f b b b b f b b b b b f f b b f
  240.         f b b f f f b b f b b b f f b f
  241.         f b b b b b b b b f b b b f b f
  242.         f b f b b b b b b f b b b f b f
  243.         f f f b b f b b b f f b b b b f
  244.         f b b b b f b b b b b b b b b f
  245.         f b b f f f f f b b b f b b b f
  246.         f b b b b b b f b b b b f b b f
  247.         f f b b b b b b b f f f b b f f
  248.         0 f f b f f b b b f b b b f f 0
  249.         0 0 f f b f f b b b b b f f 0 0
  250.         0 0 0 f f f f f f f f f f 0 0 0
  251.     `;
  252.     export const Stone = img`
  253.         0 0 f f f f f f f f f f f f 0 0
  254.         0 f f d d 8 d d d 8 d d d f f 0
  255.         f f d d d d f d d d f 8 d d f f
  256.         f d d 8 d 8 d d d d 8 d f d d f
  257.         f d 8 f 8 d f 8 d d 8 d 8 d d f
  258.         f d d d 8 d d d d d d d d f d f
  259.         f d 8 d f d d d d d d d d d d f
  260.         f d d d 8 d d 8 d d 8 f d 8 d f
  261.         f d 8 d d d d f f d f 8 d 8 d f
  262.         f d d f d d d d d d d 8 d d d f
  263.         f d d d 8 d d 8 d d d d f d d f
  264.         f d 8 d d d d d d 8 d d f 8 d f
  265.         f d d 8 d d f d f d 8 d d d d f
  266.         f f d d f d 8 d 8 f d d d d f f
  267.         0 f f d d d d d d d d d d f f 0
  268.         0 0 f f f f f f f f f f f f 0 0
  269.     `;
  270.     export const Boss_1 = img`
  271.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  272.         0 0 0 0 0 0 f f f f 0 0 0 0 0 0
  273.         0 0 0 0 f f b b b b f f 0 0 0 0
  274.         0 0 0 f b b b b b b b b f 0 0 0
  275.         0 0 f b f f f b b f f f b f 0 0
  276.         0 0 f b 1 f f b b f f 1 b f 0 0
  277.         0 0 f b b b b b b b b b b f 0 0
  278.         0 0 f b b b b b b b b b b f 0 0
  279.         0 0 f b b b b b b b b b b f 0 0
  280.         0 0 0 f b f 1 1 1 1 f b f 0 0 0
  281.         0 0 0 0 f b f 1 1 f b f 0 0 0 0
  282.         0 0 0 0 f b f f f f b f 0 0 0 0
  283.         0 0 0 0 f b f 0 0 f b f 0 0 0 0
  284.         0 0 0 0 f f f 0 0 f f f 0 0 0 0
  285.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  286.         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  287.     `;
  288.     export const Flower_2 = img`
  289.         0 0 0 0 0 0 f 7 f f f 0 0 0 0 0
  290.         0 0 0 0 0 f f 7 7 7 f 0 0 0 0 0
  291.         0 0 0 0 0 f 7 6 6 7 f f 0 0 0 0
  292.         0 f f f 0 f 7 7 6 7 7 f f f f 0
  293.         f f 7 f f f f 7 7 7 f f f 7 f f
  294.         f 7 7 7 f f 4 4 4 f f f 7 6 7 f
  295.         7 7 6 6 f f 4 4 f f 0 f 7 6 6 f
  296.         f 7 6 7 4 f 4 f f f f f 4 7 7 f
  297.         f f 7 f 4 4 4 f f f 4 4 4 f f f
  298.         0 f f f 4 4 4 f f 4 4 4 f f 0 0
  299.         0 0 0 f f 4 4 4 f 4 4 f f 0 0 0
  300.         0 0 0 0 f f 4 4 f 4 f f 0 0 0 0
  301.         0 0 0 0 0 f f 4 4 4 f 0 0 0 0 0
  302.         0 0 0 0 0 0 f 4 f f f 0 0 0 0 0
  303.         0 0 0 0 0 0 f 4 f 0 0 0 0 0 0
  304.         0 0 0 0 0 0 f f f 0 0 0 0 0 0 0
  305.     `;
  306. }
  307. namespace palettes {
  308.     export const palettehex = hex`
  309.         000000
  310.         ffffff
  311.         d67a23
  312.         d278bc
  313.         33a554
  314.         b84949
  315.         648dc5
  316.         f7be12
  317.         7b7676
  318.         aed68d
  319.         000000
  320.         b695c9
  321.         eacdb7
  322.         d8d4d4
  323.         917155
  324.         000000`;
  325. }
  326. namespace SpriteKind {
  327.     export const Girl = SpriteKind.create();
  328.     export const Boss = SpriteKind.create();
  329.     export const Chest = SpriteKind.create();
  330.     export const Boy = SpriteKind.create();
  331. }
  332. function introSequence() {
  333.     game.showLongText("In a cube land far far away...", DialogLayout.Center);
  334.     game.showLongText("There was a cubed lad and a cubed lady,    living         happily        ever           after.", DialogLayout.Center);
  335.     let girl = sprites.create(projectImages.Girl.doubled());
  336.     let boy = sprites.create(projectImages.Boy.doubled());
  337.     let house = sprites.create(projectImages.House.doubled());
  338.     scene.setBackgroundColor(9);
  339.     music.baDing.play();
  340.     girl.setPosition(50, 80);
  341.     boy.setPosition(110, 80);
  342.     house.setPosition(45, 40);
  343.     game.waitAnyButton();
  344.     game.showLongText("But            everything changed  when the cube lord attacked.", DialogLayout.Center);
  345.     let boss = sprites.create(projectImages.Boss_Final.doubled());
  346.     boss.setPosition(120, 47);
  347.     let melody = new music.Melody("F#4:1 D#4:1 D#4:1 F#4:1 D4:1 D4:1");
  348.     melody.loop();
  349.     game.waitAnyButton();
  350.     boss.vx = 25;
  351.     boy.vx = 25;
  352.     boss.vy = -25;
  353.     boy.vy = -25;
  354.     girl.say("No! Leave him alone!");
  355.     game.waitAnyButton();
  356.     melody.stop();
  357.     music.baDing.play();
  358.     game.splash("I have to find him!");
  359.     girl.destroy();
  360.     house.destroy();
  361.     boy.destroy();
  362.     boss.destroy();
  363. }
  364. function level1Setup() {
  365.     scene.setBackgroundColor(9);
  366.     scene.setTileMap(img`
  367.         . . . . . . . . . . . . . . . . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
  368.         . . . . . . . . . . . . . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 . . . . . . 9
  369.         . . . . . . . . . . . . . . . . 9 . . . . . . . . . . . . . 2 . . . . . . . . . . . 1 . . . . . 9 . . . . . . 9
  370.         . . . . . . . . . . . . . . . . 9 . . 9 9 9 9 9 9 9 9 9 . . . . . 9 9 9 9 9 9 9 . . . . . 2 . . 9 . . . 2 . . 9
  371.         . 2 . . . . . 1 . . . . . . . . 9 . 2 . . . . . . . . 9 . . . . . 9 . . . . . . . . . . . . . . . . . . . . . 9
  372.         . . . . . . . . . . . . . . . . 9 . . . . . . . . . . 9 . 1 . . . 9 . . . . . . . . . . . . . . . . . 9 9 9 9 9
  373.         9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . . . 9 . . . . . 9 . . . 9 9 9 9 9 9 9 9 . . . . . . 9 . . . 9
  374.         9 . . . 9 . . . . . . . 9 . . . . . . . . . . 9 . . . . . . . . . 9 . . . 9 . . . . . . . . . . . . . 9 . . . 9
  375.         9 . . . 9 . . . 2 . . . 9 . . 2 . . . . . . . 9 . . . . . . . 2 . 9 . . . 9 . . . 1 . . . . . . . . . 9 . . . 9
  376.         9 . . . 9 . . . . . . . 9 . . . 9 9 9 9 . . 9 9 . . . 9 . . . . . 9 . . . 9 . . . . . . . . . . . . . 9 . . . 9
  377.         9 . 2 . 9 9 9 9 9 9 . . . . . . . . . . . . . 6 . 1 . 9 . . . . . 9 9 9 9 9 9 9 9 9 9 9 9 9 . . . 2 . 9 . . . 9
  378.         9 . . . . . . . . . . . . . . . . . . . . . . 6 . . . 9 . . . . . 9 . . . . . . . . . . . 9 9 . . . . 9 . . . 9
  379.         9 . . . . . 2 . . . . 1 . . 9 . . 9 . . . . 9 9 . . . 9 . . 1 . . 9 . 1 . . . . . . . . . 6 . . . . . . . . . 9
  380.         9 . 1 . . . . . . . . . . . 9 . . 9 . . . . . 9 . . . 9 . . . . . 9 . . 9 9 9 9 9 9 9 . . 6 . . . . . . . . . 9
  381.         9 . . . 9 . . 9 . . . . . . 9 . . 9 . . . 2 . 9 9 9 9 9 9 9 9 9 9 9 . . . . . . . . . . . 9 9 9 9 9 9 9 9 9 9 9
  382.         9 . . . 9 . . 9 9 9 9 9 . . 9 . . 9 9 9 . . . 9 . . 9 4 . . . . . 9 . . . . 2 . . . . . . . . . . . . . . . . 9
  383.         9 . 2 . 9 . . . . . . . . . 9 . . . . . . . . 9 . . 6 . . . . . . 9 . . . . . . . . . . . . . . 1 . . . . . . 9
  384.         9 . . . 9 . . . . . 2 . . . 9 . . 1 . . . . . 9 . . 6 . . . . . . 9 . . . . 9 9 9 9 9 9 9 9 9 . . . . 9 . . . 9
  385.         9 . . . 9 . . . . . . . . . 9 . . . . . . . . 9 9 9 9 4 . . . . . 9 . 1 . . . . . . . . . . 9 . . . . 9 . . . 9
  386.         9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . . . . . . 2 . . 9 . . . . . . . . . . . . 9 . . 2 . 9 . . . 9
  387.         . . . . . . . . . . . . . . . . . . . . . . . 9 . 1 . . . . . . . 9 . . 9 9 9 9 9 9 9 9 9 9 9 . . . . 9 . . . 9
  388.         . . 1 . . . . . . 1 . . . . . . 2 . . . . . . 9 . . . . . . . . . 9 . . . . . . . . . . . . . . . . . 9 . . 2 9
  389.         . . . . . . . . . . . . . . . . . . . . . . . 9 . . . 9 9 9 9 9 9 9 . . . . . . . . . . . . . . . . . 9 . . . 9
  390.         . . . . . . . . . . . . . . . . . . . . 1 . . 9 . . . 9 . . . . . . . . 2 . . . 9 9 9 9 9 9 9 9 . . . 9 . . . 9
  391.         . . . . . . . . . . . . . . . . . . . . . . . 9 . . . 9 . . . . . . . . . . . . 9 . . . . . . . . 1 . 9 . . . 9
  392.         . . . . . . . . . . . . . . . . . . . . . . . 9 . 2 . 9 . . 1 . . . 9 9 9 9 9 9 9 . . . . . . . . . . 9 . . . 9
  393.         . . . . . . . . . . . . . . . . . . . . . . . 9 . . . 9 . . . . . . . . . . . . 9 . . . 9 9 9 9 9 9 9 9 . . . 9
  394.         . . . . . . . . . . . . . . . . . . . . . . . 9 . . . 9 . . . . . . . 2 . . . . 9 . . . . . . . . . . . . . . 9
  395.         . . . . . . . . . . . . . . . . . . . . 1 . . 9 . . . 9 9 9 9 9 9 . . . . . . . 9 . . . . . . . . . . . . . . 9
  396.         . . . . . . . . . . . . . . . . . . . . . . . 9 . . . 9 . . . . 9 . . . . . . . 9 . . . 9 9 9 9 9 9 9 . . 2 . 9
  397.         . . . . . . . . . . . . . . . . . . . . . . . 9 . . . 9 . . . . 9 . . . . . . . 9 . . . . . . . . . 9 . . . . 9
  398.         . . . . . . . . . . . . . . . . . . . . . . . 9 . . . 9 . 1 . . 9 . . . . . . . 9 . . . . . . . . . 9 . . . . 9
  399.         . . . . . . . . . . . . . . . . . . . . . . . 9 . . . 9 . . . . 9 . . . . . 2 . 9 . . . . . 9 . . . 9 . . . . 9
  400.         . . . . . . . . . . . . . . . . . . . . 2 . . 9 . . . 9 . . . . 9 . . . . . . . 9 . . . . . 9 . . . 9 . . . . 9
  401.         . . . . . . . . . . . . . . . . . . . . . . . 9 . . . 9 . . . . 9 . . . . . . . 9 . . . . . 9 9 9 9 9 . . . . 9
  402.         . . . . . . . . . . . . . . . . . . . . . . . 9 . 1 . . . . 2 . . . 1 . . . . . 9 . . 1 . . . . . . . . . 2 . 9
  403.         . . . . . . . . . . . . . . . . . . . . . . . 9 . . . . . . . . . . . . . . . . 9 . . . . . . . . . . . . . . 9
  404.         . . . . . . . . . . . . . . . . . . . . . . . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
  405.     `);
  406.     scene.setTile(9, projectImages.Stone, true);
  407.     scene.setTile(6, projectImages.Gate, false);
  408.     scene.setTile(3, projectImages.Boy, false);
  409.     scene.setTile(2, projectImages.Flower, false);
  410.     scene.setTile(1, projectImages.Flower_2, false);
  411.     scene.setTile(4, projectImages.Flag, false);
  412.     boySprite.setPosition(398, 268);
  413.     girlSprite.setPosition(30, 200);
  414.     boss1Sprite.setPosition(360, 178);
  415.     bossFinalSprite.setPosition(445, 272);
  416.     boss2Sprite.setPosition(748, 206);
  417.     chest1Sprite.setPosition(30, 130);
  418.     chest2Sprite.setPosition(355, 126);
  419.     chest3Sprite.setPosition(355, 284);
  420.     chest4Sprite.setPosition(870, 30);
  421.     chest5Sprite.setPosition(870, 110);
  422.     chest6Sprite.setPosition(300, 30);
  423.     chest7Sprite.setPosition(624, 150);
  424.     chest8Sprite.setPosition(778, 520);
  425.     chest9Sprite.setPosition(720, 308);
  426.     chest10Sprite.setPosition(460, 482);
  427.     chest11Sprite.setPosition(864, 264);
  428.     chest12Sprite.setPosition(512, 256);
  429. }
  430. function level2Setup() {
  431.     scene.setBackgroundColor(9);
  432.     scene.setTileMap(img`
  433.         9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  434.         9 . . . . . 9 . . . . . . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  435.         9 . . . . . 9 . . . . . . . 1 . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  436.         9 . 2 . . . 9 9 9 9 9 9 . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  437.         9 . . . . . . . 9 . . . . 2 . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  438.         9 . . . . . 1 . 9 . . . . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  439.         9 9 9 9 9 . . . 9 . . . 9 9 9 9 9 9 9 9 9 9 9 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  440.         9 . . . 9 . . . . . . . 9 . . . . . . . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  441.         9 . . . 9 . . . 2 . . . 9 . . 2 . . . . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  442.         9 . . . 9 . . . . . . . 9 . . . 9 9 9 9 9 9 9 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  443.         9 . 2 . 9 9 9 9 9 . . . . . . . . . . . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  444.         9 . . . . . . . . . . . . . . . . . . . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  445.         9 . . . . . 2 . . . . 1 . . 9 . . 9 . . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  446.         9 . 1 . . . . . . . . . . . 9 . . 9 . . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  447.         9 . . 9 . . . 9 . . . . . . 9 . . 9 . . . 2 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
  448.         9 . . 9 . . . 9 9 9 9 9 . . 9 . . 9 9 9 . . . 9 . . 9 4 . . . . . 9 . . . . 2 . . . . . . . . . . . . . . . . 9
  449.         9 . . 9 . . . . . . . . . . 9 . . . . . . . . 9 . . 6 . . . . . . 9 . . . . . . . . . . . . . . 1 . . . . . . 9
  450.         9 . . 9 . . . . . . 2 . . . 9 . . 1 . . . . . 9 . . 6 . . . . . . 9 . . . . 9 9 9 9 9 9 9 9 9 . . . . 9 . . . 9
  451.         9 . . 9 . . 9 . . 9 . . . . 9 . . . . . . . . 9 9 9 9 4 . . . . . 9 . 1 . . . . . . . . . . 9 . . . . 9 . . . 9
  452.         9 9 9 9 9 9 9 7 7 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . . . . . . 2 . . 9 . . . . . . . . . . . . 9 . . 2 . 9 . . . 9
  453.         9 . . . 9 . . . . . . . . . . . . . . . . . . 9 . 1 . . . . . . . 9 . . 9 9 9 9 9 9 9 9 9 9 9 . . . . 9 . . . 9
  454.         9 . . . 9 . . . . . . . . . . . . . . . . . . 9 . . . . . . . . . 9 . . . . . . . . . . . . . . . . . 9 . . 2 9
  455.         9 . . . 9 . 1 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . . . 9 9 9 9 9 9 9 . . . . . . . . . . . . . . . . . 9 . . . 9
  456.         9 . 2 . 9 . . . . . . . . . . . . . . . . . . 9 . . . . . . . . . . . . 2 . . . 9 9 9 9 9 9 9 9 . . . 9 . . . 9
  457.         9 . . . 9 . . . . . . . . . . . . . . . . 2 . 9 . . . . . . . . . . . . . . . . 9 . . . . . . . . 1 . 9 . . . 9
  458.         9 . . . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . . . 9 . 2 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . . . . . . . . . . 9 . . . 9
  459.         9 . . . 9 . . 9 . . . . . . . . . . . . . . . 9 . . . 9 . . . . . . . . . . . . 9 . . . 9 9 9 9 9 9 9 9 . . . 9
  460.         9 . . . 9 . . 9 . 1 . . . . . . . . . . 1 . . 9 9 9 9 9 . . . . . . . 2 . . . . . . . . . . . . . . . . . . . 9
  461.         9 . . . 9 . . 9 . . . . 9 . . . 9 . . . . . . . . . . 9 9 9 9 9 9 . . . . . . . . . . . . . . . . . . . . . . 9
  462.         9 . . . . . . 9 . . . . 9 . . . 9 9 9 9 9 . . . . . . 9 . . . . 9 . . . . . . . 9 . . . 9 9 9 9 9 9 9 . . 2 . 9
  463.         9 . . 1 . . . 9 . . . . 9 . . . . . . . . . 2 . . . 9 9 . . . . 9 9 9 9 9 9 9 9 9 . . . . . . . . . 9 . . . . 9
  464.         9 . . . . . . 9 . . . . 9 . . . 2 . . . . . . . . . . 6 . 1 . . 9 . . . . . . . 9 . . . . . . . . . 9 . . . . 9
  465.         9 . . . . . . . . 2 . . 9 . . . . . . . . . . . . . . 6 . . . . 9 . . . . . 2 . 9 . . . . . 9 . . . 9 . . . . 9
  466.         9 . . . . . . . . . . . 9 9 9 9 9 9 9 9 9 9 9 . . . 9 9 . . . . 9 . . . 9 9 9 9 9 9 9 9 9 9 9 . . . 9 . . . . 9
  467.         9 9 9 9 9 9 9 9 . . . . . . . . . . . . . . . . . . . 9 . . . . 9 . . . . . . . . . . . . . 9 9 9 9 9 . . . . 9
  468.         9 . . . . . . . . . . . . . 2 . . . . . . . . . . 1 . 9 . . 2 . . . 1 . . . . . . . . 1 . . . . . . . . . 2 . 9
  469.         9 . . . . . . . . . . . . . . . . . . . . . . . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  470.         9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
  471.     `);
  472.     scene.setTile(9, projectImages.Stone, true);
  473.     scene.setTile(6, projectImages.Gate, false);
  474.     scene.setTile(7, projectImages.Gate_H, false)
  475.     scene.setTile(3, projectImages.Boy, false);
  476.     scene.setTile(2, projectImages.Flower, false);
  477.     scene.setTile(1, projectImages.Flower_2, false);
  478.     scene.setTile(4, projectImages.Flag, false);
  479.     boySprite.setPosition(398, 268);
  480.     girlSprite.setPosition(30, 200);
  481.     boss1Sprite.setPosition(130, 292);
  482.     bossFinalSprite.setPosition(445, 272);
  483.     boss2Sprite.setPosition(420, 510);
  484.     chest1Sprite.setPosition(30, 30);
  485.     chest2Sprite.setPosition(355, 126);
  486.     chest3Sprite.setPosition(355, 284);
  487.     chest4Sprite.setPosition(30, 570);
  488.     chest5Sprite.setPosition(30, 340);
  489.     chest6Sprite.setPosition(350, 340);
  490.     chest7Sprite.setPosition(100, 440);
  491.     chest8Sprite.setPosition(778, 520);
  492.     chest9Sprite.setPosition(720, 308);
  493.     chest10Sprite.setPosition(460, 482);
  494.     chest11Sprite.setPosition(864, 264);
  495.     chest12Sprite.setPosition(512, 256);
  496. }
  497. sprites.onOverlap(SpriteKind.Girl, SpriteKind.Boss, function (mainSprite, hitSprite) {
  498.     if (hitSprite == boss1Sprite) {
  499.         if (chestsCollected == 3) {
  500.             music.baDing.play();
  501.             boss1Sprite.destroy();
  502.             game.splash("You may pass!");
  503.         }
  504.         else {
  505.             game.showLongText("Collect all the chests to pay the toll.", DialogLayout.Center);
  506.             boss1Sprite.say("You have collected " + chestsCollected.toString() + " out of 3.", 5000);
  507.             switch (level) {
  508.                 case 1:
  509.                     girlSprite.setPosition(girlSprite.x - 10, girlSprite.y);
  510.                     break;
  511.                 default:
  512.                     girlSprite.setPosition(girlSprite.x, girlSprite.y - 10);
  513.                     break;
  514.             }
  515.         }
  516.     }
  517.     else if (hitSprite == boss2Sprite) {
  518.         if (chestsCollected == 7) {
  519.             music.baDing.play();
  520.             boss2Sprite.destroy();
  521.             game.splash("You may pass!");
  522.         }
  523.         else {
  524.             game.showLongText("Collect all the chests to pay the toll.", DialogLayout.Center);
  525.             boss2Sprite.say("You have collected " + (chestsCollected - 3).toString() + " out of 4.", 5000);
  526.             switch (level) {
  527.                 case 1:
  528.                     girlSprite.setPosition(girlSprite.x + 10, girlSprite.y);
  529.                     break;
  530.                 default:
  531.                     girlSprite.setPosition(girlSprite.x - 10, girlSprite.y);
  532.                     break;
  533.             }
  534.         }
  535.     }
  536.     else {
  537.         if (chestsCollected == 12) {
  538.             music.baDing.play();
  539.             bossFinalSprite.destroy();
  540.             game.splash("You may pass!");
  541.         }
  542.         else {
  543.             game.showLongText("Collect all the chests to pay the toll.", DialogLayout.Center);
  544.             bossFinalSprite.say("You have collected " + (chestsCollected - 7).toString() + " out of 5.", 5000);
  545.             switch (level) {
  546.                 case 1:
  547.                     girlSprite.setPosition(girlSprite.x + 10, girlSprite.y);
  548.                     break;
  549.                 default:
  550.                     girlSprite.setPosition(girlSprite.x + 10, girlSprite.y);
  551.                     break;
  552.             }
  553.         }
  554.     }
  555. })
  556. sprites.onOverlap(SpriteKind.Girl, SpriteKind.Chest, function (mainSprite, hitSprite) {
  557.     chestsCollected++;
  558.     music.baDing.play();
  559.     hitSprite.destroy();
  560. })
  561. sprites.onOverlap(SpriteKind.Girl, SpriteKind.Boy, function (mainSprite, hitSprite) {
  562.     music.baDing.play();
  563.     game.splash("You are reunited!");
  564.     music.stopAllSounds();
  565.     game.showLongText("Your time to complete was: " + game.runtime() + "ms. Thanks for playing!", DialogLayout.Center);
  566.     info.changeScoreBy(1800000 /* 30 minutes */ - game.runtime());
  567.     game.over(true);
  568. })
  569. image.setPalette(palettes.palettehex);
  570. introSequence();
  571. let boySprite = sprites.create(projectImages.Boy, SpriteKind.Boy);
  572. let girlSprite = sprites.create(projectImages.Girl, SpriteKind.Girl);
  573. let boss1Sprite = sprites.create(projectImages.Boss_1, SpriteKind.Boss);
  574. let boss2Sprite = sprites.create(projectImages.Boss_2, SpriteKind.Boss);
  575. let bossFinalSprite = sprites.create(projectImages.Boss_Final, SpriteKind.Boss);
  576. let chest1Sprite = sprites.create(projectImages.Chest, SpriteKind.Chest);
  577. let chest2Sprite = sprites.create(projectImages.Chest, SpriteKind.Chest);
  578. let chest3Sprite = sprites.create(projectImages.Chest, SpriteKind.Chest);
  579. let chest4Sprite = sprites.create(projectImages.Chest, SpriteKind.Chest);
  580. let chest5Sprite = sprites.create(projectImages.Chest, SpriteKind.Chest);
  581. let chest6Sprite = sprites.create(projectImages.Chest, SpriteKind.Chest);
  582. let chest7Sprite = sprites.create(projectImages.Chest, SpriteKind.Chest);
  583. let chest8Sprite = sprites.create(projectImages.Chest, SpriteKind.Chest);
  584. let chest9Sprite = sprites.create(projectImages.Chest, SpriteKind.Chest);
  585. let chest10Sprite = sprites.create(projectImages.Chest, SpriteKind.Chest);
  586. let chest11Sprite = sprites.create(projectImages.Chest, SpriteKind.Chest);
  587. let chest12Sprite = sprites.create(projectImages.Chest, SpriteKind.Chest);
  588. let level = randint(1, 2);
  589. switch (level) {
  590.     case 1:
  591.         level1Setup();
  592.         break;
  593.     default:
  594.         level2Setup();
  595.         break;
  596. }
  597. let chestsCollected = 0;
  598. let backgroundMusic = new music.Melody("F5:2 A5:4 F5:2 C5:2 B4:1 C5:1 D5:2 C5:2 F5:2 A5:4 F5:2 C5:2 B4:1 C5:1 D5:2 C5:2 A4:2 F5:4 A4:2 A4:2 G#4:1 A4:1 B4:2 A4:2 A4:2 F5:4 A4:2 A4:2 G#4:1 A4:1 B4:2 A4:2 A4:2 F4:2 A4:2 C5:2 A#4:8 C5:2 A#4:2 C5:2 E5:2 F5:8 C6:2 D6:2 C6:2 A#5:2 A5:2 A#5:2 A5:2 G5:2 F5:8 C5:2 E5:2 F5:2 C5:2 F5:2 A5:4 F5:2 C5:2 B4:1 C5:1 D5:2 C5:2 F5:2 A5:4 F5:2 C5:2 B4:1 C5:1 D5:2 C5:2 C5:2 E5:4 C5:2 G4:2 F4:1 G4:1 C5:2 G4:2 C5:2 E5:4 C5:2 D4:2 E4:1 F4:1 C5:2 E5:2 F5:4 :4 E5:2 A5:4 F5:2 E5:4 A4:4 B4:2 A4:4 B4:2 C5:4 E5:4 D5:2 F5:4 E5:2 C5:4 F4:4 G4:2 F4:4 G4:2 A4:4 C5:4 G4:4 :2 G4:4 B4:2 A4:4 D5:2 F5:4 E5:2 C5:4 G4:4 G4:4 :2 G4:4 B4:2 A4:4 A4:8 :2 A4:2 B4:2 A4:2 E5:2 A5:4 F5:2 E5:4 A4:4 B4:2 A4:4 B4:2 C5:4 E5:4 D5:2 F5:4 E5:2 C5:4 F4:4 G4:2 F4:4 G4:2 A4:4 C5:4 G4:4 :2 G4:4 B4:2 A4:4 D5:2 F5:4 E5:2 C5:4 G4:4 G4:4 :2 G4:4 B4:2 A4:4 A4:8 :2 A4:2 B4:2 A4:2");
  599. backgroundMusic.loop(8);
  600. girlSprite.setStayInScreen(true);
  601. controller.moveSprite(girlSprite);
  602. scene.cameraFollowSprite(girlSprite);
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 小时前

【花雕动手做】基于 Kitronik 游戏机开发板之立方体乐园

这是一个基于 MakeCode Arcade 的像素冒险游戏《立方体乐园》的 JavaScript 代码。平台冒险游戏,玩家控制一个女孩角色穿越立方体世界,收集宝箱,躲避障碍,最终救回被绑架的男孩。

代码结构分析

1. 图像资源定义 (projectImages)
定义了游戏中使用的所有像素图像:

角色类: Gate_H(门)、House(房子)、Boss_2(二号Boss)、Boss_Final(最终Boss)、Boy(男孩)、Girl(女孩)

物品类: Chest_1、Chest(宝箱)、Flag(旗帜)、Flower、Flower_2(花朵)

环境类: Grass(草地)、Stone_1、Stone(石头)

2. 调色板定义 (palettes)
使用16色调色板定义游戏的颜色方案。

3. 自定义精灵类型 (SpriteKind)
扩展了精灵类型,新增:

Girl(女孩)

Boss(Boss)

Chest(宝箱)

Boy(男孩)

核心游戏机制
游戏流程
开场剧情 (introSequence)

展示故事背景:男孩被立方体领主绑架

女孩决定出发寻找男孩

关卡系统

随机选择关卡1或关卡2

每个关卡有不同的地图布局和障碍物

收集系统

需要收集12个宝箱

分阶段解锁Boss:3个→7个→12个

关键游戏逻辑
碰撞检测系统
javascript
  1. // 女孩与Boss碰撞
  2. sprites.onOverlap(SpriteKind.Girl, SpriteKind.Boss, ...)
  3. // 女孩与宝箱碰撞  
  4. sprites.onOverlap(SpriteKind.Girl, SpriteKind.Chest, ...)
  5. // 女孩与男孩碰撞(游戏胜利)
  6. sprites.onOverlap(SpriteKind.Girl, SpriteKind.Boy, ...)
复制代码

关卡设计
瓦片地图系统: 使用数字表示不同地形

障碍物: 石头(9)为不可通行

可交互物体: 门(6)、旗帜(4)、花朵(1,2)等

计分系统
javascript
  1. info.changeScoreBy(1800000 - game.runtime()) // 30分钟减去实际用时
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 小时前

【花雕动手做】基于 Kitronik 游戏机开发板之立方体乐园

通过模拟器,调试与模拟运行

【花雕动手做】基于 Kitronik 游戏机开发板之立方体乐园图1

实验场景记录

【花雕动手做】基于 Kitronik 游戏机开发板之立方体乐园图2

【花雕动手做】基于 Kitronik 游戏机开发板之立方体乐园图3

【花雕动手做】基于 Kitronik 游戏机开发板之立方体乐园图5

【花雕动手做】基于 Kitronik 游戏机开发板之立方体乐园图4

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 3 小时前

【花雕动手做】基于 Kitronik 游戏机开发板之立方体乐园

【花雕动手做】基于 Kitronik 游戏机开发板之立方体乐园图1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail