Codejie's C++ Space

Using C++

I;P : Online Manual

快捷链接

    下载地址

    相关随笔

 

正文

    I;P (I'm a Programmer)是一款Android平台下类似"推箱子"的益智游戏, 其玩法是通过逻辑判断和控制完成游戏各关卡设定, 当玩家将游戏中的'箱子'安装关卡要求的方式摆放时即为通关. 由于游戏本身是倾向于程序员, 工程师或者算法爱好者的, 而且我也认为通过此游戏可以培养和锻炼个人的"编程思维", 因此游戏的名字在一开始就被定为 I;P (I'm a Programmer)了, 这个全称到缩写的过程也就构成了游戏的起始画面.

ip_1 ip_2

 

    I;P关卡一共分为六大类, 分别是'Tutorials'(教程),'Easy'(容易), 'Hard'(难), 'Crazy'(疯狂), 'Impossible'(不可能)和'Unsolved'(未解决)[(原谅我界面全部都是英文, 因为现在真没时间加载中文字库...)], 理论上除第一个是教程外, 后面的关卡是越来越难. 目前由于是Preview阶段, I;P的关卡有限, 且分类还是比较混乱的, 后续会根据反馈进行相应的调整.

ip_3

    这里建议先从'Tutorias'开始, 因为这是一个包含三个关卡的教程包. 游戏将引导你通过三个关卡, 并在过程中提示该如何使用游戏中的各个元素.

ip_8 ip_9

    当选择一个关卡后, I;P进入关卡界面, 在此界面中, 主要元素为左上的"箱子初始"摆放, 右上的"箱子目标"摆放; 而左下的四条长方形构成的区域为玩家"控制指令区", 可以在此区域内输入你的"指令"集, 以"控制"上方"箱子"区域中的"托盘"来移动相应的"箱子"; 界面中最右侧是"菜单"区域, 游戏中的菜单都集中在此, 并会根据不同场景显示不同的菜单. 需要注意的是整个界面的最右下方的"运行"按钮 -- 当"指令"输入完成时, 点击此钮开始执行你的指令, 而在执行过程中的任何时候或者执行完毕, 点击此钮, 界面将恢复到其初始状态.

ip_10

    一, 箱子

    I;P中一共有四种箱子, 分别由'蓝色','绿色','红色'和'黄色'四种颜色标识. 游戏规则也要求在摆放箱子时'颜色'要一致.

box_abox_bbox_cbox_d

 

    二, 指令

    I;P提供了四个输入列(从f0到f3), 每一个列都包含了八个控制框和八个判断框, 就是说一个列最多可以包含十六个指令. 但各个输入列可以相互调用, 比如在f0中可以输入'f1', 意味着f0将调用f1中的指令.

lines_small_title_alines_small_title_blines_small_title_clines_small_title_d

    由于输入列有两种状态: 输入和展示, 因此游戏中每个指令都有两种不同的形式.

    点击任何一个输入列(f0~f1), 都可以切换其到输入状态, 此时可以点击指定的控制框或者判断框, 以选择自己所需的各个指令.

columns

    "控制指令"用于控制黑色的"托盘"的行为:

    lines_small_code_right 向右移动一格;

    lines_small_code_left 向左移动一格;

   lines_small_code_act  "充电"; 当"托盘"被要求"充电"时, 如果其上放置了"箱子", "托盘"将"释放其上的"箱子", "箱子"将自动移动到"最上"可以到达的位置; 反之, 如果"托盘"上没有任何的"箱子", 托盘将尝试从其所在的列中"抓取"一个箱子, 如果没有, 则什么也不做;

    lines_small_code_call_a 调用f0输入列

    lines_small_code_call_b 调用f1输入列

    lines_small_code_call_c 调用f2输入列

    lines_small_code_call_d 调用f3输入列

 

    "判断指令"用于判断当前"托盘"上的"箱子"状态的;  当"判断"结果为"真"时, 游戏将执行其后的"控制指令", 反之不执行其后的"指令", 而是调用下一个判断框中的"判断指令"或是下一个控制框中的"指令"; 也就是说, "判断指令"只能影响到其后的一个"控制指令", 即一对一关系.

    panel_code_if_a lines_small_code_if_a lines_big_code_if_a 判断"托盘"上的箱子为"蓝色"箱子;

    panel_code_if_b lines_small_code_if_b lines_big_code_if_b 判断"托盘"上的箱子为"绿色"箱子;

    panel_code_if_c lines_small_code_if_c lines_big_code_if_c 判断"托盘"上的箱子为"红色"箱子;

    panel_code_if_d lines_small_code_if_d lines_big_code_if_d 判断"托盘"上的箱子为"黄色"箱子;

    panel_code_if_any lines_small_code_if_any lines_big_code_if_any 判断"托盘"上的箱子为任意颜色的箱子;

    panel_code_if_none lines_small_code_if_none lines_big_code_if_none 判断"托盘"上的箱子没有箱子;

 

    游戏每次都从f0输入列的第一个指令框开始安装顺序执行, 因此必须指令必须从f0开始输入, 当执行过程中碰到一个'空'的控制指令时, 即调用的控制框中没有任何指令时, 执行过程停止, 并显示'Code Finished'指示.    

    由上面内容我们可以看出, 实际输入过程就是编写"代码"的过程, "判断指令"即为'if'判断代码, 而'控制指令'即为要执行的命令代码, 而"输入列"就对应了代码中的函数.

    比如下面截图可以转换成相应的代码:

cods

 

f0() {

    if (托盘上的箱子==白色) {

        充电();

    }

    if (托盘上的箱子 == 黄色) {

        左移();

    }

    ....

    if (托盘上有箱子) {

        调用f1();

    }

}       

    三, 执行结果

    I;P中有四种执行结果;

    成功: 将箱子按照关卡要求的位置摆放;

result_succ

    执行完毕: 指令全部执行完毕, 但未完成关卡要求;

result_finished

    指令异常:  指令执行时使"托盘"移动出边界;

result_failed

    栈溢出: 输入列调用次数过多;   

result_overflow

 

    四, 分数

     当关卡通过时, 游戏会显示当前指令的得分已经关卡的标准分数, 这个分数是越小越好, 因为分数是跟指令数量和类型相关的, 越少的指令通关也就越好. 注意的是, 根据指令计算分数时, 未执行到的指令一样会被统计, 因此需要注意删除无用指令, 以降低通关分数.

    如下图, 30/24中, 前面的分数为当前指令得分, 后面的24为关卡标准分数.

ip_5

    五, 菜单项

    I;P有三级菜单, 根据不同的场景显示相关的菜单项;

    cmd_clean_up : 清除当前指令

    cmd_more_up: 显示更多菜单项

    cmd_info_up: 显示关卡信息

   cmd_setup_up : 显示游戏配置项

   cmd_close_up : 退出当前关卡, 切换至关卡选择界面

    cmd_back_up: 返回当前关卡

   cmd_next_up : 退出当前关卡, 切换至下一关卡

    cmd_share_up : 分享当前通关界面

ip_6

cmd_enable_debug_downcmd_enable_debug_checked : 设置/取消Debug状态, 此状态开启, 可以使用'单步执行'功能;

cmd_debug_down : 处于Debug状态时, 执行一条指令, 执行后自动暂停;

cmd_debug_over_up : 处于Debug状态时, 不再单步执行指令, 而是直接执行完毕;

    六, 配置项

    游戏有三个配置项:

    'Clock Speed': 时钟速度, 就是指令执行速度; 有三个档位可以选择;

    'Music': 开启或关闭游戏背景音乐;

    'Sound': 开启或关闭游戏内置音效;

ip_7

 

    七, 交流

    通过微信扫描下面二维码, 即可加入'I;P'临时群;

 

wechat

   

    有任何问题和建议, 请跟帖或发mail来~谢谢了~

posted on 2014-03-07 13:54 codejie 阅读(1103) 评论(2)  编辑 收藏 引用 所属分类: I;P

评论

# re: I;P : Online Manual 2014-03-28 21:47 江育齊

關於棧的問題 問下最多訂用次數和深度?  回复  更多评论   

# re: I;P : Online Manual 2014-03-28 23:30 codejie

@江育齊
目前深度是512, 超过会返回"stack overflow"错误; 实际情况下会有无限循环的可能, 比如两个都为空的fx, 相互调用.  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


公告

Using C++

导航

统计

留言簿(73)

随笔分类(513)

积分与排名

最新评论

阅读排行榜

评论排行榜