2011-07-11 68 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

你是對的,每當你點擊'新'動作,它就會重新開始你的遊戲。 你可以做類似下面讓它保持在多個請求「新」

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

偏偏這仍然不'噸讓我晃過輪2 I've也試圖做的,如果會話[:圓] = 0,然後start_game else generate_round。但是,這也會產生相同的結果(停止在第一次增加後添加點和循環。 –