驴友花雕 发表于 2025-9-6 13:12:15

【花雕动手做】基于Kitronik可编程开发板之乒乓球小游戏

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

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

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







驴友花雕 发表于 2025-9-6 13:15:19

【花雕动手做】基于Kitronik可编程开发板之乒乓球小游戏

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

MicroPython实验参考代码

@namespace
class SpriteKind:
    teft = SpriteKind.create()
    left = SpriteKind.create()
def left3():
    global aaaaa
    aaaaa = sprites.create(img("""
            . . . . . . 2 7 f 8 . . . . . .
            . . . . . . 2 7 f 8 . . . . . .
            . . . . . . 2 7 f 8 . . . . . .
            . . . . . . 2 1 f 8 . . . . . .
            . . . . . . 2 7 f 8 . . . . . .
            . . . . . . 2 7 f 8 . . . . . .
            . . . . . . 2 7 f 8 . . . . . .
            . . . . . . 2 1 f 8 . . . . . .
            . . . . . . 2 7 f 8 . . . . . .
            . . . . . . 2 7 f 8 . . . . . .
            . . . . . . 2 7 f 8 . . . . . .
            . . . . . . 2 1 f 8 . . . . . .
            . . . . . . 2 7 f 8 . . . . . .
            . . . . . . 2 7 f 8 . . . . . .
            . . . . . . 2 7 f 8 . . . . . .
            . . . . . . 2 7 f 8 . . . . . .
            """),
      SpriteKind.teft)
    controller.player2.move_sprite(aaaaa, 0, 150)
    aaaaa.right = 163
    aaaaa.set_stay_in_screen(True)
def left2():
    global bbbbb
    bbbbb = sprites.create(img("""
            . . . . . . . 7 f 2 8 . . . . .
            . . . . . . . 7 f 2 8 . . . . .
            . . . . . . . 7 f 2 8 . . . . .
            . . . . . . . 7 1 2 8 . . . . .
            . . . . . . . 7 f 2 8 . . . . .
            . . . . . . . 7 f 2 8 . . . . .
            . . . . . . . 7 f 2 8 . . . . .
            . . . . . . . 7 1 2 8 . . . . .
            . . . . . . . 7 f 2 8 . . . . .
            . . . . . . . 7 f 2 8 . . . . .
            . . . . . . . 7 f 2 8 . . . . .
            . . . . . . . 7 1 2 8 . . . . .
            . . . . . . . 7 f 2 8 . . . . .
            . . . . . . . 7 f 2 8 . . . . .
            . . . . . . . 7 f 2 8 . . . . .
            . . . . . . . 7 f 2 8 . . . . .
            """),
      SpriteKind.left)
    controller.move_sprite(bbbbb, 0, 150)
    bbbbb.right = 0
    bbbbb.set_stay_in_screen(True)

def on_on_overlap(sprite, otherSprite):
    sprite.vx = sprite.vx * -1
    info.change_score_by(1)
sprites.on_overlap(SpriteKind.player, SpriteKind.left, on_on_overlap)

def on_on_overlap2(sprite2, otherSprite2):
    sprite2.vx = sprite2.vx * -1
    info.player2.change_score_by(1)
sprites.on_overlap(SpriteKind.player, SpriteKind.teft, on_on_overlap2)

def ball():
    global mySprite
    mySprite = sprites.create(img("""
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . 3 2 2 3 . . . . . .
            . . . . . 3 1 1 1 1 3 . . . . .
            . . . . . 2 1 1 1 1 2 . . . . .
            . . . . . 2 1 1 1 1 2 . . . . .
            . . . . . 3 1 1 1 1 3 . . . . .
            . . . . . . 3 2 2 3 . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            """),
      SpriteKind.player)
    mySprite.set_velocity(100, 100)
    mySprite.set_bounce_on_wall(True)
    mySprite.y = randint(0, 120)
mySprite: Sprite = None
bbbbb: Sprite = None
aaaaa: Sprite = None
ball()
left2()
left3()

驴友花雕 发表于 2025-9-6 13:20:58

【花雕动手做】基于Kitronik可编程开发板之乒乓球小游戏

乒乓球小游戏代码解读

这是一个经典的乒乓球(Pong)游戏,支持两名玩家对战。左侧玩家使用主控制器,右侧玩家使用第二个控制器,双方控制球拍击打乒乓球。
核心代码解析

1. 自定义精灵类型
python
class SpriteKind:

    teft = SpriteKind.create()# 右侧球拍

    left = SpriteKind.create()# 左侧球拍
创建了两种自定义精灵类型:teft(可能是"right"的拼写错误)和left

用于区分左侧和右侧的球拍

2. 球拍创建函数
右侧球拍创建
python
def left3():

    global aaaaa

    aaaaa = sprites.create(img("""右侧球拍图像"""), SpriteKind.teft)

    controller.player2.move_sprite(aaaaa, 0, 150)# 玩家2控制,只能垂直移动

    aaaaa.right = 163# 定位到右侧

    aaaaa.set_stay_in_screen(True)# 限制在屏幕内
创建右侧球拍,使用ASCII艺术定义外观

使用controller.player2(第二个控制器)控制,只能垂直移动(速度150)

将球拍定位到屏幕右侧(x=163)

限制球拍不能离开屏幕

左侧球拍创建
python
def left2():

    global bbbbb

    bbbbb = sprites.create(img("""左侧球拍图像"""), SpriteKind.left)

    controller.move_sprite(bbbbb, 0, 150)# 玩家1控制,只能垂直移动

    bbbbb.right = 0# 定位到左侧

    bbbbb.set_stay_in_screen(True)# 限制在屏幕内
创建左侧球拍,使用ASCII艺术定义外观

使用controller(第一个控制器)控制,只能垂直移动(速度150)

将球拍定位到屏幕左侧(x=0)

限制球拍不能离开屏幕

3. 碰撞检测系统
球与左侧球拍碰撞
python
def on_on_overlap(sprite, otherSprite):

    sprite.vx = sprite.vx * -1# 球的水平速度反向

    info.change_score_by(1)# 玩家1得分+1

sprites.on_overlap(SpriteKind.player, SpriteKind.left, on_on_overlap)
当球与左侧球拍碰撞时,球的水平速度反向(反弹)

玩家1得分增加1分

球与右侧球拍碰撞
python
def on_on_overlap2(sprite2, otherSprite2):

    sprite2.vx = sprite2.vx * -1# 球的水平速度反向

    info.player2.change_score_by(1)# 玩家2得分+1

sprites.on_overlap(SpriteKind.player, SpriteKind.teft, on_on_overlap2)
当球与右侧球拍碰撞时,球的水平速度反向(反弹)

玩家2得分增加1分

4. 球创建函数
python
def ball():

    global mySprite

    mySprite = sprites.create(img("""球图像"""), SpriteKind.player)

    mySprite.set_velocity(100, 100)# 设置初始速度

    mySprite.set_bounce_on_wall(True)# 碰到墙壁反弹

    mySprite.y = randint(0, 120)# 随机垂直位置
创建乒乓球,使用ASCII艺术定义外观

设置球的初始速度为(100, 100)

设置球碰到墙壁时反弹

球的初始垂直位置随机(0-120)

5. 游戏初始化
python
mySprite: Sprite = None

bbbbb: Sprite = None

aaaaa: Sprite = None

ball()    # 创建球

left2()   # 创建左侧球拍

left3()   # 创建右侧球拍
声明全局变量

依次创建球、左侧球拍和右侧球拍

游戏机制总结
双人对战:支持两名玩家对战,分别控制左右球拍
控制方式:
玩家1(左侧):使用主控制器上下移动
玩家2(右侧):使用第二个控制器上下移动
得分系统:
球击中左侧球拍:玩家1得分
球击中右侧球拍:玩家2得分
物理系统:
球碰到墙壁会自动反弹
球碰到球拍会水平速度反向

技术特点
多控制器支持:使用controller和controller.player2分别控制两个球拍
自定义精灵类型:使用SpriteKind.create()创建自定义精灵类型
简单物理模拟:通过直接修改速度实现反弹效果
随机化:球的初始位置随机,增加游戏变化性

驴友花雕 发表于 2025-9-6 13:24:22

【花雕动手做】基于Kitronik可编程开发板之乒乓球小游戏

图形编程参考实验程序


驴友花雕 发表于 2025-9-6 13:30:44

【花雕动手做】基于Kitronik可编程开发板之乒乓球小游戏

本帖最后由 驴友花雕 于 2025-9-6 13:41 编辑

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



实验场景记录







页: [1]
查看完整版本: 【花雕动手做】基于Kitronik可编程开发板之乒乓球小游戏