使用Sinatra进行的比分和回合

开关退出

最近两个星期,我一直在开发Sinatra应用程序,而我遇到了第一个主要障碍。最近3天,我一直在寻找解决方案,但需要寻求帮助。

我正在使用Sinatra开发一个小型游戏,但在理解一个概念时遇到了麻烦。

游戏跟踪回合和得分。

这是我的一些代码:

#Player Class
class Player
    attr_accessor :name, :guess, :round_score, :total_score
    def initialize 
        @guess = 0
        @round_score = 0
        @total_score = 0
    end
end

#Tracks Round
class RoundCount
    attr_accessor :round
    def initialize
        @round = 0
    end
    def count
        @round += 1
    end
end

helpers do
#New game function.  Makes set number of player classes in @@player array.
    def new_game(players) 
        @@i = RoundCount.new
        @@player = []
        players.times do |x|
            @@player[x] = Player.new
            @@player[x].name = "Player#{x}"
        end
    end

#Calculates score
        def player_score()
        params.each do |x, y|
            @@player.each do |z|
                if z.name == x 
                    z.guess = y.to_i
                    z.round_score = (y.to_i - @@movie[@@i.round].ratings['critics_score'].to_i).abs
                    z.total_score += (y.to_i - @@movie[@@i.round].ratings['critics_score'].to_i).abs
                end
            end
        end
    end

get '/' do
    slim :home
end

get '/players' do
    slim :players
end

post '/numplayers' do
    new_game(params[:numplayers].to_i)
    slim :names
end

post '/names' do
    slim :titles
end

当前,该程序给我错误“警告:从topelevel访问类变量”,并且受到同时在不同计算机上玩的其他用户的影响。

我需要帮助来了解如何在每个视图中跟踪玩家得分和游戏回合,而不受其他运行其他游戏的玩家的影响。

关于如何避免在轮次和得分中使用类变量,同时保留在每个路径和视图中访问它们的方式,有何建议?

托德·雅各布斯

使用会话或Cookies

通常,通过类变量保持服务器端状态会使您的生活更加艰难。通常,还有多种方法可以执行任何操作,但是对于您的用例,我建议您将状态存储在会话变量cookie中

然后,您可以将状态存储在任何可序列化的对象中,例如HashArrayStructOpenSruct这将允许并发用户,并且不再需要您当前正在使用的类变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用OmniAuth Facebook,Sinatra和Datamapper进行“赞”

来自分类Dev

与Sinatra和AngularJS进行跨域会话

来自分类Dev

如何使用jquery-ui,halm和sinatra进行制表符?

来自分类Dev

如何进行CardView回合

来自分类Dev

Ruby和Sinatra,无法将哈希密码与BCrypt进行比较

来自分类Dev

如何进行数字回合?

来自分类Dev

使用activerecord和sinatra的ruby语法(不使用rails)

来自分类Dev

当我不知道将要进行多少回合时,进行多次回合

来自分类Dev

使用Pony Mail和Sinatra时连接被拒绝

来自分类Dev

将ChartKickjs与Sinatra和HAML一起使用

来自分类Dev

Sinatra,Twitter和StringIO

来自分类Dev

通过CanCan对Sinatra进行授权

来自分类Dev

DES程序进行了很多回合。

来自分类Dev

使用现有的数据库和表与Sinatra和Datamapper?

来自分类Dev

Ruby和Sinatra会话问题

来自分类Dev

安装Sinatra和JSon for ruby

来自分类Dev

Ruby和Sinatra会话问题

来自分类Dev

使用变量和IN进行过滤

来自分类Dev

使用 While 和 IF 进行验证

来自分类Dev

如何使用Sinatra和Sequel为我的帖子创建搜索表单?

来自分类Dev

如何使用Sinatra和Datamapper将数组从表单传递到数据库?

来自分类Dev

如何将Kaminari分页宝石与Sinatra和Mongoid一起使用?

来自分类Dev

Sinatra 和 Postgresql——如何使用纯 Sql,也许没有 ActiveRecord

来自分类Dev

比分碰撞

来自分类Dev

共享Sinatra :: Base和Sinatra :: Application类的红宝石代码

来自分类Dev

在Neo4j中进行全文搜索,是否有可能获得比分?

来自分类Dev

回合使用HALF_UP最接近的值

来自分类Dev

在对当前查询使用回合时需要帮助

来自分类Dev

使用Rails 4的多人回合制游戏

Related 相关文章

热门标签

归档