Dogpile School by RoePipi



类型
标签
游戏介绍
简介
============
我的灵感来自 AvlixA 的作品 Petwalk(2021 年参赛作品)。我非常喜欢在附近洒满阳光的草地上散步。当然,前提是得避开所有的狗屎。这款游戏将帮助你掌握避障方法。
“这将是易如反‘屎’(Easy pi(l)e,谐音 Easy pie)的一件事”——我在勾勒程序大纲时对自己说。——“它是一个简单的移动类游戏,带有一些额外的特性,例如:”
特性
========
- 全屏、多色的粪堆游戏区域
- 瞬间隐藏和显示所有粪堆
- 操纵杆控制(包括对角线移动)
- 快速的游戏节奏
- 安全启动:在垂直移动第一步时隐藏粪堆
- 每关有一次途中显影粪堆的机会
- 等级划分和契合的主题结局
- 三种不同的音效!!
- 游戏内指令说明
所以开发很快就超出了控制。我花了几天时间才把每一行代码缩减到 80 个字符以内。最后,只剪掉了一些字母和一点音效的多样性。
游戏指南
=================
请在端口 1 使用模拟或真实的操纵杆。(注意:YAPE 模拟器有时在处理模拟操纵杆时会出现问题,请确保每个方向都能正常工作。)你从 GRADE 1(1级)开始。屏幕上会出现一堆狗屎(在后面的关卡中会更多)。你的角色位于底部,你需要到达顶行(任何列均可)。首先,左右移动摇杆,尝试进入一条转向最少的“车道”。一旦你向上迈出一步,所有的粪堆都会隐藏起来,你必须凭记忆进行操作。如果你踩到了狗屎,你就必须在该等级离开学校,让下一位玩家尝试。每关你有一次按下触发键来显影所有粪堆的机会。移动一步后,它们会永久消失。在后面的关卡中(共有 8 关),你需要精确的规划和步数计算才能成功。
程序行概览
======================
使用 LIST 命令查看程序行。你可以使用 LIST from-to 语法列出特定的区间,例如 LIST 0-4。
(其中包括:操纵杆方向数据)
0 初始化:设置音量、常量、函数、数组
1 初始化:设置更多常量、背景;打印说明;设置多色模式;稍作等待
2 下一关:重置垂直移动;等级提升;打印等级;稍作等待;将背景色设置为多色模式下的色调;清屏;设置额外颜色;循环开始;播放掉落音效
3 随机放置狗屎;循环结束;设置起始坐标;打印说明
4 主循环:如果踩到狗屎,转到 8;否则放置玩家;如果到达顶行,打印喝彩声;转到 9
5 等待操纵杆输入;如果仅按下触发键且玩家不在底行且允许显影,则禁用显影,显示狗屎,设置可见标志,转到 4;否则记录当前玩家位置,聚焦于不含触发键的操纵杆方向
6 如果移动了操纵杆,则播放脚步声,更新并限制 X、Y 坐标,擦除记录位置的玩家图标;否则转到 4
7 如果狗屎可见,且玩家离开了底行,则取消可见标志,隐藏狗屎,打印更多说明;转到 4
8 失败:播放踩到狗屎的音效;显示所有狗屎;打印失败消息、当前等级,呼叫下一位玩家;稍作等待;重置程序
9 关卡结束:如果等级小于 8,则转到 2;否则打印成功消息,等待按键,重置程序
色彩技巧
============
如果所选字符仅使用全局(多)颜色(颜色 2 和 3,因为颜色 1 取决于不同位置),则可以将所有狗屎的颜色一次性设置为与背景相同(颜色 0)。因此,只有 01 和 10 可用于匹配字符(11 被设置为与背景相同)。在此模式下,“左上曲线”字符(#85)与狗屎最相似。颜色 1 的代码必须比通常高 #8 才能开启该特定位置的多色模式。设置颜色 3 存在 Bug,无法通过 COLOR 指令生效,因此我改用了 POKE 指令。
函数
=========
FNP() 根据 X,Y 坐标计算 POKE 地址 (=3072+X+Y*40)
变量
=========
const B 背景颜色代码 (117)
const F 触发键代码 (128)
G 等级 (Level) (1-8)
I 循环/临时变量
J 操纵杆输入 (0-8, 128-136)
const K =1024
const M 模式 POKE 地址 ($FF17=65303)
R 是否允许显影 (0/1025)
const S 狗屎字符代码 (85)
const T =16
const T$ 擦除顶行,准备打印字符串
V 粪堆是否可见?(移动时设为 0)(0/1)
X 放置狗屎时的临时变量 (0-~920)
X,Y 玩家坐标 (0-39, 0-24)
const X(0-8),Y(0-8) 操纵杆方向数据 (-1/0/1)