diff --git a/app/controllers/guesses_controller.rb b/app/controllers/guesses_controller.rb index a22b504..f6fa1c6 100644 --- a/app/controllers/guesses_controller.rb +++ b/app/controllers/guesses_controller.rb @@ -1,18 +1,26 @@ class GuessesController < ApplicationController def create @game = current_user.games.find(params[:game_id]) - @game.guess(current_user, params[:guess][:letter]) + if @game.guesses.count >=3 + @game.guess_word(current_user, params[:guess][:letter]) + else + @game.guess(current_user, params[:guess][:letter]) + end + win + end + + + def win if @game.complete? - if @game.guesses.wrong.count < 7 + + + if @game.winner? flash.notice = "You won! You're pretty much a pro." - elsif @game.guesses.wrong.count < 12 - flash.notice = "You won! You're decent." - elsif @game.guesses.wrong.count < 16 - flash.notice = "You won! You kinda suck, with #{@game.guesses.wrong.count} wrong guesses, but you made it." else - flash.notice = "You finished the game! Not sure if I'd call it winning since you took #{@game.guesses.wrong.count} wrong guesses; you basically pound on the keyboard like a gorilla." + flash.notice = "You lost! --with #{@game.guesses.wrong.count} wrong guesses" end end redirect_to @game end + end diff --git a/app/models/game.rb b/app/models/game.rb index c4932b7..b64c82d 100644 --- a/app/models/game.rb +++ b/app/models/game.rb @@ -1,7 +1,7 @@ class Game < ActiveRecord::Base belongs_to :word has_and_belongs_to_many :users - has_many :guesses + has_many :guesses validates_presence_of :word before_validation :choose_word, :on => :create @@ -13,7 +13,7 @@ def choose_word def generate_masked_word positions = [] - positions = (positions + [rand(word.text.length)]).uniq until positions.length == 2 + positions = (positions + [rand(word.text.length)]).uniq until positions.length == 4 masked_word = word.text.gsub(/./, '*') positions.each {|n| masked_word[n] = word.text[n] } self.masked_word = masked_word @@ -33,7 +33,19 @@ def guess(user, letter) guesses.create! :user => user, :letter => letter, :hit => hit end + def guess_word(user, w) + if w == word.text + update_attribute :masked_word, w + end + end + + def complete? + guesses.count >= 4 + end + + def winner? masked_word == word.text end + end diff --git a/app/views/games/show.html.erb b/app/views/games/show.html.erb index 7d12052..e70dde1 100644 --- a/app/views/games/show.html.erb +++ b/app/views/games/show.html.erb @@ -4,6 +4,17 @@ <%= g.text_field :letter %> <% end %> +
+ Hint:
+ <%= @game.word.meaning %>
+ <% if @game.guesses.count >=3 %>
+
+ Guess the word!
+ <% else %>
+
+ <% end %>
+
Guesses: