10、编程问题解决方案深入剖析

编程问题解决方案深入剖析

1. 推箱子游戏(Sokoban)

推箱子游戏的代码部分看起来复杂,但实际上有其内在逻辑。代码的前半部分是向用户打印指令字符串,后半部分是一个 case 语句,用于将用户输入与我们研究过的所有方法进行匹配。这个命令行界面可以很容易地被 GUI 方法调用替代,而不会增加太多额外的工作。

在软件设计方面,游戏的界面至关重要。Dennis Ranke 和 Dave Burt 的游戏采用面向行的输入方式,需要按回车键发送移动指令。虽然可以排队输入一长串移动指令,但这对手指来说很累,尤其是在复杂关卡中。他们采用这种方式可能是为了保证可移植性,因为从终端界面读取单个字符在不同操作系统上可能会很棘手。

以下是在不同操作系统上读取单个字符的代码实现:
- Unix 系统

def get_character
  state = `stty -g`
  begin
    system "stty raw -echo cbreak"
    @input.getc
  ensure
    system "stty #{state}"
  end
end
  • Windows 系统
def read_char
  require "Win32API"
  Win32API.new("crtdll", "_getch", [], "L").C
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值