编程问题解决方案深入剖析
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
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



