Sha256: 403d58eb70960709bf15d7a58a6d1c97ed8c46113b3d5289e6476802dfba7956

Contents?: true

Size: 1.26 KB

Versions: 21

Compression:

Stored size: 1.26 KB

Contents

require 'fileutils'

require_relative 'snake'
require_relative 'apple'

class Snake
  module Model
    class Game
      WIDTH_DEFAULT = 20
      HEIGHT_DEFAULT = 20
      FILE_HIGH_SCORE = File.expand_path(File.join(Dir.home, '.glimmer-snake'))
      
      attr_reader :width, :height
      attr_accessor :snake, :apple, :over, :score, :high_score
      alias over? over
      
      def initialize(width = WIDTH_DEFAULT, height = HEIGHT_DEFAULT)
        @width = width
        @height = height
        @snake = Snake.new(self)
        @apple = Apple.new(self)
        FileUtils.touch(FILE_HIGH_SCORE)
        @high_score = File.read(FILE_HIGH_SCORE).to_i rescue 0
      end
      
      def score=(new_score)
        @score = new_score
        self.high_score = @score if @score > @high_score
      end
      
      def high_score=(new_high_score)
        @high_score = new_high_score
        File.write(FILE_HIGH_SCORE, @high_score.to_s)
      rescue => e
        puts e.full_message
      end
      
      def start
        self.over = false
        self.score = 0
        self.snake.generate
        self.apple.generate
      end
      
      # inspect is overridden to prevent printing very long stack traces
      def inspect
        "#{super[0, 75]}... >"
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
glimmer-dsl-libui-0.4.20 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.19 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.18 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.17 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.16 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.15 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.14 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.13 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.12 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.11 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.10 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.9 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.8 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.7 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.6 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.5 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.4 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.3 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.2 examples/snake/model/game.rb
glimmer-dsl-libui-0.4.1 examples/snake/model/game.rb