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

[项目] 【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳

[复制链接]
【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳图1

Kitronik ARCADE 是一款由英国教育科技公司 Kitronik 精心打造的可编程游戏机开发板,专为编程教学与创客实践而设计。该设备原生支持微软的 MakeCode Arcade 平台,用户可通过图形化或 JavaScript 编程方式,轻松创建、下载并运行复古风格的街机游戏。

它集成了彩色 LCD 显示屏、方向控制键、功能按键、蜂鸣器和震动马达等交互组件,提供完整的游戏输入输出体验。无论是初学者进行编程启蒙,还是创客群体开发交互式作品,Kitronik ARCADE 都能作为理想的硬件载体,助力创意实现。

凭借其开源友好、易于上手、兼容性强等特点,该开发板广泛应用于中小学编程课程、创客工作坊、游戏开发教学以及个人项目原型设计,深受教育者与技术爱好者的喜爱。


【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳图3

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳图2

驴友花雕  中级技神
 楼主|

发表于 3 小时前

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳

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

MicroPython实验代码

  1. @namespace
  2. class SpriteKind:
  3.     Obstacle = SpriteKind.create()
  4. def on_on_overlap(sprite, otherSprite):
  5.     game.over(False, effects.melt)
  6. sprites.on_overlap(SpriteKind.player, SpriteKind.Obstacle, on_on_overlap)
  7. def on_a_pressed():
  8.     animation.stop_animation(animation.AnimationTypes.ALL, bunny)
  9.     if bunny.ay == 0:
  10.         bunny.set_image(img("""
  11.             . . . . . . . . . . . .
  12.             . . . 1 1 . 1 1 . . . .
  13.             . . . 1 3 . 1 3 . . . .
  14.             . . . . 1 3 . 1 3 . . .
  15.             . . . . 1 3 . 1 3 . . .
  16.             . . . 1 1 1 1 1 1 . . .
  17.             . . 1 1 1 1 1 1 1 1 . .
  18.             . . 1 1 1 f 1 1 f 1 . .
  19.             . . 1 1 1 1 1 1 1 1 . .
  20.             . . 1 1 1 1 f f 1 1 . .
  21.             . . . 1 1 1 1 1 1 . . .
  22.             . 1 1 1 1 1 1 1 1 1 1 .
  23.             . 1 1 1 1 1 1 1 1 1 1 .
  24.             . . . . 1 1 1 1 . . . .
  25.             . . . . 1 1 1 1 . . . .
  26.             . . . . 1 1 1 1 . . . .
  27.             . . . . 1 1 1 1 . . . .
  28.             . . . . . 1 1 . . . . .
  29.             . . . . . . 1 . . . . .
  30.             . . . . . . . . . . . .
  31.             . . . . . . . . . . . .
  32.             """))
  33.         bunny.vy = -160
  34.         bunny.ay = gravity
  35. controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)
  36. def on_on_destroyed(sprite2):
  37.     info.change_score_by(1)
  38. sprites.on_destroyed(SpriteKind.Obstacle, on_on_destroyed)
  39. def createCloud():
  40.     global cloud
  41.     cloud = sprites.create_projectile_from_side(clouds[randint(0, len(clouds) - 1)], -30, 0)
  42.     cloud.bottom = randint(30, 55)
  43.     cloud.z = -2
  44. def setupFrames():
  45.     global birdFrames, bunnyFrames, obstacles, trees, grassImages, clouds
  46.     birdFrames = [img("""
  47.             . . . . . . . . . . . .
  48.             . . . . . 1 1 1 1 . . .
  49.             . . . . 1 1 1 1 . . . .
  50.             . . . . 1 1 1 . . . . .
  51.             . . . . 1 1 1 . . . . .
  52.             . . . . 1 1 1 . . . . .
  53.             . . 1 1 1 1 1 1 . . . .
  54.             . . . . . . . . . . . .
  55.             . . . . . . . . . . . .
  56.             . . . . . . . . . . . .
  57.             . . . . . . . . . . . .
  58.             . . . . . . . . . . . .
  59.             """),
  60.         img("""
  61.             . . . . . . . . . . . .
  62.             . . . . . . . . . . . .
  63.             . . . . . . . . . . . .
  64.             . . . . 1 1 1 1 1 1 . .
  65.             . . . 1 1 1 1 1 . . . .
  66.             . . . 1 1 1 1 . . . . .
  67.             . . 1 1 1 1 1 1 . . . .
  68.             . . . . . . . . . . . .
  69.             . . . . . . . . . . . .
  70.             . . . . . . . . . . . .
  71.             . . . . . . . . . . . .
  72.             . . . . . . . . . . . .
  73.             """),
  74.         img("""
  75.             . . . . . . . . . . . .
  76.             . . . . . . . . . . . .
  77.             . . . . . . . . . . . .
  78.             . . . . . . . . . . . .
  79.             . . . . . . . . . . . .
  80.             . . . 1 1 1 1 . . . . .
  81.             . . 1 1 1 1 1 1 . . . .
  82.             . . . 1 1 1 1 1 1 1 1 .
  83.             . . . . . . . . . . . .
  84.             . . . . . . . . . . . .
  85.             . . . . . . . . . . . .
  86.             . . . . . . . . . . . .
  87.             """),
  88.         img("""
  89.             . . . . . . . . . . . .
  90.             . . . . . . . . . . . .
  91.             . . . . . . . . . . . .
  92.             . . . . . . . . . . . .
  93.             . . . . . . . . . . . .
  94.             . . . . . . . . . . . .
  95.             . . 1 1 1 1 1 1 . . . .
  96.             . . . 1 1 1 1 . . . . .
  97.             . . . 1 1 1 1 1 1 . . .
  98.             . . . . 1 1 1 1 1 1 1 .
  99.             . . . . . . . . . . . .
  100.             . . . . . . . . . . . .
  101.             """),
  102.         img("""
  103.             . . . . . . . . . . . .
  104.             . . . . . . . . . . . .
  105.             . . . . . . . . . . . .
  106.             . . . . . . . . . . . .
  107.             . . . . . . . . . . . .
  108.             . . . . . . . . . . . .
  109.             . . 1 1 1 1 1 1 . . . .
  110.             . . . 1 1 1 1 . . . . .
  111.             . . . 1 1 1 1 . . . . .
  112.             . . . . 1 1 1 1 1 . . .
  113.             . . . . . 1 1 1 1 1 . .
  114.             . . . . . . . . . . . .
  115.             """),
  116.         img("""
  117.             . . . . . . . . . . . .
  118.             . . . . . . . . . . . .
  119.             . . . . . . . . . . . .
  120.             . . . . . . . . . . . .
  121.             . . . . . . . . . . . .
  122.             . . . . . . . . . . . .
  123.             . . 1 1 1 1 1 1 . . . .
  124.             . . . 1 1 1 1 . . . . .
  125.             . . . 1 1 1 1 . . . . .
  126.             . . . . 1 1 1 1 1 . . .
  127.             . . . . . 1 1 1 1 1 . .
  128.             . . . . . . . . . . . .
  129.             """),
  130.         img("""
  131.             . . . . . . . . . . . .
  132.             . . . . . . . . . . . .
  133.             . . . . . . . . . . . .
  134.             . . . . . . . . . . . .
  135.             . . . . . . . . . . . .
  136.             . . . . . . . . . . . .
  137.             . . 1 1 1 1 1 1 . . . .
  138.             . . . 1 1 1 1 . . . . .
  139.             . . . 1 1 1 1 1 1 . . .
  140.             . . . . 1 1 1 1 1 1 1 .
  141.             . . . . . . . . . . . .
  142.             . . . . . . . . . . . .
  143.             """),
  144.         img("""
  145.             . . . . . . . . . . . .
  146.             . . . . . . . . . . . .
  147.             . . . . . . . . . . . .
  148.             . . . . . . . . . . . .
  149.             . . . . . . . . . . . .
  150.             . . . 1 1 1 1 . . . . .
  151.             . . 1 1 1 1 1 1 . . . .
  152.             . . . 1 1 1 1 1 1 1 1 .
  153.             . . . . . . . . . . . .
  154.             . . . . . . . . . . . .
  155.             . . . . . . . . . . . .
  156.             . . . . . . . . . . . .
  157.             """),
  158.         img("""
  159.             . . . . . . . . . . . .
  160.             . . . . . . . . . . . .
  161.             . . . . . . . . . . . .
  162.             . . . . 1 1 1 1 1 1 . .
  163.             . . . 1 1 1 1 1 . . . .
  164.             . . . 1 1 1 1 . . . . .
  165.             . . 1 1 1 1 1 1 . . . .
  166.             . . . . . . . . . . . .
  167.             . . . . . . . . . . . .
  168.             . . . . . . . . . . . .
  169.             . . . . . . . . . . . .
  170.             . . . . . . . . . . . .
  171.             """),
  172.         img("""
  173.             . . . . . . . . . . . .
  174.             . . . . . 1 1 1 1 . . .
  175.             . . . . 1 1 1 1 . . . .
  176.             . . . . 1 1 1 . . . . .
  177.             . . . . 1 1 1 . . . . .
  178.             . . . . 1 1 1 . . . . .
  179.             . . 1 1 1 1 1 1 . . . .
  180.             . . . . . . . . . . . .
  181.             . . . . . . . . . . . .
  182.             . . . . . . . . . . . .
  183.             . . . . . . . . . . . .
  184.             . . . . . . . . . . . .
  185.             """)]
  186.     animation.run_image_animation(bird, birdFrames, 40, True)
  187.     bunnyFrames = [img("""
  188.             . . . . . . . . . . . .
  189.             . . . . . . . d . . . .
  190.             . . . . . . . . . . . .
  191.             . . . . . . . . d . . .
  192.             . . . 1 1 . 1 1 . . . .
  193.             . . . 1 3 . 1 3 . . . .
  194.             . . . 1 3 . 1 3 . . . .
  195.             . . . 1 3 . 1 3 . . . .
  196.             . . . 1 1 1 1 1 1 . . .
  197.             . . 1 1 1 1 1 1 1 1 . .
  198.             . . 1 1 1 f 1 1 f 1 . .
  199.             . . 1 1 1 1 1 1 1 1 . .
  200.             . . 1 1 1 1 f f 1 1 . .
  201.             . . . 1 1 1 1 1 1 . . .
  202.             . . 1 1 1 1 1 1 1 1 . .
  203.             . 1 1 1 1 1 1 1 1 1 1 .
  204.             . 1 1 . 1 1 1 1 . 1 1 .
  205.             . . . . 1 1 1 1 . . . .
  206.             . . . . 1 1 1 1 . . . .
  207.             . . . . 1 . . 1 . . . .
  208.             . . . . . . . . . . . .
  209.             """),
  210.         img("""
  211.             . . . . . . . . . . . .
  212.             . . . . . . . . . . . .
  213.             . . . 1 1 . 1 1 . . . .
  214.             . . . 1 3 . 1 3 . . . .
  215.             . . . . 1 3 . 1 3 . . .
  216.             . . . . 1 3 . 1 3 . . .
  217.             . . . 1 1 1 1 1 1 . . .
  218.             . . 1 1 1 1 1 1 1 1 . .
  219.             . . 1 1 1 f 1 1 f 1 . .
  220.             . . 1 1 1 1 1 1 1 1 . .
  221.             . . 1 1 1 1 f f 1 1 . .
  222.             . . . 1 1 1 1 1 1 . . .
  223.             . . 1 1 1 1 1 1 1 1 . .
  224.             . 1 1 1 1 1 1 1 1 1 1 .
  225.             . 1 1 . 1 1 1 1 . 1 1 .
  226.             . . . . 1 1 1 1 . . . .
  227.             . . . . 1 1 1 1 . . . .
  228.             . . . . 1 1 1 1 . . . .
  229.             . . . . 1 . . 1 . . . .
  230.             . . . . . . . 1 . . . .
  231.             . . . . . . . . . . . .
  232.             """),
  233.         img("""
  234.             . . . . . . . . . . . .
  235.             . . . 1 1 . 1 1 . . . .
  236.             . . . 1 3 . 1 3 . . . .
  237.             . . . . 1 3 . 1 3 . . .
  238.             . . . . 1 3 . 1 3 . . .
  239.             . . . 1 1 1 1 1 1 . . .
  240.             . . 1 1 1 1 1 1 1 1 . .
  241.             . . 1 1 1 f 1 1 f 1 . .
  242.             . . 1 1 1 1 1 1 1 1 . .
  243.             . . 1 1 1 1 f f 1 1 . .
  244.             . . . 1 1 1 1 1 1 . . .
  245.             . 1 1 1 1 1 1 1 1 1 1 .
  246.             . 1 1 1 1 1 1 1 1 1 1 .
  247.             . . . . 1 1 1 1 . . . .
  248.             . . . . 1 1 1 1 . . . .
  249.             . . . . 1 1 1 1 . . . .
  250.             . . . . 1 1 1 1 . . . .
  251.             . . . . . 1 1 . . . . .
  252.             . . . . . . 1 . . . . .
  253.             . . . . . . . . . . . .
  254.             . . . . . . . . . . . .
  255.             """),
  256.         img("""
  257.             . . . . . . . . . . . .
  258.             . . . 1 1 . 1 1 . . . .
  259.             . . . 1 3 . 1 3 . . . .
  260.             . . . . 1 3 . 1 3 . . .
  261.             . . . . 1 3 . 1 3 . . .
  262.             . . . 1 1 1 1 1 1 . . .
  263.             . . 1 1 1 1 1 1 1 1 . .
  264.             . . 1 1 1 f 1 1 f 1 . .
  265.             . . 1 1 1 1 1 1 1 1 . .
  266.             . . 1 1 1 1 f f 1 1 . .
  267.             . . . 1 1 1 1 1 1 . . .
  268.             . 1 1 1 1 1 1 1 1 1 1 .
  269.             . 1 1 1 1 1 1 1 1 1 1 .
  270.             . . . . 1 1 1 1 . . . .
  271.             . . . . 1 1 1 1 . . . .
  272.             . . . . 1 1 1 1 . . . .
  273.             . . . . 1 1 1 1 . . . .
  274.             . . . . . 1 1 . . . . .
  275.             . . . . . 1 . . . . . .
  276.             . . . . . . . . . . . .
  277.             . . . . . . . . . . . .
  278.             """),
  279.         img("""
  280.             . . . . . . . . . . . .
  281.             . . . . . . . . . . . .
  282.             . . . . 1 1 . 1 1 . . .
  283.             . . . . 1 3 . 1 3 . . .
  284.             . . . . 1 3 . 1 3 . . .
  285.             . . . . 1 3 . 1 3 . . .
  286.             . . . 1 1 1 1 1 1 . . .
  287.             . . 1 1 1 1 1 1 1 1 . .
  288.             . . 1 1 1 f 1 1 f 1 . .
  289.             . . 1 1 1 1 1 1 1 1 . .
  290.             . . 1 1 1 1 f f 1 1 . .
  291.             . . . 1 1 1 1 1 1 . . .
  292.             . 1 1 1 1 1 1 1 1 1 1 .
  293.             . 1 1 1 1 1 1 1 1 1 1 .
  294.             . . . . 1 1 1 1 . . . .
  295.             . . . . 1 1 1 1 . . . .
  296.             . . . . 1 1 1 1 . . . .
  297.             . . . . 1 1 1 1 . . . .
  298.             . . . . 1 . . 1 . . . .
  299.             . . . . 1 . . . . . . .
  300.             . . . . . . . . . . . .
  301.             """),
  302.         img("""
  303.             . . . . . . . . . . . .
  304.             . . . . . . . . . . . .
  305.             . . . . . . . . . . . .
  306.             . . . . 1 1 . 1 1 . . .
  307.             . . . . 1 3 . 1 3 . . .
  308.             . . . . 1 3 . 1 3 . . .
  309.             . . . . 1 3 . 1 3 . . .
  310.             . . . 1 1 1 1 1 1 . . .
  311.             . . 1 1 1 1 1 1 1 1 . .
  312.             . . 1 1 1 f 1 1 f 1 . .
  313.             . . 1 1 1 1 1 1 1 1 . .
  314.             . . 1 1 1 1 f f 1 1 . .
  315.             . . . 1 1 1 1 1 1 . . .
  316.             . 1 1 1 1 1 1 1 1 1 1 .
  317.             . 1 1 1 1 1 1 1 1 1 1 .
  318.             . . . . 1 1 1 1 . . . .
  319.             . . . . 1 1 1 1 . . . .
  320.             . . . . 1 1 1 1 . . . .
  321.             . . . . 1 1 1 1 . . . .
  322.             . . . . 1 . . 1 . . . .
  323.             . . . . . . . . . . . .
  324.             """)]
  325.     obstacles = [img("""
  326.             ......................
  327.             ..........7...........
  328.             ..........77..........
  329.             .........677..........
  330.             ........66777.........
  331.             ........66777.........
  332.             ........667777........
  333.             .......6677777........
  334.             ......66677777........
  335.             ........66666.........
  336.             ........6666..........
  337.             .......6666677........
  338.             ......666777777.......
  339.             ......6667777777......
  340.             ......66777777777.....
  341.             ..66666777777777777...
  342.             ...666667777766666....
  343.             ........666677........
  344.             ........666777........
  345.             ......667777777.......
  346.             ...66677777777777.....
  347.             666677777777777777....
  348.             6667777777777777777776
  349.             ...666666777777777776.
  350.             .....6666eeee77777666.
  351.             .........eeee.........
  352.             .........eeee.........
  353.             .........eeee.........
  354.             .......6.eeee..6......
  355.             ...666...eeee.6.......
  356.             ...6.6...eeee.........
  357.             ......................
  358.             """),
  359.         img("""
  360.             ...................................
  361.             ..........7........................
  362.             ..........77.......................
  363.             .........677.......................
  364.             ........66777......................
  365.             ........66777......................
  366.             ........667777.....................
  367.             .......6677777.....................
  368.             ......66677777.....................
  369.             ........66666......................
  370.             ........6666.......................
  371.             .......6666677.....................
  372.             ......666777777....................
  373.             ......6667777777...................
  374.             ......66777777777..................
  375.             ..66666777777777777................
  376.             ...666667777766666.................
  377.             ........666677.....................
  378.             ........666777...........eeeee.....
  379.             ......667777777.........eebbbee....
  380.             ...66677777777777......eebeeebee...
  381.             666677777777777777.....eebeebbee...
  382.             6667777777777777777776..eebbeee....
  383.             ...666666777777777776..ebeeeebbe...
  384.             .....6666eeee77777666..eebbbbeee..e
  385.             .........eeee..........eeeeeeee..e.
  386.             .........eeee..........ebeebebe.e.e
  387.             .........eeee..........ebeeeebee...
  388.             .......6.eeee..6.......eeebeeee....
  389.             ...666...eeee.6.......eebebebeee...
  390.             ...6.6...eeee........eeeeeeeeeeee..
  391.             ..........................ee.......
  392.             """),
  393.         img("""
  394.             ......................................
  395.             ..........................7...........
  396.             ..........................77..........
  397.             .........................677..........
  398.             ........................66777.........
  399.             ........................66777.........
  400.             ........................667777........
  401.             .......................6677777........
  402.             ......................66677777........
  403.             ........................66666.........
  404.             ........................6666..........
  405.             .......................6666677........
  406.             ......................666777777.......
  407.             ......................6667777777......
  408.             ......................66777777777.....
  409.             ..................66666777777777777...
  410.             ...................666667777766666....
  411.             ........................666677........
  412.             .....eeeee..............666777........
  413.             ....eebbbee...........667777777.......
  414.             ...eebeeebee.......66677777777777.....
  415.             ...eebeebbee....666677777777777777....
  416.             ....eebbeee.....6667777777777777777776
  417.             ...ebeeeebbe.......666666777777777776.
  418.             ...eebbbbeee..e......6666eeee77777666.
  419.             ...eeeeeeee..e...........eeee.........
  420.             ...ebeebebe.e.e..........eeee.........
  421.             ...ebeeeebee.............eeee.........
  422.             ...eeebeeee............6.eeee..6......
  423.             ..eebebebeee.......666...eeee.6.......
  424.             .eeeeeeeeeeee......6.6...eeee.........
  425.             ......ee..............................
  426.             """),
  427.         img("""
  428.             ....................................................
  429.             ..........................7.........................
  430.             ..........................77........................
  431.             .........................677........................
  432.             ........................66777.......................
  433.             ........................66777.......................
  434.             ........................667777......................
  435.             .......................6677777......................
  436.             ......................66677777......................
  437.             ........................66666.......................
  438.             ........................6666........................
  439.             .......................6666677......................
  440.             ......................666777777.....................
  441.             ......................6667777777....................
  442.             ......................66777777777...................
  443.             ..................66666777777777777.................
  444.             ...................666667777766666..................
  445.             ........................666677......................
  446.             .....eeeee..............666777............eeeee.....
  447.             ....eebbbee...........667777777..........eebbbee....
  448.             ...eebeeebee.......66677777777777.......eebeeebee...
  449.             ...eebeebbee....666677777777777777......eebeebbee...
  450.             ....eebbeee.....6667777777777777777776...eebbeee....
  451.             ...ebeeeeb.e.......666666777777777776...ebeeeebbe...
  452.             ...eebbbbeee..e......6666eeee77777666...eebbbbeee..e
  453.             ...eeeeeeee..e...........eeee...........eeeeeeee..e.
  454.             ...ebeebebe.e.e..........eeee...........ebeebebe.e.e
  455.             ...ebeeeebee.............eeee...........ebeeeebee...
  456.             ...eeebeeee............6.eeee..6........eeebeeee....
  457.             ..eebebebeee.......666...eeee.6........eebebebeee...
  458.             .eeeeeeeeeeee......6.6...eeee.........eeeeeeeeeeee..
  459.             ......ee...................................ee.......
  460.             """),
  461.         img("""
  462.             ...............
  463.             ...............
  464.             ...............
  465.             ...............
  466.             ...............
  467.             ...............
  468.             ...............
  469.             ...............
  470.             ...............
  471.             ...............
  472.             ...............
  473.             ...............
  474.             ...............
  475.             ...............
  476.             ...............
  477.             ...............
  478.             ...............
  479.             ...............
  480.             .....eeeee.....
  481.             ....eebbbee....
  482.             ...eebeeebee...
  483.             ...eebeebbee...
  484.             ....eebbeee....
  485.             ...ebeeeebbe...
  486.             ...eebbbbeee..e
  487.             ...eeeeeeee..e.
  488.             ...ebeebebe.e.e
  489.             ...ebeeeebee...
  490.             ...eeebeeee....
  491.             ..eebebebeee...
  492.             .eeeeeeeeeeee..
  493.             ......ee.......
  494.             """),
  495.         img("""
  496.             .............................
  497.             .............................
  498.             .............................
  499.             .............................
  500.             .............................
  501.             .............................
  502.             .............................
  503.             .............................
  504.             .............................
  505.             .............................
  506.             .............................
  507.             .............................
  508.             .............................
  509.             .............................
  510.             .............................
  511.             .............................
  512.             .............................
  513.             .............................
  514.             .....eeeee.........eeeee.....
  515.             ....eebbbee.......eebbbee....
  516.             ...eebeeebee.....eebeeebee...
  517.             ...eebeebbee.....eebeebbee...
  518.             ....eebbeee.......eebbeee....
  519.             ...ebeeeebbe.....ebeeeebbe...
  520.             ...eebbbbeee..e..eebbbbeee..e
  521.             ...eeeeeeee..e...eeeeeeee..e.
  522.             ...ebeebebe.e.e..ebeebebe.e.e
  523.             ...ebeeeebee.....ebeeeebee...
  524.             ...eeebeeee......eeebeeee....
  525.             ..eebebebeee....eebebebeee...
  526.             .eeeeeeeeeeee..eeeeeeeeeeee..
  527.             ......ee............ee.......
  528.             """),
  529.         img("""
  530.             ...........................................
  531.             ...........................................
  532.             ...........................................
  533.             ...........................................
  534.             ...........................................
  535.             ...........................................
  536.             ...........................................
  537.             ...........................................
  538.             ...........................................
  539.             ...........................................
  540.             ...........................................
  541.             ...........................................
  542.             ...........................................
  543.             ...........................................
  544.             ...........................................
  545.             ...........................................
  546.             ...........................................
  547.             ...........................................
  548.             .....eeeee.........eeeee.........eeeee.....
  549.             ....eebbbee.......eebbbee.......eebbbee....
  550.             ...eebeeebee.....eebeeebee.....eebeeebee...
  551.             ...eebeebbee.....eebeebbee.....eebeebbee...
  552.             ....eebbeee.......eebbeee.......eebbeee....
  553.             ...ebeeeebbe.....ebeeeebbe.....ebeeeebbe...
  554.             ...eebbbbeee..e..eebbbbeee..e..eebbbbeee..e
  555.             ...eeeeeeee..e...eeeeeeee..e...eeeeeeee..e.
  556.             ...ebeebebe.e.e..ebeebebe.e.e..ebeebebe.e.e
  557.             ...ebeeeebee.....ebeeeebee.....ebeeeebee...
  558.             ...eeebeeee......eeebeeee......eeebeeee....
  559.             ..eebebebeee....eebebebeee....eebebebeee...
  560.             .eeeeeeeeeeee..eeeeeeeeeeee..eeeeeeeeeeee..
  561.             ......ee............ee............ee.......
  562.             """)]
  563.     animation.run_image_animation(bunny, bunnyFrames, 50, True)
  564.     trees = [img("""
  565.             ....................................
  566.             ....................................
  567.             ....................................
  568.             ....................................
  569.             ....................................
  570.             ....................................
  571.             ....................................
  572.             ....................................
  573.             ...................b................
  574.             ...................b................
  575.             ...................b................
  576.             ..................bbb...............
  577.             ..................bb................
  578.             .................bbbb...............
  579.             ................bbbbbb..............
  580.             ..................bb................
  581.             .................bbbb...............
  582.             ................bbbbbb..............
  583.             ...............bbbbbbbb.............
  584.             ..............bb..bbbbbb............
  585.             .................bbbb..bbb..........
  586.             ..................bb................
  587.             .................bbbb...............
  588.             ................bbbbbb..............
  589.             ...............bbbbb.bb.............
  590.             ..............bbbbbbbbbb............
  591.             ............bbbb.bbbbbbb............
  592.             ..........bbbbb..bbbbb.bbbb.........
  593.             ................bbbbbb...bbb........
  594.             ...............bbbbbbbb.............
  595.             ..............bbbbbb.bb.............
  596.             ...........bbbbbbbbbbbbb............
  597.             .........bbbbbb..bbbb.bbb...........
  598.             ..........bbbbb..bbbb...............
  599.             ................bbbbbbb.............
  600.             ...............bbbbbbbbb............
  601.             .............bbbbbbbbb..............
  602.             ...........bbbbbbbbbbbbbbbbb........
  603.             ..........bbbbbbbbbbbbbbbbb.........
  604.             .........bbbb.bbbbbbbb..............
  605.             ........bb....bbbbbbbbb.............
  606.             ............bbbbbbbbbbbbb...........
  607.             ........bbbbbbbbbbbbbbbbbbbb........
  608.             .......bbbbbbbbbbbbbbbbbbbbbbb......
  609.             ......bbbbbbbb...bbbbbbbbb..........
  610.             ..................bbb...............
  611.             ..................bbb...............
  612.             ..................bbb...............
  613.             """),
  614.         img("""
  615.             ...................b................
  616.             ...................b................
  617.             ...................b................
  618.             ..................bbb...............
  619.             .................bbbbbb.............
  620.             ..................bb................
  621.             ...................bbbb.............
  622.             .................bbbbbbb............
  623.             ...............bbb.b................
  624.             ..................bbb...............
  625.             ...............bbbbbbb..............
  626.             ................bbbbbbbb............
  627.             ..................bb.bbbb...........
  628.             ..................bbb...............
  629.             .................bbbbbb.............
  630.             .............bbbbbbb.bbbb...........
  631.             ............bbbbb.bbb...............
  632.             ..................bbb...............
  633.             .................bbbbb..............
  634.             ..............bbbbbbbb..............
  635.             .............bbbbbbbbbb.............
  636.             ............bbb..bbbbbbbb...........
  637.             ...........bbbb.bbbbbbbb.b..........
  638.             ............b...bbbbbbbbb...........
  639.             ...............bbbbbbbbbbb..........
  640.             ..............bbbbbbb.bbbb..........
  641.             .............bbbbbbbbbbbbbbb........
  642.             ...........bbbb.bbbbbbb.............
  643.             ...............bbbbbb.bb............
  644.             .............bbbbbbbbbbbb...........
  645.             ............bbbbbbbbbbbbbb..........
  646.             ............bbbbbbbbbb..bbb.........
  647.             .........bbbbbbbbbbbbbb..bbbb.......
  648.             ........bb...bbbbbbbbb..............
  649.             ..............bbbbbbbbbbb...........
  650.             ............bbbb.bbbbbbbb...........
  651.             ........bbbb.b...bbbbbbb............
  652.             ................bbbbb..bbbb.........
  653.             .............bbbbb.bbbbbbbb.........
  654.             .........bbbbbb..bbbb..bbbbb........
  655.             ........bb.b....bbbbb.....bbb.......
  656.             ................bbbbb...............
  657.             ..................bbb...............
  658.             ..................bbb...............
  659.             ..................bbb...............
  660.             ..................bbb...............
  661.             ..................bbb...............
  662.             ..................bbb...............
  663.             """),
  664.         img("""
  665.             ....................................
  666.             ....................................
  667.             ....................................
  668.             ....................................
  669.             ....................................
  670.             ....................................
  671.             ....................................
  672.             ....................................
  673.             ....................................
  674.             ....................................
  675.             ....................................
  676.             ....................................
  677.             ....................................
  678.             ....................................
  679.             ....................................
  680.             ...................b................
  681.             ...................b................
  682.             ...................b................
  683.             ...................b................
  684.             ..................bb................
  685.             ..................bbb...............
  686.             .................bbbb...............
  687.             ...............bbbbb................
  688.             ..................bb................
  689.             .................bbbb...............
  690.             .................bbbb...............
  691.             .................bbbbb..............
  692.             ................bbbbbbb.............
  693.             ..............bbbbbbbbbb............
  694.             ............bbbb..bbbbbbb...........
  695.             .................bbbb...............
  696.             .................bbbb...............
  697.             ................bbbbbb..............
  698.             ................bbbbbb..............
  699.             ...............bbbbbbbb.............
  700.             ............bbbbbbbbbbbbb...........
  701.             ........bbbbbbbbbbbbbbbbbbbb........
  702.             ...........bbbbbbbbbbbbbbbb.........
  703.             ................bbbbbbb.b...........
  704.             ..............bbbbbbbbbbbbbbbb......
  705.             ...........bbbbbbbbbbbbbbbbbb.......
  706.             ........bbbbbbbbbbbbbbbbbbb.........
  707.             ..........bbbbb...bbbb..............
  708.             ..................bbb...............
  709.             ..................b.b...............
  710.             ..................b.b...............
  711.             ..................bbb...............
  712.             ..................bbb...............
  713.             """)]
  714.     grassImages = [img("""
  715.             . . . . . . . .
  716.             . . . . . . . .
  717.             . . . . . . . .
  718.             . . . . . . . .
  719.             . . . . b . . .
  720.             . . . . b . . .
  721.             . . . b b . . .
  722.             . . . b b . . .
  723.             """),
  724.         img("""
  725.             . . . . . . . .
  726.             . . . . . . . .
  727.             . . . . . . . .
  728.             . . . . . . . .
  729.             . . . b . . . .
  730.             . . . b . . . .
  731.             . . . b b . b .
  732.             . . . b b . b .
  733.             """),
  734.         img("""
  735.             . . . . . . . .
  736.             . . . . . . . .
  737.             b . . . . . . .
  738.             b . . b . . . .
  739.             b . . b b . . .
  740.             b . b b b . . .
  741.             b . b b b . b .
  742.             b b b b b . b .
  743.             """),
  744.         img("""
  745.             . . . . . . . .
  746.             . . . . . . . .
  747.             . . . . . . . .
  748.             . . . . . . . b
  749.             . . . b . . . b
  750.             . . . b . . . b
  751.             . . . b b . b b
  752.             . . . b b . b b
  753.             """),
  754.         img("""
  755.             . . . . . . . .
  756.             . . . . . . . .
  757.             . . . b . . . .
  758.             . . . b . . . .
  759.             . . b b . . . .
  760.             . . b b b . . .
  761.             . . b b b . . .
  762.             . . b b b . . .
  763.             """),
  764.         img("""
  765.             . . . . . . . .
  766.             . . . . . . . .
  767.             . . . . . . . .
  768.             . b . . . . . .
  769.             . b . . . . . .
  770.             . b b . . . b .
  771.             . b b . . . b .
  772.             . b b . . . b .
  773.             """)]
  774.     clouds = [img("""
  775.             ............................11.....................
  776.             .........................1111111...................
  777.             ........................111111111111...............
  778.             .......................11111111111111..............
  779.             ......................1111111111111111.............
  780.             .....................11111111111111111.............
  781.             ..................111111111111111111111............
  782.             ...............1111111111111111111111111...........
  783.             ..........1111111111111111111111111111111..........
  784.             .........111111111111111111111111111111111.........
  785.             ........111111111111111111111111111111111111.......
  786.             .......111111111111111111111111111111111111111.....
  787.             .......1111111111111111111111111111111111111111....
  788.             .......11111111111111111111111111111111111111111...
  789.             .......111111111111111111111111111111111111111111..
  790.             ......1111111111111111111111111111111111111111111..
  791.             ....111111111111111111111111111111111111111111111..
  792.             ...11111111111111111111111111111111111111111111111.
  793.             ..111111111111111111111111111111111111111111111111.
  794.             .11111111111111111111111111111111111111111111111111
  795.             111111111111111111111111111111111111111111111111111
  796.             11111111111111111111111111111111111111111111111111.
  797.             .....1111111111111111111111111111111111111111......
  798.             """),
  799.         img("""
  800.             .........................11111................
  801.             ........................1111111...............
  802.             ......................1111111111..............
  803.             ..................111111111111111.............
  804.             ...............111111111111111111.............
  805.             ..............1111111111111111111111111.......
  806.             .............111111111111111111111111111......
  807.             .............111111111111111111111111111......
  808.             .............1111111111111111111111111111.....
  809.             ............11111111111111111111111111111.....
  810.             ............111111111111111111111111111111....
  811.             ............111111111111111111111111111111....
  812.             ...........11111111111111111111111111111111...
  813.             ......11111111111111111111111111111111111111..
  814.             .....1111111111111111111111111111111111111111.
  815.             ....11111111111111111111111111111111111111111.
  816.             ...1111111111111111111111111111111111111111111
  817.             ...1111111111111111111111111111111111111111111
  818.             ...1111111111111111111111111111111111111111111
  819.             ...1111111111111111111111111111111111111111111
  820.             ..11111111111111111111111111111111111111111111
  821.             .111111111111111111111111111111111111111111111
  822.             111111111111111111111111111111111111111111111.
  823.             11111111111111111..................111111111..
  824.             """),
  825.         img("""
  826.             ........11111111.................
  827.             .......1111111111................
  828.             ....11111111111111...............
  829.             ...1111111111111111..............
  830.             ..11111111111111111111111........
  831.             ..111111111111111111111111.......
  832.             .11111111111111111111111111......
  833.             .111111111111111111111111111.....
  834.             1111111111111111111111111111.....
  835.             111111111111111111111111111111...
  836.             .111111111111111111111111111111..
  837.             .1111111111111111111111111111111.
  838.             ..1111111111111111111111111111111
  839.             .....1111111111111111111111111111
  840.             ......111111111111111111111111...
  841.             .................................
  842.             """),
  843.         img("""
  844.             ...................1111................................................
  845.             ..................111111...............................................
  846.             .................11111111111111........................................
  847.             ................1111111111111111.......................................
  848.             ..............1111111111111111111......................................
  849.             ............1111111111111111111111.....................................
  850.             ...........11111111111111111111111.....................................
  851.             ..........111111111111111111111111.....................................
  852.             ..........1111111111111111111111111......11111.........................
  853.             .........11111111111111111111111111...111111111........................
  854.             .........111111111111111111111111111111111111111.......................
  855.             .......111111111111111111111111111111111111111111......................
  856.             ......1111111111111111111111111111111111111111111111...................
  857.             ....11111111111111111111111111111111111111111111111111.................
  858.             ...1111111111111111111111111111111111111111111111111111................
  859.             ...11111111111111111111111111111111111111111111111111111...............
  860.             ..1111111111111111111111111111111111111111111111111111111..............
  861.             ..1111111111111111111111111111111111111111111111111111111..............
  862.             ..11111111111111111111111111111111111111111111111111111111.............
  863.             ..111111111111111111111111111111111111111111111111111111111............
  864.             ..11111111111111111111111111111111111111111111111111111111111..........
  865.             ..1111111111111111111111111111111111111111111111111111111111111........
  866.             ..111111111111111111111111111111111111111111111111111111111111111111...
  867.             .11111111111111111111111111111111111111111111111111111111111111111111..
  868.             1111111111111111111111111111111111111111111111111111111111111111111111.
  869.             1111111111111111111111111111111111111111111111111111111111111111111111.
  870.             11111111111111111111111111111111111111111111111111111111111111111111111
  871.             .1111111111111111111111111111111111111111111111111111111111111111111111
  872.             ..11111111111111111111111111111111111111111111111111111111111111111111.
  873.             ...............1111111111111111111111111111111..........11111111.......
  874.             """),
  875.         img("""
  876.             ........................1111...........
  877.             .................1111..111111..........
  878.             ...............111111111111111.........
  879.             .............111111111111111111........
  880.             ............11111111111111111111.......
  881.             .........111111111111111111111111......
  882.             ........1111111111111111111111111......
  883.             .......1111111111111111111111111111....
  884.             ......111111111111111111111111111111...
  885.             .....11111111111111111111111111111111..
  886.             .....111111111111111111111111111111111.
  887.             ....1111111111111111111111111111111111.
  888.             ....11111111111111111111111111111111111
  889.             ....11111111111111111111111111111111111
  890.             ..1111111111111111111111111111111111111
  891.             .1111111111111111111111111111111111111.
  892.             1111111111111111111111111111111111111..
  893.             111111111111111111.....................
  894.             """)]
  895. def createTree():
  896.     global tree
  897.     tree = sprites.create_projectile_from_side(trees[randint(0, len(trees) - 1)], -50, 0)
  898.     tree.bottom = 100
  899.     tree.z = -1
  900. grass: Sprite = None
  901. projectile: Sprite = None
  902. obstacleImage: Image = None
  903. tree: Sprite = None
  904. grassImages: List[Image] = []
  905. trees: List[Image] = []
  906. obstacles: List[Image] = []
  907. bunnyFrames: List[Image] = []
  908. birdFrames: List[Image] = []
  909. clouds: List[Image] = []
  910. cloud: Sprite = None
  911. bird: Sprite = None
  912. gravity = 0
  913. bunny: Sprite = None
  914. scene.set_background_color(13)
  915. bunny = sprites.create(img("""
  916.         . . . . . . . . . . . . . . . .
  917.         . . . . . . . . . . . . . . . .
  918.         . . . . . . . . . . . . . . . .
  919.         . . . . . . . . . . . . . . . .
  920.         . . . . . . . . . . . . . . . .
  921.         . . . . . . . . . . . . . . . .
  922.         . . . . . . . . . . . . . . . .
  923.         . . . . . . . . . . . . . . . .
  924.         . . . . . . . . . . . . . . . .
  925.         . . . . . . . . . . . . . . . .
  926.         . . . . . . . . . . . . . . . .
  927.         . . . . . . . . . . . . . . . .
  928.         . . . . . . . . . . . . . . . .
  929.         . . . . . . . . . . . . . . . .
  930.         . . . . . . . . . . . . . . . .
  931.         . . . . . . . . . . . . . . . .
  932.         """),
  933.     SpriteKind.player)
  934. gravity = 400
  935. bunny.ay = gravity
  936. bunny.x = 20
  937. bird = sprites.create(img("""
  938.         . . . . . . . . . . . . . . . .
  939.         . . . . . . . . . . . . . . . .
  940.         . . . . . . . . . . . . . . . .
  941.         . . . . . . . . . . . . . . . .
  942.         . . . . . . . . . . . . . . . .
  943.         . . . . . . . . . . . . . . . .
  944.         . . . . . . . . . . . . . . . .
  945.         . . . . . . . . . . . . . . . .
  946.         . . . . . . . . . . . . . . . .
  947.         . . . . . . . . . . . . . . . .
  948.         . . . . . . . . . . . . . . . .
  949.         . . . . . . . . . . . . . . . .
  950.         . . . . . . . . . . . . . . . .
  951.         . . . . . . . . . . . . . . . .
  952.         . . . . . . . . . . . . . . . .
  953.         . . . . . . . . . . . . . . . .
  954.         """),
  955.     SpriteKind.projectile)
  956. bird.set_position(160, 20)
  957. bird.set_velocity(-120, 0)
  958. setupFrames()
  959. def on_on_update():
  960.     if bunny.bottom > 105:
  961.         bunny.bottom = 105
  962.         bunny.vy = 0
  963.         bunny.ay = 0
  964.         animation.run_image_animation(bunny, bunnyFrames, 50, True)
  965. game.on_update(on_on_update)
  966. def on_on_update2():
  967.     if bird.x < 0:
  968.         bird.set_position(randint(160, 240), randint(20, 60))
  969. game.on_update(on_on_update2)
  970. def on_update_interval():
  971.     global obstacleImage, projectile
  972.     obstacleImage = obstacles[randint(0, len(obstacles) - 1)]
  973.     projectile = sprites.create_projectile_from_side(obstacleImage, -100, 0)
  974.     projectile.bottom = 105
  975.     projectile.set_kind(SpriteKind.Obstacle)
  976. game.on_update_interval(2000, on_update_interval)
  977. def on_update_interval2():
  978.     if Math.percent_chance(40):
  979.         createCloud()
  980. game.on_update_interval(1000, on_update_interval2)
  981. def on_forever():
  982.     if Math.percent_chance(60):
  983.         createTree()
  984.         if Math.percent_chance(50):
  985.             pause(randint(150, 300))
  986.             createTree()
  987.     pause(1500)
  988. forever(on_forever)
  989. def on_update_interval3():
  990.     global grass
  991.     if Math.percent_chance(40):
  992.         grass = sprites.create_projectile_from_side(grassImages[randint(0, len(grassImages) - 1)], -50, 0)
  993.         grass.bottom = 100
  994.         grass.z = -1
  995. game.on_update_interval(200, on_update_interval3)
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 3 小时前

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳

这是一个基于ARCADE MakeCode的兔子跳跃游戏(类似Chrome小恐龙游戏)代码。

游戏概述
这是一个无限跑酷类游戏,玩家控制一只兔子跳跃躲避障碍物,随着时间推移得分不断增加。

代码结构分析

1. 精灵种类定义
python
  1. class SpriteKind:
  2.     Obstacle = SpriteKind.create()  # 障碍物
复制代码


2. 核心游戏机制
跳跃系统
python
  1. def on_a_pressed():
  2.     if bunny.ay == 0:  # 只有在地面上才能跳跃
  3.         bunny.set_image(跳跃姿态图片)
  4.         bunny.vy = -160  # 向上的速度
  5.         bunny.ay = gravity  # 重新启用重力
复制代码

按A键跳跃
只有在地面上才能跳跃(通过ay == 0检测)
设置向上的初速度,然后让重力作用

物理系统
python
  1. gravity = 400  # 重力加速度
  2. bunny.ay = gravity  # 应用到兔子精灵
复制代码


3. 动画系统
游戏包含丰富的动画资源:
鸟类动画 (birdFrames)
10帧翅膀扇动动画
在屏幕顶部飞行,增加游戏生动性
兔子动画 (bunnyFrames)
6帧奔跑动画循环
包含耳朵摆动、身体起伏的细节
障碍物图像 (obstacles)
7种不同的仙人掌障碍物
有些带有装饰性的小云朵和草丛

环境元素
树木 (trees): 3种不同形状的树
草丛 (grassImages): 6种地面草丛
云朵 (clouds): 5种不同形状的云

4. 游戏对象生成系统
障碍物生成
python
  1. def on_update_interval():
  2.     obstacleImage = obstacles[随机选择]
  3.     projectile = sprites.create_projectile_from_side(obstacleImage, -100, 0)
  4.     projectile.bottom = 105  # 固定在地面高度
  5.     projectile.set_kind(SpriteKind.Obstacle)
  6. game.on_update_interval(2000, on_update_interval)  # 每2秒生成一个
复制代码

环境装饰生成
云朵: 40%概率每秒生成,随机高度
树木: 60%概率每1.5秒生成,可能连续生成两棵
草丛: 40%概率每0.2秒生成,增加地面细节

5. 碰撞检测系统
python
  1. def on_on_overlap(sprite, otherSprite):
  2.     game.over(False, effects.melt)  # 游戏结束,融化效果
  3. sprites.on_overlap(SpriteKind.player, SpriteKind.Obstacle, on_on_overlap)
复制代码

6. 得分系统
python
  1. def on_on_destroyed(sprite2):
  2.     info.change_score_by(1)  # 障碍物离开屏幕得分
  3. sprites.on_destroyed(SpriteKind.Obstacle, on_on_destroyed)
复制代码


游戏特性
控制方式:
A键: 跳跃(只有在地面时有效)
游戏机制:
自动前进: 场景向左滚动,兔子相对静止
障碍躲避: 跳跃避开仙人掌障碍物
无限跑酷: 游戏持续进行直到碰撞
得分系统: 成功躲避的障碍物计分

视觉层次:
通过z坐标控制渲染顺序:
云朵 (z = -2): 最底层背景
树木 (z = -1): 中间层
草丛 (z = -1): 中间层
兔子 (默认): 主角层
障碍物 (默认): 前景层

技术亮点
1. 动画状态管理
python
  1. animation.stop_animation(animation.AnimationTypes.ALL, bunny)
复制代码

跳跃时停止奔跑动画,显示跳跃静态图

2. 物理模拟
真实的重力加速度模拟
地面碰撞检测 (bunny.bottom > 105)
落地后重置物理状态

3. 随机化系统
障碍物类型随机选择
环境元素生成概率控制
鸟类重生位置随机

4. 性能优化
使用projectile_from_side自动清理屏幕外对象
通过on_destroyed事件高效计分
分层渲染减少重绘

艺术设计特色
像素艺术风格:
兔子: 可爱的粉色兔子,耳朵动态效果
鸟类: 简单的像素鸟动画
仙人掌: 多种形态的绿色仙人掌
环境: 简约但富有层次的背景

颜色搭配:
背景色: 淡蓝色 (color 13)
主体色: 粉色兔子 vs 绿色障碍物
装饰色: 白色云朵、棕色树木

这个游戏展示了优秀的无限跑酷游戏设计,代码结构清晰,视觉效果丰富,游戏机制简单但具有挑战性。非常适合学习MakeCode游戏开发的基础概念!

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 3 小时前

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳

图形编程参考实验程序

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳图1

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

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳图4

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳图6


实验场景记录

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳图2

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳图3

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳图5

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 3 小时前

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳图1
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail