Как: One Up 'для очков и раундов в игре? - PullRequest
0 голосов
/ 11 июля 2011
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

Привет, ребята, так что я пытаюсь построить простую игру в рельсах. Его предпосылка состоит в том, чтобы добавить все числа в вашей памяти и набрать наибольшую сумму, которую вы можете в течение предопределенного срока. Сейчас я могу сгенерировать числа и проверить правильность ответов, однако я не знаю, как зациклить метод так, чтобы точки начислялись после каждого успешного раунда.

Я предполагаю, что проблема в том, что для каждого экземпляра "new" он снова устанавливает метод start_game, таким образом обнуляя точки и снова округляя?

1 Ответ

0 голосов
/ 11 июля 2011

Вы правы, каждый раз, когда вы нажимаете «новое» действие, ваша игра начинается заново.Вы могли бы сделать что-то вроде ниже, чтобы заставить это держать несколько запросов на 'new'

  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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...