【发布时间】:2014-03-29 23:44:36
【问题描述】:
我正在用 Ruby 制作一个简单的基于文本的井字游戏。我的游戏将首先询问用户他们想要成为 X 还是 O。我使用变量 userSym 来存储用户输入。根据文档,gets 返回 Nil 或 String (Kernel class)。我的代码行为不正常,因为 userSym 变量不是字符串,我不知道为什么。有什么我想念的吗?任何帮助表示赞赏!
puts "Welcome to TicTacRuby!"
puts "Please select your symbol. X goes first, O goes second. "
userSym = ''
begin
userSym = Kernel.gets.match(/XO/)
rescue
puts "Invalid input! Please enter X or O: "
else
userSym.to_s
end
puts userSym.class
puts userSym
userSym == "X" ? first = 1 : first = 0
if first then
puts "You will play as #{userSym}, you will play first."
else
puts "You will play as #{userSym}, you will play second."
end
pamcakes-1015E:~$ ruby tictactoe.rb
Welcome to TicTacRuby!
Please select your symbol. X goes first, O goes second.
X
NilClass
You will play as , you will play first.
【问题讨论】:
-
将
/XO/更改为/[XO]/。这不会完全解决您的问题,但会引导您朝着正确的方向前进,因为您会看到该行返回一个MatchData对象而不是nil。
标签: ruby