第1章 编写程序之前 1
1.1 想要做出“那个游戏”应该怎么办 2
1.1.1 做那个游戏时需要什么编程技术 2
1.1.2 那个游戏到底是什么 3
1.1.3 程序是什么 8
1.1.4 这个奇妙的文章到底是什么 9
1.1.5 你的目标有多高 10
1.2 从哪儿开始着手 14
1.2.1 编程语言的学习方法 15
1.2.2 从哪里开始编程 15
1.2.3 找出易于着手的要素 16
1.3 本章想传达的内容 16
第2章 接触存储区~绘制方块~ 17
2.1 运行写下的程序 17
2.2 绘制方块 21
2.2.1 绘制方块的最基本规则 21
2.2.2 这一行代码究竟是什么意思 22
2.2.3 存储区是什么 24
2.2.4 操纵存储区后为什么会出现白点 27
2.2.5 计算机是怎样的设备 27
2.2.6 画面中的点和几号存储区相关联 29
2.2.7 存储区中保存的数值与颜色的关系 33
2.3 在指定位置绘制方块 35
2.3.1 在画面正中央画红色方块 35
2.3.2 加1减1真是麻烦 39
2.3.3 为何从0开始 41
2.3.4 这样就可以绘制那个游戏的画面了吗 45
2.4 本章想传达的内容 46
第3章 循环~让程序变短~ 49
3.1 减少行数 50
3.1.1 在1行中操纵多个存储区 51
3.1.2 为什么是循环 52
3.2 循环的使用方法 53
3.2.1 循环的语法 53
3.2.2 什么可以用于绘制方块 54
3.2.3 不固定数字 55
3.2.4 运行1次后就结束 57
3.2.5 运行2次后就结束 58
3.2.6 想让程序运行16次后结束应该怎么做 61
3.2.7 循环任意次数的方法 62
3.2.8 怎么实现每次循环时对不同像素进行涂色 62
3.3 使用循环绘制方块 66
3.3.1 然而事情并没有那么简单 67
3.3.2 怎么对循环使用循环 69
3.3.3 这个程序的问题在哪里 71
3.3.4 在脑中运行 72
3.3.5 从结果出发进行思考 74
3.3.6 程序不按预期运行时应该怎么办 79
3.3.7 使用循环的价值在哪里 80
3.3.8 要在画面中央绘制方块该怎么办 81
3.4 本章想传达的内容 83
第4章 程序的变形~绘制大量的方块~ 85
4.1 使用循环绘制墙壁 86
4.1.1 循环绘制方块 86
4.1.2 绘制20个 88
4.1.3 照此绘制出右侧和下方的墙壁 91
4.1.4 注释 95
4.2 还想继续缩短 97
4.2.1 将循环合并 98
4.2.2 已经到头了吗 102
4.2.3 能不能把底部也合并进来 103
4.2.4 这就是容易理解的程序吗 108
4.3 本章想传达的内容 109
第5章 将程序分离~更轻松地绘制大量的方块~ 111
5.1 除循环以外,能重复使用同一行的方法 112
5.1.1 使用引用会怎么样 112
5.1.2 引用的易理解性 115
5.2 Sunaba中的“引用” 117
5.2.1 关于运行 119
5.2.2 如何有效利用局部程序 120
5.2.3 每次引用时对不同的点进行涂色 120
5.3 使用局部程序绘制墙壁和底部 121
5.3.1 使用局部程序绘制左右两侧的墙壁 123
5.3.2 局部程序的价值在哪里 128
5.4 改得更易懂些 130
5.4.1 注释的必要性 131
5.4.2 注意“特殊的数字” 132
5.5 本章想传达的内容 138
第6章 会动的程序~让方块下落~ 141
6.1 接下来该做什么 142
6.2 使方块下落 143
6.2.1 试着让点下落 144
6.2.2 让方块下落 146
6.2.3 修正错误 150
6.2.4 修正问题 155
6.3 绘制得更快 158
6.3.1 如何关闭调控功能 159
6.3.2 调控是什么 160
6.3.3 寄信 162
6.4 将目前的成果组合在一起 164
6.4.1 首先是简单地拼在一起 164
6.4.2 绘制墙壁和底部 167
6.4.3 关闭调控 168
6.4.4 将下落的方块移到中间 169
6.5 本章想传达的内容 170
第7章 为存储区起名~更多中文~ 173
7.1 现在的程序有什么问题 174
7.1.1 需要什么样的工具 176
7.1.2 不用自己编号 178
7.2 在Sunaba中为存储区取名 181
7.2.1 先试用一下 182
7.2.2 不需要考虑存储区编号 183
7.3 命名存储区的规则 185
7.3.1 什么时候生成的命名存储区 185
7.3.2 命名存储区只作用于其所在的局部程序 186
7.3.3 从循环的外部无法看到 189
7.4 本章想传达的内容 190
第8章 可以操作的程序~操作方块~ 191
8.1 操作是怎么一回事 192
8.1.1 对键盘做出响应 192
8.1.2 程序是这样了解到外部的内容的 193
8.2 实现可以操作 196
8.2.1 来不及按按键,就算按下也看不出来 196
8.2.2 在程序运行中按下按键 198
8.2.3 移动点 200
8.2.4 关闭调控 201
8.2.5 向其他方向移动 201
8.2.6 移动方块 203
8.3 避免过快地移动 205
8.3.1 先从小处着眼 205
8.3.2 “不能持续移动”代表什么意思 206
8.3.3 怎么知道“上次没有按下” 207
8.3.4 查看完白板后决定做什么 209
8.3.5 想到式子 211
8.3.6 上下左右移动 214
8.3.7 回到方块 216
8.4 移动下落中的方块 217
8.4.1 绘制两壁和底部,完成现在可以进行的改造 218
8.4.2 使方块下落 220
8.5 本章想传达的内容 220
第9章 “计算”本来的意思~缓慢下落~ 223
9.1 什么是缓慢下落 224
9.1.1 不会每次都发生移动的程序 225
9.1.2 之前移动了的话这次不移动 226
9.1.3 使用除法 228
9.1.4 另一个方法 230
9.2 有条件运行 231
9.2.1 有选择地运行某一行 231
9.2.2 仅循环1次就停止 233
9.2.3 有条件运行是否有用 235
9.3 Sunaba中的有条件运行 237
9.3.1 之前的例子会变成什么样 237
9.3.2 缓慢画线 238
9.3.3 将目前的成果组合起来 240
9.3.4 整理针对持续按下的对策 242
9.4 计算的本质 245
9.4.1 什么是条件表达式成立 245
9.4.2 “<”到底是什么? 247
9.4.3 Sunaba的计算符号 248
9.4.4 那么使用一下 249
9.4.5 尝试使用 251
9.5 本章想传达的内容 254
第10章 批量使用存储区~堆积方块~ 257
10.1 碰撞是什么意思 258
10.1.1 碰撞到底部是什么意思 258
10.1.2 试着碰撞墙壁 263
10.1.3 思考接下来会发生的事情 266
10.2 批量使用存储区 267
10.2.1 将问题转换 268
10.2.2 按照堆积顺序记忆 269
10.2.3 记住所有格子的状态 272
10.2.4 比较两种方法 275
10.3 堆积 277
10.3.1 整理一下具体做法 277
10.3.2 出发点 278
10.3.3 碰撞到底部后,就堆积到那里 279
10.3.4 让新的方块出现 280
10.3.5 在底部以外也堆积起来 283
10.3.6 想要改得更短 286
10.3.7 重新引入墙壁和左右移动的内容 289
10.3.8 对程序进行整理 292
10.3.9 “使之堆积”的局部程序 295
10.3.10 下落速度和长按时的对策 297
10.4 本章想传达的内容 300
第11章 为存储区起名进阶版~消除横行~ 303
11.1 首先单单考虑消除 304
11.1.1 大致顺序 304
11.1.2 消除程序 305
11.1.3 进行组合 310
11.1.4 更轻松地进行确认 312
11.1.5 确认是否无法下落 314
11.2 对程序加以改良 315
11.2.1 指定编号的存储区不能起名 315
11.2.2 在局部程序中使用局部程序时 318
11.2.3 为局部程序传递信息的新方法 320
11.2.4 使用“输入” 323
11.2.5 引入“输入”后问题是否得以解决 325
11.2.6 在整个程序中使用输入 327
11.3 落下 330
11.3.1 最简单的例子 330
11.3.2 写成程序 332
11.3.3 上方堆积有大量方块时的情况 335
11.3.4 让上方堆积着的方块全部下落 337
11.3.5 另一种做法 340
11.3.6 哪一个更好些 342
11.4 本章想传达的内容 343
第12章 将所有内容组合起来~旋转方块~ 345
12.1 增加为2个 347
12.1.1 降落中的方块是怎样表示出来的呢 347
12.1.2 绘制出2个红色方块的单纯方法 348
12.2 旋转是怎么回事 352
12.2.1 忘掉旋转以外的内容 352
12.2.2 从结果开始思考 354
12.2.3 旋转共分4种 356
12.2.4 更聪明的写法 359
12.3 添加旋转之前 362
12.3.1 回想起2个方块并排排列的程序 362
12.3.2 将程序整理得小一些 364
12.3.3 重新考虑查看能否正常运行的方法 367
12.3.4 其他做法 369
12.3.5 停止保存2个格子的位置 375
12.3.6 充分利用局部程序 377
12.3.7 局部程序的输出 379
12.3.8 已经整理得差不多了吧 380
12.4 添加旋转功能 382
12.4.1 添加旋转后会发生的变化 382
12.4.2 大致写出来 384
12.4.3 追加输入的局部程序 386
12.4.4 计算格子的位置 388
12.4.5 真正进行旋转 389
12.5 可以正常运行吗 392
12.5.1 果然有问题 392
12.5.2 应该是怎样的问题 394
12.5.3 修正 395
12.6 本章想传达的内容 400
第13章 “表格”这个思考方式~完成游戏~ 403
13.1 3个3个下落 403
13.1.1 在程序中,2和3的不同之处 404
13.1.2 3个格子的连接方式并非只有1种 406
13.1.3 编写程序 408
13.1.4 绘制出2种形状 409
13.1.5 加入旋转 413
13.1.6 “表格”这个思考方式 415
13.1.7 事先做出表格 420
13.2 4个4个下落 422
13.2.1 3格与4格有什么不同 422
13.2.2 变成4格后会有多少种类 425
13.2.3 确定基准格子和旋转前的形状 427
13.2.4 编写程序 428
13.2.5 到此为止合适吗 431
13.2.6 为了省事 432
13.2.7 那个表格中记录着怎样的内容 433
13.2.8 缩减有关旋转的表格 434
13.2.9 进一步缩减有关旋转的表格 438
13.3 本章想传达的内容 445
第14章 走出沙地~一个开端的结束~ 447
14.1 目前为止使用过的思考方式 447
14.1.1 从结果出发进行思考 448
14.1.2 提问的方法 448
14.1.3 目标和手段 450
14.1.4 准备多个选项 451
14.1.5 总结 452
14.2 为了更进一步 452
14.2.1 再多玩一会儿Sunaba 453
14.2.2 转向实用语言 454
14.3 实用语言的难点 455
14.3.1 想要进入能够使用的状态很麻烦 455
14.3.2 运行的工序 455
14.3.3 语法复杂 456
14.3.4 要绘制图形或发出声音并不容易 456
14.3.5 面向对象程序设计 457
14.3.6 需要英语能力 458
14.3.7 看不到存储区 459
14.3.8 推荐JavaScript 460
结语 463