DF创客社区
发现
DF创客商城
教程
产品资料库
搜索
热门搜索
人工智能
视觉传感器
AI 人工智能
行空板
主控板
二哈识图
热门活动
关闭
DF创客社区
发现
DF创客商城
教程
产品资料库
【花雕动手做】基于Kitronik可编程开发板之生日派对射击
2025-09-01
1217
驴友花雕
UID: 1737
2964
文章
158
粉丝
1.1万
获取喜欢
0
0
创作许可协议
本项目采用
None(不开放任何权利,保留所有权利)
进行许可。
其他主题
Arduino
添加到合集
0
0
相关推荐
DF创客社区2014年度编辑选择奖 教程篇
Ash1
3.9万
3
我的Q&A问答专栏
陈德熹
2
0
BLE Arduino开发神器 Bluno Beetle开启免费试用啦!
Ash1
2.3万
0
评论(4)
驴友花雕
作者
回复
驴友花雕
作者
图形编程参考实验程序
通过模拟器,调试与模拟运行
实验场景记录
回复
驴友花雕
作者
代码解读
这段代码是一个使用 MakeCode Arcade 编写的多人小游戏,主题是“生日派对射击”,玩家通过接住或碰撞“弓箭”来得分。下面是逐行解读,带你快速掌握它的逻辑和玩法:
1、游戏机制概览
两位玩家在屏幕左右两侧控制角色。
游戏中不断发射“弓箭”。
玩家碰到弓箭时触发彩色**效果、得分,并再次发射弓箭。
游戏限时 60 秒,支持多人得分统计。
2、碰撞事件处理
python
[code]def on_on_overlap(sprite, otherSprite):
otherSprite.destroy(effects.confetti, 200)
mp.change_player_state_by(mp.get_player_by_sprite(sprite), MultiplayerState.score, 1)
sprites.launch_bow()
sprites.on_overlap(SpriteKind.player, SpriteKind.bow, on_on_overlap)[/code]
当玩家角色与“弓箭”碰撞时:
弓箭销毁,并播放彩色纸屑**效果,持续 200 毫秒。
玩家得分 +1。
立即发射新的弓箭,保持游戏节奏。
3、场景设置
python
[code]scene.set_background_image(assets.image("""bday_bg"""))[/code]
设置背景为生日派对主题图像,营造欢乐氛围。
4、玩家一初始化
python
[code]def on_wrap1():
mp.set_player_sprite(mp.player_selector(mp.PlayerNumber.ONE),
sprites.create(assets.image("""p1"""), SpriteKind.player))
mp.move_with_buttons(mp.player_selector(mp.PlayerNumber.ONE), 0, 150)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.ONE)).set_stay_in_screen(True)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.ONE)).left = 15
bundles.wrap1(on_wrap1)[/code]
玩家一使用角色图像 p1。
只能上下移动(X 速度为 0,Y 速度为 150)。
保持在屏幕内,初始位置靠左边(x = 15)。
5、玩家二初始化
python
[code]def on_wrap2():
mp.set_player_sprite(mp.player_selector(mp.PlayerNumber.TWO),
sprites.create(assets.image("""p2"""), SpriteKind.player))
mp.move_with_buttons(mp.player_selector(mp.PlayerNumber.TWO), 0, 150)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.TWO)).set_stay_in_screen(True)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.TWO)).right = 145
bundles.wrap2(on_wrap2)[/code]
玩家二使用角色图像 p2。
同样只能上下移动,初始位置靠右边(x = 145)。
6、发射弓箭 + 启动游戏
python
[code]sprites.launch_bow()
carnival.start_countdown_game(60, carnival.WinTypes.MULTI)[/code]
游戏开始时发射一支弓箭。
启动 60 秒倒计时,游戏结束后根据得分判断胜负(多人模式)。
回复
驴友花雕
作者
作为学习、练习与尝试,这里创建一个生日派对射击的小游戏。
打开网页版:
https://arcade.makecode.com/
,设置项目名称:生日派对射击
1、MicroPython实验参考代码
[code]def on_on_overlap(sprite, otherSprite):
otherSprite.destroy(effects.confetti, 200)
mp.change_player_state_by(mp.get_player_by_sprite(sprite), MultiplayerState.score, 1)
sprites.launch_bow()
sprites.on_overlap(SpriteKind.player, SpriteKind.bow, on_on_overlap)
scene.set_background_image(assets.image("""
bday_bg
"""))
def on_wrap1():
mp.set_player_sprite(mp.player_selector(mp.PlayerNumber.ONE),
sprites.create(assets.image("""
p1
"""), SpriteKind.player))
mp.move_with_buttons(mp.player_selector(mp.PlayerNumber.ONE), 0, 150)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.ONE)).set_stay_in_screen(True)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.ONE)).left = 15
bundles.wrap1(on_wrap1)
def on_wrap2():
mp.set_player_sprite(mp.player_selector(mp.PlayerNumber.TWO),
sprites.create(assets.image("""
p2
"""), SpriteKind.player))
mp.move_with_buttons(mp.player_selector(mp.PlayerNumber.TWO), 0, 150)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.TWO)).set_stay_in_screen(True)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.TWO)).right = 145
bundles.wrap2(on_wrap2)
sprites.launch_bow()
carnival.start_countdown_game(60, carnival.WinTypes.MULTI)[/code]
回复
- 没有更多了 -
驴友花雕
UID: 1737
2964
文章
158
粉丝
1.1万
获取喜欢
创作许可协议
本项目采用
None(不开放任何权利,保留所有权利)
进行许可。
相关推荐
DF创客社区2014年度编辑选择奖 教程篇
Ash1
3.9万
3
我的Q&A问答专栏
陈德熹
2
0
BLE Arduino开发神器 Bluno Beetle开启免费试用啦!
Ash1
2.3万
0
通过模拟器,调试与模拟运行
实验场景记录
这段代码是一个使用 MakeCode Arcade 编写的多人小游戏,主题是“生日派对射击”,玩家通过接住或碰撞“弓箭”来得分。下面是逐行解读,带你快速掌握它的逻辑和玩法:
1、游戏机制概览
两位玩家在屏幕左右两侧控制角色。
游戏中不断发射“弓箭”。
玩家碰到弓箭时触发彩色**效果、得分,并再次发射弓箭。
游戏限时 60 秒,支持多人得分统计。
2、碰撞事件处理
python
[code]def on_on_overlap(sprite, otherSprite):
otherSprite.destroy(effects.confetti, 200)
mp.change_player_state_by(mp.get_player_by_sprite(sprite), MultiplayerState.score, 1)
sprites.launch_bow()
sprites.on_overlap(SpriteKind.player, SpriteKind.bow, on_on_overlap)[/code]
当玩家角色与“弓箭”碰撞时:
弓箭销毁,并播放彩色纸屑**效果,持续 200 毫秒。
玩家得分 +1。
立即发射新的弓箭,保持游戏节奏。
3、场景设置
python
[code]scene.set_background_image(assets.image("""bday_bg"""))[/code]
设置背景为生日派对主题图像,营造欢乐氛围。
4、玩家一初始化
python
[code]def on_wrap1():
mp.set_player_sprite(mp.player_selector(mp.PlayerNumber.ONE),
sprites.create(assets.image("""p1"""), SpriteKind.player))
mp.move_with_buttons(mp.player_selector(mp.PlayerNumber.ONE), 0, 150)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.ONE)).set_stay_in_screen(True)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.ONE)).left = 15
bundles.wrap1(on_wrap1)[/code]
玩家一使用角色图像 p1。
只能上下移动(X 速度为 0,Y 速度为 150)。
保持在屏幕内,初始位置靠左边(x = 15)。
5、玩家二初始化
python
[code]def on_wrap2():
mp.set_player_sprite(mp.player_selector(mp.PlayerNumber.TWO),
sprites.create(assets.image("""p2"""), SpriteKind.player))
mp.move_with_buttons(mp.player_selector(mp.PlayerNumber.TWO), 0, 150)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.TWO)).set_stay_in_screen(True)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.TWO)).right = 145
bundles.wrap2(on_wrap2)[/code]
玩家二使用角色图像 p2。
同样只能上下移动,初始位置靠右边(x = 145)。
6、发射弓箭 + 启动游戏
python
[code]sprites.launch_bow()
carnival.start_countdown_game(60, carnival.WinTypes.MULTI)[/code]
游戏开始时发射一支弓箭。
启动 60 秒倒计时,游戏结束后根据得分判断胜负(多人模式)。
打开网页版:https://arcade.makecode.com/,设置项目名称:生日派对射击
1、MicroPython实验参考代码
[code]def on_on_overlap(sprite, otherSprite):
otherSprite.destroy(effects.confetti, 200)
mp.change_player_state_by(mp.get_player_by_sprite(sprite), MultiplayerState.score, 1)
sprites.launch_bow()
sprites.on_overlap(SpriteKind.player, SpriteKind.bow, on_on_overlap)
scene.set_background_image(assets.image("""
bday_bg
"""))
def on_wrap1():
mp.set_player_sprite(mp.player_selector(mp.PlayerNumber.ONE),
sprites.create(assets.image("""
p1
"""), SpriteKind.player))
mp.move_with_buttons(mp.player_selector(mp.PlayerNumber.ONE), 0, 150)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.ONE)).set_stay_in_screen(True)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.ONE)).left = 15
bundles.wrap1(on_wrap1)
def on_wrap2():
mp.set_player_sprite(mp.player_selector(mp.PlayerNumber.TWO),
sprites.create(assets.image("""
p2
"""), SpriteKind.player))
mp.move_with_buttons(mp.player_selector(mp.PlayerNumber.TWO), 0, 150)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.TWO)).set_stay_in_screen(True)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.TWO)).right = 145
bundles.wrap2(on_wrap2)
sprites.launch_bow()
carnival.start_countdown_game(60, carnival.WinTypes.MULTI)[/code]