蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会图形化考级:校园大富翁经营闯关解析

引言

备赛正酣------第十八届蓝桥杯全国青少年智能科技创新实践活动 (原蓝桥杯青少组)省级活动 2026 年 10---12 月正在全国铺开,8 座城市的省级线下测评已定档 11 月 7 日至 12 月 26 日,本届主题《星际拓荒纪元》;其中 11 月 14 日(今天)正是浙江杭州站 (瓜沥体育馆)的省测现场,程序设计组别中的图形化创意编程分初级(U10)与中级(U14),统一 80 分钟现场上机、个人独立完成、裁判按运行效果逐题客观评分。与此同时,中国电子学会 2026 年 12 月青少年软件编程(图形化)等级考试 报名仍在进行(9/23---12/2 16:00,统考 12/13:一级 14:00--15:00、二/三/四级 8:30--10:00,全国测试 12/10 含图形化);全国青少年信息素养大赛 2026---2027 赛季也已进入报名与基础能力评估窗口,复赛 2027 年 5---7 月、总决赛 7---8 月,5 大主题赛项覆盖图形化。这三大标志性赛事的图形化考点高度重合,今天用一个原创项目「校园大富翁经营闯关」,把变量、列表、循环、条件、自制积木、广播六件套一次性串起来,一篇顶三篇备考。

说明:本文标题与正文均以中文为主,不出现 Scratch/Python 等英文品牌词;正文代码块里的英文标识符仅作对照示例。


一、题目与项目目标

项目主题:校园大富翁经营闯关

背景设定:校园科技节的"财商嘉年华"上,同学们铺开一张环形棋盘。两位玩家轮流掷骰子前进,踩到空地可以买下经营、踩到别人的地要交租金、踩到机遇卡会有意外惊喜或惊吓,谁先让对手资金链断裂,谁就是当天的"经营小能手"。

玩法规则:

  1. 棋盘是一圈 20 格的环形道路,类型包括:起点、空地(可买)、机遇卡、公益捐、小黑屋、升级站;
  2. 玩家用按键掷骰子(1---6 随机),沿棋盘前进对应步数;
  3. 踩到空地:无人拥有且现金够 → 提示购买;已归自己 → 花钱升一级(租金翻倍,上限 3 级);归对手 → 按"基础租金 × 等级"交租;
  4. 踩到机遇卡:从卡片列表随机抽一张,加减现金;
  5. 踩到公益捐:固定扣一笔钱;
  6. 踩到小黑屋:停赛一回合;
  7. 踩到升级站:可花一笔钱把任意己方地块升一级;
  8. 任一玩家现金 < 0 即判负,对手获胜;或回合数达上限时资产高者胜。

二、核心考点(六件套全覆盖)

考点 在本项目中的落点
列表 board 存每格「类型|名称|价格|租金|拥有者|等级」;cards 存机遇卡「内容|金额」;p1_lands/p2_lands 存各自拥有格下标
变量 dice(骰子点数)、turn(当前回合 0/1)、phase(状态闸门)、p1_cash/p2_cash、p1_pos/p2_pos、skip1/skip2(停赛标记)、winner
循环 移动时"重复 dice 次"逐格滑行;遍历 board 画棋盘;遍历 cards 抽卡
条件 落脚格按"类型"做多分支:空地/己方地/他人地/机遇卡/公益捐/小黑屋/升级站;买地看现金是否够;胜负看现金是否 < 0
自制积木 掷骰子、移动n步(步数)、落脚结算(格下标)、购买地块(格下标)、升级地块(格下标)、抽机遇卡、判定胜负、重置一局
广播 掷骰、移动、购买询问、确认购买、确认升级、结算完成、游戏结束------玩家只广播意图、播报员只听广播说话,逻辑与表现分离

三、解法与拆解

3.1 数据模型:用列表表达一整张棋盘

把 20 格棋盘压进一个列表 board,每个元素是一串用"|"分隔的文本:

复制代码
类型|名称|价格|租金|拥有者|等级
start|起点|0|0|0|0
land|阳光农场|200|40|0|0
land|图书角|180|36|0|0
event|机遇卡|0|0|0|0
land|零食铺|160|32|0|0
tax|公益捐|0|80|0|0
land|手工坊|220|44|0|0
jail|小黑屋|0|0|0|0
land|绿植园|200|40|0|0
shop|升级站|0|0|0|0
...(共 20 格,环形首尾相接)

技巧:用"|"拼接是为了能用"将......按分隔符......拆分为列表"积木,把一整格拆成 6 个字段分别读取,避免开 6 个平行列表。

机遇卡列表 cards 同理:

复制代码
幸运中奖|120
书籍丢失|-60
校园义卖|+90
器材损坏|-100

3.2 主流程:掷骰 → 移动 → 落脚结算

用一个状态闸门 phase 防止误触:

复制代码
当 接收到广播 [掷骰]
  如果 <(phase) = [等待]> 那么
    设置 [dice] 为 (在 1 到 6 间随机选一个数)
    广播 [移动] 并等待

移动用"重复执行 dice 次"逐格前进,每步把棋子滑到目标格中心(坐标由"格下标 → x/y"的换算公式算出):

复制代码
定义 自制积木 [移动n步 (步数)]
  重复执行 (步数) 次
    将 [p1_pos] 增加 1
    如果 <(p1_pos) > [19]> 那么 将 [p1_pos] 设为 0   // 环形回绕
    滑行 0.15 秒到 x:(格x) y:(格y)
  广播 [落脚结算 (p1_pos)] 并等待

3.3 落脚结算:条件多分支是灵魂

这是本项目最能拉开差距的地方------按格子的"类型"字段走不同分支:

复制代码
定义 自制积木 [落脚结算 (格下标)]
  将 [字段] 设为 (将 (board 的第 (格下标)) 按 [|] 拆分为列表)
  如果 <(字段的第 1 项) = [land]> 那么
    // 空地分支
    如果 <(字段的第 5 项) = [0]> 那么
      如果 <(p1_cash) > (字段的第 3 项)> 那么 广播 [购买询问 (格下标)] 并等待
    否则
      如果 <(字段的第 5 项) = [1]> 那么
        // 自己的地:可升级
        如果 <(p1_cash) > [100]> 且 <(字段的第 6 项) < [3]> 那么 广播 [确认升级 (格下标)] 并等待
      否则
        // 对手的地:交租
        将 [租] 设为 ((字段的第 4 项) * (字段的第 6 项))
        将 [p1_cash] 增加 (0 - (租))
        将 [p2_cash] 增加 (租)
  否则 如果 <(字段的第 1 项) = [event]> 那么
    广播 [抽机遇卡] 并等待
  否则 如果 <(字段的第 1 项) = [tax]> 那么
    将 [p1_cash] 增加 (-80)
  否则 如果 <(字段的第 1 项) = [jail]> 那么
    将 [skip1] 设为 1   // 下次轮到自己时跳过
  ...(升级站、起点同理)

易错点:租金要用"基础租金 × 等级",而不是只扣基础租金;等级是字符串拼出来的,计算前记得转成数字。

3.4 自制积木封装:买地 / 升级 / 抽卡 / 胜负

复制代码
定义 自制积木 [购买地块 (格下标)]
  将 [字段] 设为 (将 (board 的第 (格下标)) 按 [|] 拆分为列表)
  将 [p1_cash] 增加 (0 - (字段的第 3 项))
  将 (board 的第 (格下标)) 替换为 (连接 [land|] (字段的第 2 项) [|] (字段的第 3 项) [|] (字段的第 4 项) [|1|1])
  // 拥有者=1,等级=1
  把 (格下标) 加入 [p1_lands]

定义 自制积木 [升级地块 (格下标)]
  将 [字段] 设为 (将 (board 的第 (格下标)) 按 [|] 拆分为列表)
  将 [p1_cash] 增加 (-100)
  将 (board 的第 (格下标)) 替换为 (连接 (前5段) [|] ((字段的第 6 项) + 1))  // 等级+1

定义 自制积木 [判定胜负]
  如果 <(p1_cash) < [0]> 那么 设置 [winner] 为 2
  否则 如果 <(p2_cash) < [0]> 那么 设置 [winner] 为 1
  如果 <(winner) > [0]> 那么 广播 [游戏结束] 并等待

3.5 广播解耦:逻辑与表现彻底分离

玩家脚本只负责"算"------接收按键、广播意图;播报员脚本只负责"说"------监听所有广播,把结果念出来。这样换皮肤、加音效、做双人热座都不会动到核心逻辑:

复制代码
// 播报员
当 接收到广播 [结算完成]
  说 (连接 [玩家1现金:] (p1_cash) [ 玩家2现金:] (p2_cash)) 2 秒
当 接收到广播 [游戏结束]
  说 (连接 [玩家] (winner) [ 获胜!]) 3 秒

四、运行效果

  • 开局两人各有 1500 现金,棋子落在起点;
  • 轮流掷骰前进,踩空地弹窗问"买不买",买下后棋盘上该格变色并标"玩家1";
  • 路过对手的地,现金自动扣租、对手现金增加,播报员同步播报"交租 80";
  • 抽到机遇卡时舞台弹出卡片内容,现金随之浮动;
  • 有人现金跌破 0,立即广播"游戏结束",胜者高亮。

整局下来,变量在变、列表在被改写、循环在逐格推进、条件在分流分支、自制积木把重复逻辑收口、广播把各角色解耦------六个考点一个不落。


五、进阶拓展

  1. 电脑 AI 对手:给玩家 2 写一套贪心策略------现金高于安全阈值(如 300)就优先买地、升满级;低于阈值则保守不买。可用"如果 <(p2_cash) > 300> 那么 广播 确认购买"模拟。
  2. 抵押与破产清算:现金不足时允许把己方地块抵押回血(等级清零、现金 + 半价),更贴近真实大富翁。
  3. 双卡组:把机遇卡拆成"命运""机会"两套,按格类型抽不同卡。
  4. 地图编辑器:用列表存"地图模板",开局读取模板生成棋盘,换地图不换引擎。
  5. 云变量联机 :把 p1_pos/p2_pos/turn 移到云变量,实现两台设备对战。

Python 同构对照(核心逻辑)

下面用纯 Python 复刻上面的"移动 + 落脚结算",方便把图形化思维迁移到代码:

python 复制代码
import random

# 棋盘:每格 (类型, 名称, 价格, 租金, owner, level)
BOARD = [
    ("start", "起点", 0, 0, 0, 0),
    ("land", "阳光农场", 200, 40, 0, 0),
    ("land", "图书角", 180, 36, 0, 0),
    ("event", "机遇卡", 0, 0, 0, 0),
    ("land", "零食铺", 160, 32, 0, 0),
    ("tax", "公益捐", 0, 80, 0, 0),
    ("land", "手工坊", 220, 44, 0, 0),
    ("jail", "小黑屋", 0, 0, 0, 0),
    ("land", "绿植园", 200, 40, 0, 0),
    ("shop", "升级站", 0, 0, 0, 0),
]
CARDS = [("幸运中奖", 120), ("书籍丢失", -60), ("校园义卖", 90), ("器材损坏", -100)]
N = len(BOARD)

def move(pos, steps):
    return (pos + steps) % N

def land_effect(cash, pos, me):
    t, name, price, rent, owner, level = BOARD[pos]
    if t == "land":
        if owner == 0:
            if cash >= price:
                cash -= price
                BOARD[pos] = (t, name, price, rent, me, 1)
        elif owner == me:
            if cash >= 100 and level < 3:
                cash -= 100
                BOARD[pos] = (t, name, price, rent, me, level + 1)
        else:
            fee = rent * level
            cash -= fee
    elif t == "event":
        _, amt = random.choice(CARDS)
        cash += amt
    elif t == "tax":
        cash -= 80
    return cash

# 一回合示例
pos, cash = 0, 1500
pos = move(pos, random.randint(1, 6))
cash = land_effect(cash, pos, me=1)
print("落点", BOARD[pos][1], "剩余现金", cash)

把这段和上面的积木一一对照,move 对应"移动n步"积木,land_effect 对应"落脚结算"积木里的条件分支------图形化和代码是同一套逻辑的不同表达。


六、小结与互动

「校园大富翁经营闯关」用一个生活化的经营游戏,把列表存棋盘、变量管状态、循环推棋子、条件分地块、自制积木收口、广播解耦六件套全部串了起来,正好对应蓝桥杯青少组图形化、电子学会图形化考级、信息素养大赛图形化方向的共性考点。建议动手时先画一张 20 格草图、把每格字段填好,再按"数据 → 移动 → 结算 → 胜负"的顺序逐块实现,最后用广播把播报拆出去。

互动时间:你最想给这张棋盘加什么玩法?是"命运卡组""抵押破产",还是"电脑 AI 对手"?欢迎在评论区留言,下一篇我们挑一个做成完整拆解。也欢迎说说你在蓝桥杯省测 / 电子学会图形化考级备考中遇到的图形化难题,我们一起拆解。


📚 免费少儿编程资料(夸克网盘领取)

以下资料来自夸克网盘分享,点击链接可直接保存;若需在 App 内打开,也可复制下方明文链接:

  1. 全国青少年信息素养大赛复赛集训题目Python&C++.docx
    https://pan.quark.cn/s/93995d3cb150
  2. 2024信息素养-智能算法应用挑战赛-复赛初中组题目7月7日.pdf
    https://pan.quark.cn/s/da97b5dbf75d
  3. Python背记手册.pdf
    https://pan.quark.cn/s/7568ae9ca92b
  4. Python课程
    https://pan.quark.cn/s/a94bf02d00c6
  5. 2024信息素养大赛图形化复赛集训题答案3-9
    https://pan.quark.cn/s/6ccab7ec3cbc
  6. 2025年03月份电子学会考级真题
    https://pan.quark.cn/s/4403c4228912
  7. 2025全国青少年信息素养大赛赛项说明
    https://pan.quark.cn/s/d9d0df4a9f29
  8. 青少儿信息素养大赛编程资料
    https://pan.quark.cn/s/4ab6bd83be8a

资料持续更新,关注获取最新分享。

相关推荐
another heaven7 分钟前
【C/C++ 第一次跨越(上):用 C++11/14 停止制造新的旧代码】
c语言·c++·制造
qq_406981038 分钟前
c++ lamda(三)Lambda表达式
java·前端·c++
在所不辞兄30 分钟前
为什么在新能源汽车电驱与热管理开发中,AI驱动的数字孪生和数据驱动仿真正在部分替代对物理台架与实车标定的依赖?
人工智能·深度学习·神经网络·算法·机器学习
特立独行的猫A7 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
大可不必了11 小时前
03 函数定义和调用
开发语言·python
I_belong_to_jesus11 小时前
C++关于分支预测的优化1
开发语言·c++·算法
承渊政道12 小时前
【Python编程—从入门到实践】(记分与闯关:用Python+Pygame,打造越战越精彩的太空大战!)
开发语言·python·pycharm·游戏程序·pygame
爱学习的程序媛12 小时前
Python常用框架梳理
开发语言·后端·python·ai·web·后端框架·python框架
imgsq12 小时前
GESP Python 一到四级:备考路线与真题特点
python·青少年编程