Sha256: f734585e993d1b670997d5dfc46a1c5e097c0413ef484226a491e2fa95937c5b

Contents?: true

Size: 1.53 KB

Versions: 121

Compression:

Stored size: 1.53 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, :paused
      alias over? over
      alias paused? paused
      
      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
      
      def pause
        self.paused = true
      end
      
      def resume
        self.paused = false
      end
      
      def toggle_pause
        unless paused?
          pause
        else
          resume
        end
      end
      
      # inspect is overridden to prevent printing very long stack traces
      def inspect
        "#{super[0, 75]}... >"
      end
    end
  end
end

Version data entries

121 entries across 121 versions & 2 rubygems

Version Path
glimmer-dsl-swt-4.30.1.0 samples/elaborate/snake/model/game.rb
glimmer-dsl-libui-0.12.7 examples/snake/model/game.rb
glimmer-dsl-libui-0.12.6 examples/snake/model/game.rb
glimmer-dsl-libui-0.12.5 examples/snake/model/game.rb
glimmer-dsl-libui-0.12.4 examples/snake/model/game.rb
glimmer-dsl-libui-0.12.3 examples/snake/model/game.rb
glimmer-dsl-libui-0.12.2 examples/snake/model/game.rb
glimmer-dsl-libui-0.12.1 examples/snake/model/game.rb
glimmer-dsl-libui-0.12.0 examples/snake/model/game.rb
glimmer-dsl-libui-0.11.10 examples/snake/model/game.rb
glimmer-dsl-libui-0.11.9 examples/snake/model/game.rb
glimmer-dsl-libui-0.11.8 examples/snake/model/game.rb
glimmer-dsl-swt-4.30.0.0 samples/elaborate/snake/model/game.rb
glimmer-dsl-libui-0.11.7 examples/snake/model/game.rb
glimmer-dsl-libui-0.11.6 examples/snake/model/game.rb
glimmer-dsl-libui-0.11.5 examples/snake/model/game.rb
glimmer-dsl-libui-0.11.4 examples/snake/model/game.rb
glimmer-dsl-libui-0.11.3 examples/snake/model/game.rb
glimmer-dsl-libui-0.11.2 examples/snake/model/game.rb
glimmer-dsl-libui-0.11.1 examples/snake/model/game.rb