第1章 水果配对 1
1.1 游戏描述 1
1.2 界面设计 2
1.2.1 界面布局 2
1.2.2 组件属性设置 3
1.2.3 上传资源文件 3
1.3 编写程序——屏幕初始化 4
1.3.1 创建按钮列表 4
1.3.2 让按钮显示背面图案 5
1.3.3 创建图片列表 7
1.3.4 为按钮指定正面图案 7
1.3.5 随机显示正面图案 9
1.4 编写程序——处理按钮点击事件 11
1.4.1 流程图 11
1.4.2 判断两个按钮图案的异同 12
1.4.3 处理两个按钮图案相同的情况 13
1.4.4 处理两个按钮图案不同的情况 14
1.4.5 代码的复用——改进按钮点击事件处理程序 14
1.4.6 代码的规整 16
1.4.7 改造闪现计时器的计时事件处理程序 17
1.4.8 测试 17
1.5 编写程序——控制游戏时长 21
1.5.1 控制游戏时长 21
1.5.2 显示剩余时间 21
1.5.3 将剩余时间计入总成绩 22
1.6 编写程序——设计游戏结尾 22
1.6.1 显示游戏得分 22
1.6.2 保存游戏得分 24
1.6.3 处理对话框的按钮选择 25
1.6.4 创建游戏初始化过程 25
1.7 程序的测试与修正 26
1.7.1 选取列表项错误 26
1.7.2 重新开始游戏时点击按钮无响应 29
1.7.3 重新开始游戏时图案排列不变 30
1.7.4 快速点击按钮时系统提示错误 31
1.8 代码整理 32
第2章 计算器 35
2.1 功能描述 35
2.1.1 符号及术语 35
2.1.2 具体功能 36
2.2 用户界面设计 36
2.3 编写程序——实现常规操作 37
2.3.1 输入数字 37
2.3.2 点击算符 38
2.3.3 点击等号 39
2.3.4 代码测试及说明 40
2.4 编写程序——实现连续运算 40
2.4.1 代码修改 40
2.4.2 测试及代码修正 40
2.5 编写程序——实现小数输入 41
2.5.1 编写按钮点击程序 41
2.5.2 代码测试及程序修正 42
2.6 编写程序——实现辅助功能 43
2.6.1 求相反数 43
2.6.2 删除末尾数字 43
2.6.3 清除后数 44
2.6.4 清除全部信息 44
2.7 代码回顾 44
2.7.1 要素关系图 44
2.7.2 关键环节的状态分析 44
第3章 九格拼图 46
3.1 游戏描述 46
3.2 界面设计 47
3.2.1 界面布局 47
3.2.2 资源文件规格 48
3.3 难点分析 49
3.3.1 程序的主流程 49
3.3.2 术语解释 49
3.3.3 难点分析 51
3.4 编写程序——初始化 52
3.4.1 初始化全局变量 52
3.4.2 初始化组件属性 55
3.4.3 屏幕初始化事件处理程序 55
3.4.4 跟踪程序的执行过程 56
3.5 编写程序——移动碎片 56
3.6 编写程序——判断拼图是否成功 59
3.7 编写程序——计算游戏得分 60
3.7.1 统计游戏耗时 60
3.7.2 统计碎片移动次数 60
3.7.3 计算游戏得分 60
3.8 编写程序——游戏结束 61
3.8.1 提取历史记录 61
3.8.2 更新历史记录 62
3.8.3 处理对话框的完成选择事件 63
3.8.4 添加重新开始按钮 64
3.9 代码整理 64
3.9.1 代码清单 64
3.9.2 要素关系图 65
第4章 天气预报——基础版 67
4.1 功能描述 67
4.2 预备知识 68
4.2.1 Web API简介 68
4.2.2 HTTP协议 69
4.2.3 Web客户端组件 72
4.2.4 JSON数据简介 73
4.2.5 将JSON数据转为列表数据 74
4.2.6 App Inventor处理键值对列表 75
4.3 请求数据 76
4.3.1 用户界面设计 76
4.3.2 请求数据 77
4.3.3 将数据保存为文件 79
4.4 数据结构分析 80
4.4.1 城市信息 81
4.4.2 七日预报 81
4.4.3 小时预报 82
4.4.4 生活指数 83
4.4.5 天气实况 83
4.4.6 数据状态 83
4.4.7 数据更新时间 84
4.5 呈现一组简单的数据——城市信息 84
4.5.1 提取分类信息 84
4.5.2 显示单项信息 85
4.5.3 规范信息的显示格式 86
4.6 选择显示各类信息 87
4.6.1 基础数据准备 87
4.6.2 显示分类信息 90
4.7 程序的改进 95
4.7.1 判断请求数据的结果 95
4.7.2 为数据添加单位 95
4.7.3 显示当前数据类型 96
第5章 天气预报——图片版 98
5.1 功能描述 98
5.2 用户界面设计 98
5.2.1 页面布局 98
5.2.2 添加并设置组件 100
5.3 编写程序——请求并整理数据 101
5.3.1 请求数据 101
5.3.2 数据整理 102
5.4 呈现有图标的数据——七日天气预报 106
5.4.1 设置用户界面组件的可视属性 106
5.4.2 图标文件的获取 107
5.4.3 图标的呈现 107
5.4.4 显示文字信息 110
5.5 显示其他种类信息 113
5.5.1 显示城市基本信息 113
5.5.2 显示生活指数信息 114
5.5.3 显示天气实况信息 116
5.5.4 显示小时预报 118
5.6 其他功能 120
5.6.1 选择显示分类信息 121
5.6.2 默认设置与数据保存 121
5.7 功能完善与小结 123
5.7.1 诊断网络连接 123
5.7.2 项目小结 123
第6章 打地鼠 125
6.1 游戏描述 125
6.2 素材准备 126
6.3 界面设计 126
6.4 编写程序——地鼠的闪现 127
6.4.1 难点分析 128
6.4.2 编写代码 128
6.5 编写程序——命中地鼠与得分 131
6.5.1 显示击打次数 131
6.5.2 命中地鼠 131
6.6 编写程序——时间控制与游戏结束 132
6.6.1 显示游戏剩余时间 132
6.6.2 编写游戏结束程序 134
6.6.3 回应用户的选择 135
6.7 代码整理 136
第7章 幼儿加法启蒙 138
7.1 功能描述 138
7.2 素材准备 139
7.2.1 素材清单 139
7.2.2 素材规格 140
7.3 技术要点 140
7.3.1 用图片组件显示数字 140
7.3.2 用画布组件绘制图形 140
7.3.3 用随机数合成颜色 140
7.3.4 用计时器组件控制应用的节奏 140
7.4 界面设计 140
7.5 编写程序——应用初始化 143
7.5.1 按钮初始化 143
7.5.2 动态设置屏幕的标题属性 144
7.5.3 动态组件初始化 144
7.5.4 出题并显示题目 145
7.5.5 测试 145
7.6 编写程序——题目图示 145
7.6.1 画圆遇到的问题 146
7.6.2 绘制数量合适的彩色圆形 147
7.6.3 添加加号 147
7.6.4 阶段测试 148
7.7 编写程序——答题 148
7.7.1 显示输入的数值 149
7.7.2 清除错误答案 150
7.7.3 判断对错 150
7.7.4 显示下一题 151
7.7.5 禁用选择时长功能 152
7.7.6 隐藏图示 153
7.7.7 阶段测试 153
7.8 编写程序——时间控制及得分 153
7.8.1 控制练习时长 153
7.8.2 计算并显示得分 154
7.8.3 选择练习时长 154
7.9 编写程序——游戏结束与重新开始 155
7.9.1 提取、显示及保存历史记录 155
7.9.2 处理用户选择 156
7.9.3 最终测试 157
7.10 代码整理 157
7.10.1 代码清单 157
7.10.2 要素关系图 158
第8章 简易家庭账本——登录 160
8.1 概念解释 160
8.1.1 什么是应用 160
8.1.2 什么是数据库 161
8.2 App Inventor中的数据库组件 163
8.2.1 数据的组织 163
8.2.2 新增数据项(记录) 164
8.2.3 数据的查询 165
8.2.4 删除数据项 166
8.2.5 修改数据项 167
8.2.6 数据的请求与保存 167
8.3 家庭账本应用的功能模块设置 168
8.4 登录页面的功能描述 169
8.4.1 预设选项功能 169
8.4.2 密码保护功能 170
8.5 数据模型 170
8.5.1 对象模型 170
8.5.2 变量模型 171
8.5.3 列表的文本表示 171
8.5.4 登录页面的数据模型 171
8.5.5 界面设计 172
8.6 页面逻辑 174
8.6.1 加载保存预设选 174
8.6.2 密码设置 174
8.6.3 登录功能 174
8.7 编写程序 175
8.7.1 屏幕初始化 175
8.7.2 文件管理器收到文本 175
8.7.3 开始按钮点击程序 177
8.8 测试 177
8.9 附录:代码背包功能简介 178
第9章 简易家庭账本——导航菜单与收入记录 179
9.1 导航菜单屏幕 179
9.1.1 数据模型 179
9.1.2 界面设计 179
9.1.3 页面逻辑 180
9.1.4 编写程序 180
9.1.5 测试 181
9.2 收入记录的功能描述 182
9.3 收入记录的数据模型 182
9.3.1 对象模型 182
9.3.2 变量模型 183
9.3.3 预设项列表 184
9.4 界面设计 184
9.5 页面逻辑 185
9.6 编写程序 187
9.6.1 发现过程 187
9.6.2 屏幕初始化 188
9.6.3 新增数据 189
9.6.4 修改数据 190
9.6.5 删除数据 193
9.6.6 永久保存数据 193
9.6.7 返回主菜单 194
9.7 测试与改进 195
9.8 附录:计时器组件中的时间信息 197
9.8.1 什么是时间点 197
9.8.2 设置日期格式 198
9.8.3 创建毫秒时间点 199
第10章 简易家庭账本——系统设置 200
10.1 功能描述 200
10.2 数据模型 201
10.2.1 支出二级分类 201
10.2.2 支出专项 202
10.2.3 家庭成员与支付方式 202
10.2.4 重置密码 202
10.3 界面设计 202
10.3.1 页面布局 202
10.3.2 组件属性设置 203
10.4 界面逻辑 204
10.4.1 屏幕初始化 204
10.4.2 设置预设项 204
10.4.3 重置密码 205
10.4.4 恢复默认设置 205
10.5 编写程序——选择设置项 205
10.5.1 屏幕初始化 205
10.5.2 设置组件的显示与隐藏 206
10.5.3 原始数据的绑定 207
10.5.4 组件初始化 208
10.5.5 设置选择框的完成选择事件 208
10.6 设置支出二级分类 208
10.6.1 选择支出一级分类 208
10.6.2 修改二级分类 209
10.6.3 删除二级分类 210
10.6.4 新增二级分类 210
10.6.5 测试 211
10.7 设置支出专项 212
10.7.1 选中某个支出专项 213
10.7.2 新增与修改 213
10.7.3 删除 216
10.7.4 测试 217
10.7.5 测试中的问题 218
10.8 设置家庭成员及支付方式 220
10.8.1 选择设置项 220
10.8.2 新增与修改简单项 220
10.8.3 删除简单项 221
10.8.4 测试 222
10.9 完善新增与修改功能 223
10.10 其他设置及返回主菜单 224
10.10.1 密码重置 224
10.10.2 恢复默认设置 225
10.10.3 返回主菜单 226
第11章 简易家庭账本——支出记录 227
11.1 功能描述 227
11.2 数据模型 228
11.2.1 对象模型 228
11.2.2 变量模型 229
11.2.3 预设项列表 230
11.3 界面设计 230
11.4 界面逻辑 231
11.5 编写程序 233
11.5.1 编写过程 233
11.5.2 屏幕初始化 236
11.5.3 选择一级分类 237
11.5.4 新增及修改支出记录 237
11.5.5 选择已输入项及删除选中项 238
11.5.6 输入信息的永久保存 238
11.5.7 返回主菜单 239
11.6 测试与改进 239
11.6.1 屏幕初始化 240
11.6.2 新增支出记录 241
11.6.3 修改及删除 241
11.6.4 保存与返回 242
11.6.5 改进 242
第12章 简易家庭账本——收支查询 244
12.1 功能描述 244
12.1.1 收入查询 244
12.1.2 支出查询 245
12.2 数据模型 245
12.2.1 对象模型 245
12.2.2 动态变量模型 246
12.3 界面设计 247
12.4 技术准备——绘制动态表格 248
12.4.1 表格的属性 249
12.4.2 绘制单页数据表格 251
12.4.3 绘制多页表格 254
12.4.4 选中一行数据 257
12.4.5 选中行的闪烁效果 257
12.4.6 显示页码 260
12.5 界面逻辑 261
12.6 编写程序——声明全局变量并创建过程 263
12.6.1 名副其实的变量 263
12.6.2 不变的变量 264
12.6.3 可以充当变量的过程——有返回值的过程 264
12.6.4 改变世界的过程——无返回值过程 269
12.7 编写程序——事件处理 272
12.7.1 屏幕初始化 272
12.7.2 日期选择事件 273
12.7.3 筛选条件选择程序 273
12.7.4 主筛选项选择程序 274
12.7.5 查询按钮点击程序 274
12.7.6 划屏翻页事件 274
12.7.7 选中单行数据程序 275
12.7.8 与删除单行数据相关的程序 275
12.7.9 数据导出 277
12.7.10 批量删除 277
12.7.11 返回主菜单 278
12.8 测试与改进 278
12.8.1 收入查询测试 278
12.8.2 支出查询测试 282
12.8.3 功能改进——提供操作反馈 289
第13章 简易家庭账本——年度收支汇总 292
13.1 功能描述 292
13.2 数据模型 293
13.2.1 表格数据 293
13.2.2 折线图数据 294
13.2.3 全局变量 295
13.3 技术准备——绘制折线图 296
13.3.1 绘制坐标轴 297
13.3.2 绘制图例 298
13.3.3 写标注文字 299
13.3.4 绘制折线图 301
13.4 用户界面设计 303
13.5 页面逻辑 304
13.5.1 屏幕初始化 304
13.5.2 选中汇总项目 305
13.5.3 数据筛选与汇总 305
13.5.4 返回主菜单 305
13.6 编写程序——创建过程 305
13.6.1 可以充当变量的过程——有返回值过程 305
13.6.2 与绘图相关的过程——无返回值过程 308
13.7 编写程序——事件处理程序 312
13.7.1 屏幕初始化 312
13.7.2 汇总按钮点击程序 313
13.7.3 汇总项目选择程序 313
13.7.4 返回按钮点击程序 314
13.8 测试与改进 314
13.8.1 测试 314
13.8.2 改进 315
第14章 简易家庭账本——分类汇总及其他 318
14.1 技术准备——绘制饼状图 319
14.1.1 数据模型 319
14.1.2 绘图方法 320
14.2 年度收入分类汇总 324
14.2.1 数据模型 324
14.2.2 页面逻辑 325
14.2.3 编写代码——过程与事件处理程序 325
14.3 年度个人收入汇总 331
14.4 年度支出分类汇总 333
14.5 年度专项支出汇总 336
14.6 月度收入、支出分类汇总 338
14.7 使用手册 341
14.7.1 用户界面设计 341
14.7.2 编辑并上传HTML文档 342
14.7.3 测试 342
14.8 开发心得及改进思路 343
14.8.1 开发心得 343
14.8.2 改进方法及思路 346
第15章 数学实验室(一):鸡兔同笼 350
15.1 鸡兔同笼解法之一——手动枚举法 350
15.1.1 功能说明 351
15.1.2 用户界面设计 351
15.1.3 页面逻辑 353
15.1.4 编写代码 353
15.1.5 测试 355
15.1.6 讨论 355
15.2 鸡兔同笼解法之二——程序枚举法 356
第16章 数学实验室(二):素数问题 358
16.1 N是否为素数 358
16.1.1 最“笨”的算法 358
16.1.2 算法的改进 359
16.2 N以内的素数 360
16.2.1 求N以内的素数 360
16.2.2 改造“N是素数”过程 361
第17章 数学实验室(三):公约数与公倍数 363
17.1 求M与N的最大公约数 363
17.1.1 概念陈述 363
17.1.2 概念的数学表示 363
17.1.3 概念的程序表示 364
17.1.4 求任意两个整数的最大公约数 365
17.2 求M与N的最小公倍数 370
17.2.1 问题的数学表示 370
17.2.2 问题的程序表示 370
17.3 小结 372
第18章 数学实验室(四):绘制函数曲线 373
18.1 坐标变换 373
18.1.1 画布坐标系统 373
18.1.2 平面直角坐标系 375
18.1.3 两个坐标系之间的坐标变换 377
18.2 绘制坐标轴 377
18.2.1 界面设计 378
18.2.2 编写代码 379
18.3 绘制二次函数曲线 382
18.3.1 绘制最简单的二次曲线 382
18.3.2 绘制任意系数的二次曲线 384
18.3.3 连续改变系数值 386
18.4 绘制三角函数曲线 388
18.4.1 坐标轴的位置 389
18.4.2 编写过程——绘制正弦函数 389
18.5 小结 391
第19章 寻找加油站 392
19.1 概述 392
19.1.1 功能描述 392
19.1.2 数据来源 393
19.1.3 术语 393
19.1.4 开发步骤 393
19.2 用户界面 394
19.3 应用逻辑设计 395
19.4 编写程序:设置地图尺寸 395
19.4.1 画布宽度的计算公式 396
19.4.2 用代码实现对画布宽度的设定 396
19.4.3 对代码的解释 397
19.5 获取一张地图 398
19.5.1 理解静态地图API 398
19.5.2 编写代码 400
19.6 搜索加油站 401
19.6.1 理解搜索API 401
19.6.2 编写搜索URL 401
19.6.3 为搜索URL编写代码 401
19.6.4 执行搜索操作 401
19.6.5 接收服务器返回的信息 402
19.6.6 为列表选择框设置可选项 404
19.6.7 在地图上显示选中的加油站 405
19.7 中心点的定位 406
19.7.1 GPS定位 406
19.7.2 地址定位 408
19.8 显示全部加油站 412
19.8.1 为名称列表添加选项 412
19.8.2 拼接全部加油站的经纬度字串 412
19.9 地图的左右移动 414
19.10 功能完善及代码整理 414
19.10.1 隐藏地址布局 414
19.10.2 保存当前地址信息 414
19.10.3 代码清单 415
第20章 贪吃蛇 416
20.1 功能说明 416
20.2 用户界面 417
20.3 绘制背景 418
20.3.1 画线与画方块 418
20.3.2 行列与坐标之间的转换 418
20.3.3 绘制方块 419
20.3.4 绘制背景 420
20.4 蛇头的受控移动 420
20.4.1 描述蛇头的位置 420
20.4.2 描述蛇头的方向 420
20.4.3 蛇头的移动 421
20.4.4 蛇头的转向 422
20.5 果子的生成 422
20.6 蛇吃果子 422
20.6.1 记录蛇身位置 423
20.6.2 蛇身加长 423
20.6.3 果子再生与得分增加 424
20.7 碰壁与自吃 425
20.8 附属功能 426
20.8.1 暂停与继续 426
20.8.2 重新开始 426
20.8.3 防止自毁 427
20.8.4 出果位置避开蛇身 428
20.8.5 退出游戏 428
20.9 代码整理 428
20.9.1 常量 428
20.9.2 变量 429
20.9.3 有返回值的过程 429
20.9.4 无返回值的过程 430
20.9.5 事件处理程序 431
第21章 因式分解之十字相乘 432
21.1 功能说明 432
21.1.1 名词解释 432
21.1.2 功能描述 432
21.2 用户界面 433
21.2.1 首页 433
21.2.2 答题页 434
21.3 为首页编写程序 436
21.3.1 屏幕初始化 436
21.3.2 选择难度与题量 436
21.3.3 查看历史记录 437
21.3.4 开始答题及退出 437
21.4 答题页页面逻辑 437
21.5 答题页初始化 439
21.5.1 显示状态信息 439
21.5.2 下拉框数据绑定 440
21.5.3 草纸提示文字 440
21.5.4 题目的生成 441
21.5.5 题目系数——由数值转化为文本 443
21.5.6 形式答案的显示 444
21.5.7 题目的显示 444
21.6 答题 445
21.6.1 选择答案 446
21.6.2 提交答案 447
21.6.3 出下一题 449
21.6.4 可擦写草纸 450
21.7 交卷 450
21.7.1 显示答题结果 451
21.7.2 显示正确答案 453
21.7.3 保存成绩 453
21.7.4 返回首页或再来一次 455
21.8 区分题目难度 456
21.9 应用功能评估 458
21.10 代码整理 459
21.10.1 全局变量 459
21.10.2 过程 459
21.10.3 事件处理程序 460
后记 461
附录A 开发工具、测试方案与学习资源 462
附录B 不同的App Inventor汉化版本 468