2011-07-11 5 views
0
class GameController < ApplicationController 

    def index 
    @games = Game.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @games } 
    end 
    end 

    def start_game 
    session[:round] = 1 
    session[:points] = 0 
    @round = session[:round] 
    @points = session[:points] 
    end 

    def next_round 
    @round += 1 
    @points += 1200 
    end 

    def game_over 
    puts "Game Over." 
    end 

    def highscore 
    puts "Leaderboard action here." 
    end 

    def generate_round 
    numbers = Array.new(6){rand(9)} 
    @addition = [] 
    @display = numbers 
    numbers.inject do |s, i| 
     @addition << s + i 
     @addition.last 
    end 
    end 

    def new 
    start_game 
    generate_round 
    puts @points 
    puts @round 

    if session[:addition] 
    if not session[:addition].index(params[:guess].to_i).nil? 
     puts "Correct." 
     next_round 
    else 
     game_over 
     puts "Wrong anwser." 
     highscore 
    end 
    end 
    session[:addition] = @addition 
    respond_to do |format| 
     format.html 
    end 
    end 
end 

こんにちは、私は簡単なゲームをレールで構築しようとしています。 その前提は、すべての数字をあなたのメモリに追加し、あらかじめ定義された制限時間内にできる最高額を入力することです。 今、私は数字を生成して正解をチェックすることができますが、成功した各ラウンドの後にポイントが追加される方法でメソッドをループする方法はわかりません。方法:ゲームでポイントとラウンドをワンアップしますか?

"新しい"のそれぞれのインスタンスに対して、start_gameメソッドを再度設定し、ポイントをゼロにして再度ラウンドさせるという問題があると仮定していますか?

答えて

0

あなたは正しいです、あなたが新しいアクションを打つたびに、あなたのゲームをもう一度開始します。ラウンド: あなたはUnfortunetlyこれはまだ私がセッション[場合I`veもやってみました、過去のラウンド2を行くことができdoesnの `tそれは「新しい」

def start_game 
    session[:round] ||= 1 
    session[:points] ||= 0 
    @round = session[:round] 
    @points = session[:points] 
    end 

    def game_over 
    session[:round] = nil 
    session[:points] = nil 
    puts "Game Over." 
    end 
+0

に複数の要求にわたって維持するために取得するには、以下のようなものを行うことができます] = 0、次に、start_game else generate_round。しかし、これも同じ結果をもたらします(最初の増分の後にポイントとラウンドを追加するのを止めます)。 –

関連する問題