【发布时间】:2020-08-10 10:16:00
【问题描述】:
有人会检查我是否做错了什么吗?
我的 app.rb:
require 'sinatra/base'
require 'sinatra/flash'
require './lib/hangperson_game.rb'
class HangpersonApp < Sinatra::Base
enable :sessions
register Sinatra::Flash
before do
@game = session[:game] || HangpersonGame.new('')
end
after do
session[:game] = @game
end
get '/' do
redirect '/new'
end
get '/new' do
erb :new
#"Hello World!"
end
post '/create' do
@game = HangpersonGame.new(word)
redirect '/show'
end
post '/guess' do
letter = params[:guess].to_s[0]
begin
if letter.nil? || letter.empty? || !((letter=~/^[A-z]$/) == 0)
flash[:message] = "Invalid guess."
elsif !(@game.guess(letter))
flash[:message] = "You have already used that letter."
end
end
redirect '/show'
end
get '/show' do
### YOUR CODE HERE ###
if (@game.check_win_or_lose == :win)
redirect '/win'
elsif (@game.check_win_or_lose == :lose)
redirect '/lose'
else
erb :show
end
end
get '/win' do
### YOUR CODE HERE ###
if (@game.check_win_or_lose != :win)
redirect '/show'
else
erb :win
end
end
get '/lose' do
if (@game.check_win_or_lose != :lose)
redirect '/show'
else
erb :lose
end
end
end
【问题讨论】:
-
是什么触发了错误?
-
我们需要更多信息。任何路线都有效吗?你如何运行你的应用程序?可能与 this answer 有关,但这只是在黑暗中的一个镜头。
-
嗨 Chit Siu,欢迎来到 StackOverflow!请阅读How to Ask,以便我们更好地帮助您。
-
我可以运行它,使用命令 $rerun -- rackup -p $PORT -o $IP
-
更多信息:显示游戏状态,允许玩家输入猜测;可以重定向到赢或输 GET /show 显示可以生成
POST /createGET /new 开始新游戏的表格;更改状态 POST /create Process guess 后重定向到 Show Game;更改状态后重定向到显示游戏 POST /guess 显示“你赢”页面,带按钮开始新游戏 GET /win 显示“你输”页面,带按钮开始新游戏 GET /lose