AppInventor实现石头剪子布-熟悉调用过程简化代码

调用过程理解:

  • 什么是 “调用过程”

在编程中,“过程”(这里是自定义的sum过程)是一段可重复使用的代码块,它封装了特定的功能(比如这里的 “计算两个数的和”)。“调用过程” 就是在程序的其他位置,去使用这个预先定义好的过程,让它执行封装的功能,并获取或利用它的结果。

  • 调用过程是如何实现的

在这个例子中,调用过程的实现分为以下步骤:

  1. 定义过程:首先通过 “定义过程 sum (num1, num2)” ,声明了一个名为sum的过程,它接收两个参数num1num2,功能是 “返回num1 + num2的结果”。
  2. 触发调用的场景:当用户点击Button_Sum1Button_Sum2按钮时,会触发对应的 “执行块”。
  3. 调用过程并传参:在 “执行块” 中,使用 “调用 sum” 模块,并将输入框(如TextBox1aTextBox1bTextBox2aTextBox2b)的文本作为参数num1num2传递给sum过程。
  4. 获取结果并展示sum过程执行后返回求和结果,程序将这个结果设置为标签(如Label_Result1Label_Result2)的文本,从而在界面上显示出来。
  • 为何会这样写?(这样设计的优势)

这样写主要是为了提高代码的 “复用性” 和 “可维护性”

  • 复用性:如果有多个地方需要 “求和” 功能(比如这里的Button_Sum1Button_Sum2两个按钮的逻辑),不需要重复写 “num1 + num2” 的代码,只需要定义一次sum过程,然后在多处调用即可。
  • 可维护性:如果求和的逻辑需要修改(比如改成 “求差” 或 “带小数的运算”),只需要修改sum过程的定义,所有调用它的地方都会自动生效,不用逐个修改,大大减少了维护成本。

简单来说,“定义过程 + 调用过程” 的模式,是编程中 “偷懒但高效” 的智慧 —— 把重复的工作封装起来,用的时候直接 “调用”,既省代码又方便维护

一、简单的求两数字之和

定义带有2个参数,以及带返回值的求和过程,计算任意两个数字的和。参考界面如图:

组件设计:

逻辑设计:

测试:

二、第一版

组件设计:

逻辑设计:

点击继续玩之后会重新从0开始计分,重新判断赢家

点击结束游戏回到主界面:

点击开始游戏,跳转至游戏界面:

三、重置优化版

整个优化的核心思路是 “提取重复逻辑,用一个通用过程替代多次重复编写”,通过 “封装” 和 “参数化” 让代码更简洁、易维护。具体可以拆解为 3 个关键步骤,结合 “石头剪子布” 的场景理解:

第一步:找到 “重复的共性逻辑”

观察三个按钮(石头、剪子、布)的点击事件,会发现它们的核心流程完全相同,都是:

  1. 系统随机出拳(1-3 的随机数);
  2. 显示玩家出拳的图片;
  3. 根据 “玩家出拳” 和 “系统出拳” 判断胜负;
  4. 更新玩家 / 系统的分数标签;
  5. 显示系统出拳的图片;
  6. 若有人分数达到 7,弹出胜负对话框。

重复的差异点仅在于:

  • 玩家出拳的图片不同(石头用myshi.bmp,剪子用myjian.bmp等);
  • 玩家获胜 / 失败对应的系统出拳值不同(比如石头胜剪子 <2>、败于布 < 3>;剪子胜布 < 3>、败于石头 < 1 > 等)。

第二步:用 “自定义过程” 封装共性逻辑

既然核心流程相同,就可以把这部分逻辑 “打包” 成一个自定义过程(类似一个 “工具函数”),让这个过程负责处理所有通用操作。

为了让过程能适配不同按钮的差异,我们给过程添加3 个参数(相当于 “输入信息”):

  • playerImageName:告诉过程 “玩家出拳的图片是哪张”;
  • playerWinSysGuess:告诉过程 “玩家出这个拳时,系统出什么值(1-3)算玩家胜”;
  • playerLoseSysGuess:告诉过程 “玩家出这个拳时,系统出什么值(1-3)算玩家败”。

过程内部根据这 3 个参数,自动处理 “显示图片、判断胜负、更新分数” 等操作,无需重复编写。

第三步:通过 “参数调用” 适配不同按钮

三个按钮的点击事件,不再需要写完整逻辑,只需调用同一个过程,并传入各自的参数即可:

  • 点击 “石头” 按钮时,传入参数:("myshi.bmp", 2, 3)(图片是石头,胜系统剪子 <2>,败系统布 < 3>);
  • 点击 “剪子” 按钮时,传入参数:("myjian.bmp", 3, 1)(图片是剪子,胜系统布 <3>,败系统石头 < 1>);
  • 点击 “布” 按钮时,传入参数:("mybu.bmp", 1, 2)(图片是布,胜系统石头 <1>,败系统剪子 < 2>)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值