minesweeper-curses 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2039f5bcd5de35121f6f1d4018769ab714ddb044
4
- data.tar.gz: 3e225649c8b9be84ea534de481f4acd24fea5843
3
+ metadata.gz: 64be9ef9dc42505ad9ad3ffb3fcfd36b96764b33
4
+ data.tar.gz: 543fecb9214ee82fe7322f912c00bd0a38649dc6
5
5
  SHA512:
6
- metadata.gz: d564d8a4a4ce20bfc6f9896e7b64aad95cf39d379c2798808febb4c41b94644a13b330c40e51a0659cd4d03fed5928dcb36aed077052d66f0b0da2a3bcba9179
7
- data.tar.gz: df398eded885b498bd6f0c2c80ea2815aa14b11a2a8ce4f03dde0d3350455d1bf4531d12985abeb14a6aa44036027be6cc9db7e150291074e5acc5166ee050e7
6
+ metadata.gz: 78a7c34b9471a412186efb69ca487ad817b597208cec909d9cd20bec4cfa4d59649e15f1680d46d432fd1229930bcfdf7cfaa276348591698705353807b89280
7
+ data.tar.gz: 4f84c02f4a405d629f0b6e3aeec7b7cafac85a99a249b804e3e2d84ac1268ac0eee7cd9435c6696e245ed8eecbff640dced226af69eeda14ce556e4d43c03743
data/.rubocop.yml ADDED
@@ -0,0 +1,24 @@
1
+ Metrics/LineLength:
2
+ Max: 120
3
+ # To make it possible to copy or click on URIs in the code, we allow lines
4
+ # containing a URI to be longer than Max.
5
+ AllowHeredoc: true
6
+ AllowURI: true
7
+ URISchemes:
8
+ - http
9
+ - https
10
+ # The IgnoreCopDirectives option causes the LineLength rule to ignore cop
11
+ # directives like '# rubocop: enable ...' when calculating a line's length.
12
+ IgnoreCopDirectives: false
13
+ # The IgnoredPatterns option is a list of !ruby/regexp and/or string
14
+ # elements. Strings will be converted to Regexp objects. A line that matches
15
+ # any regular expression listed in this option will be ignored by LineLength.
16
+ IgnoredPatterns: []
17
+
18
+ Metrics/BlockLength:
19
+ CountComments: false
20
+ Max: 25
21
+ ExcludedMethods: []
22
+ Exclude:
23
+ - Rakefile
24
+ - spec/**/*.rb
data/Gemfile CHANGED
@@ -4,5 +4,6 @@ source 'https://rubygems.org'
4
4
 
5
5
  gemspec
6
6
 
7
+ gem 'coveralls', require: false
7
8
  gem 'pry'
8
9
  gem 'simplecov', '~> 0.11.2'
data/Gemfile.lock CHANGED
@@ -1,12 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- minesweeper-curses (0.1.1)
4
+ minesweeper-curses (0.1.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  coderay (1.1.1)
10
+ coveralls (0.8.13)
11
+ json (~> 1.8)
12
+ simplecov (~> 0.11.0)
13
+ term-ansicolor (~> 1.3)
14
+ thor (~> 0.19.1)
15
+ tins (~> 1.6.0)
10
16
  curses (1.0.2)
11
17
  diff-lcs (1.3)
12
18
  docile (1.1.5)
@@ -39,21 +45,26 @@ GEM
39
45
  simplecov-html (0.10.0)
40
46
  slop (3.6.0)
41
47
  sqlite3 (1.3.13)
48
+ term-ansicolor (1.6.0)
49
+ tins (~> 1.0)
50
+ thor (0.19.4)
51
+ tins (1.6.0)
42
52
 
43
53
  PLATFORMS
44
54
  ruby
45
55
 
46
56
  DEPENDENCIES
47
57
  bundler (~> 1.14)
58
+ coveralls
48
59
  curses (~> 1.0.2)
49
60
  minesweeper-curses!
50
61
  minitest (~> 5.0)
51
62
  pry
52
63
  rake (~> 10.0)
53
64
  rspec (~> 3.6.0)
54
- sequel
65
+ sequel (~> 4.46.0)
55
66
  simplecov (~> 0.11.2)
56
- sqlite3
67
+ sqlite3 (~> 1.3.13)
57
68
 
58
69
  BUNDLED WITH
59
70
  1.14.6
@@ -53,7 +53,7 @@ module Minesweeper
53
53
  open_cell(cury, curx)
54
54
  play(cury, curx)
55
55
  when SPACE
56
- trigger_bomb_flag(cury, curx)
56
+ toggle_bomb_flag(cury, curx)
57
57
  play(cury, curx)
58
58
  end
59
59
  end
@@ -79,20 +79,12 @@ module Minesweeper
79
79
  window.setpos(0, 1)
80
80
  end
81
81
 
82
- def debug(args = {})
83
- window.setpos(20, 20)
84
- str = ''
85
- args.each { |k, a| str << "| #{k} #{a} |" }
86
- window.addstr(str)
87
- window.setpos(cury, curx)
88
- end
89
-
90
82
  def open_cell(y, x)
91
83
  cell_x = x / 3 # / 3 because rendered cell 3 chars
92
84
  open_original(y, cell_x)
93
85
  end
94
86
 
95
- def trigger_bomb_flag(y, x)
87
+ def toggle_bomb_flag(y, x)
96
88
  cell_x = x / 3 # / 3 because rendered cell 3 chars
97
89
  cell = cells[y][cell_x]
98
90
  cell.toggle_bomb_flag!
@@ -168,7 +160,7 @@ Game Stats: you have found #{found_bombs_count} out of #{bombs.count} bombs
168
160
  echo
169
161
  Minesweeper::GameInitializer.new.start
170
162
  when 'r', 'R'
171
- Minesweeper::BoardBuilder.from_board(self).build.play
163
+ Minesweeper::BoardBuilder.new(window, flush_params: false).build.play
172
164
  end
173
165
  end
174
166
 
@@ -2,10 +2,6 @@ module Minesweeper
2
2
  class BoardBuilder
3
3
  extend Forwardable
4
4
 
5
- def self.from_board(board)
6
- new(board.window, flush_params: false)
7
- end
8
-
9
5
  def initialize(window, flush_params:)
10
6
  @window = window
11
7
  @params_builder = Minesweeper::BoardParams.new(window, flush_params)
@@ -1,16 +1,5 @@
1
1
  module Minesweeper
2
2
  class BoardParams
3
-
4
- # how about more sophisticated solution
5
- DB = Sequel.sqlite
6
- DB.execute <<-SQL
7
- CREATE TABLE IF NOT EXISTS board_params (
8
- height integer,
9
- width integer,
10
- level varchar(255)
11
- );
12
- SQL
13
-
14
3
  DEFAULTS = { height: 10, width: 10, level: 'advanced' }.freeze
15
4
 
16
5
  attr_reader :window, :flush_params
@@ -22,34 +11,26 @@ module Minesweeper
22
11
  end
23
12
 
24
13
  def height
25
- read[:height]
14
+ storage.read[:height]
26
15
  end
27
16
 
28
17
  def width
29
- read[:width]
18
+ storage.read[:width]
30
19
  end
31
20
 
32
21
  def level
33
- read[:level]
34
- end
35
-
36
- def prepare
37
- flush_storage if flush_params
38
- read || build
22
+ storage.read[:level]
39
23
  end
40
24
 
41
25
  private
42
26
 
43
- def table
44
- DB[:board_params]
45
- end
46
-
47
- def read
48
- table.first
27
+ def prepare
28
+ storage.flush if flush_params
29
+ storage.read || build
49
30
  end
50
31
 
51
- def flush_storage
52
- DB[:board_params].delete
32
+ def storage
33
+ ::Minesweeper::Storage.instance
53
34
  end
54
35
 
55
36
  def build
@@ -57,11 +38,11 @@ module Minesweeper
57
38
  window.setpos(4, 42)
58
39
  str = window.getstr
59
40
  if str.casecmp('y').zero?
60
- table.insert(DEFAULTS)
41
+ storage.insert(DEFAULTS)
61
42
  else
62
- table.insert(height: ask_y, width: ask_x, level: ask_level)
43
+ storage.insert(height: ask_y, width: ask_x, level: ask_level)
63
44
  end
64
- read
45
+ storage.read
65
46
  end
66
47
 
67
48
  def ask_x
@@ -16,8 +16,11 @@ module Minesweeper
16
16
  window.addstr("Welcome to Minesweeper \n")
17
17
  window.addstr("screen size: rows: #{window.maxy}; columns: #{window.maxx} \n")
18
18
  window.addstr("controls: `space` to mark/unmark cell as bomb, `arrow keys` to navigate \n")
19
- board = Minesweeper::BoardBuilder.new(window, flush_params: true).build
20
- board.play
19
+ Minesweeper::BoardBuilder
20
+ .new(window, flush_params: true)
21
+ .build
22
+ .play
23
+ rescue SystemExit, Interrupt
21
24
  ensure
22
25
  close_screen
23
26
  at_exit { puts 'good bye' }
@@ -0,0 +1,34 @@
1
+ require 'singleton'
2
+
3
+ module Minesweeper
4
+ class Storage
5
+ include Singleton
6
+
7
+ DB = Sequel.sqlite
8
+ DB.execute <<-SQL
9
+ CREATE TABLE IF NOT EXISTS board_params (
10
+ height integer,
11
+ width integer,
12
+ level varchar(255)
13
+ );
14
+ SQL
15
+
16
+ def read
17
+ table.first
18
+ end
19
+
20
+ def flush
21
+ table.delete
22
+ end
23
+
24
+ def insert(**args)
25
+ table.insert(args)
26
+ end
27
+
28
+ private
29
+
30
+ def table
31
+ DB[:board_params]
32
+ end
33
+ end
34
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Minesweeper
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
data/lib/minesweeper.rb CHANGED
@@ -6,6 +6,7 @@ include Curses
6
6
  require 'pry'
7
7
  require 'forwardable'
8
8
  require 'sequel'
9
+ require_relative 'minesweeper/storage'
9
10
  require_relative 'minesweeper/board'
10
11
  require_relative 'minesweeper/board_builder'
11
12
  require_relative 'minesweeper/board_params'
data/minesweeper.gemspec CHANGED
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
35
35
  spec.add_development_dependency 'rake', '~> 10.0'
36
36
  spec.add_development_dependency 'minitest', '~> 5.0'
37
37
  spec.add_development_dependency 'curses', '~> 1.0.2'
38
- spec.add_development_dependency 'sequel'
39
- spec.add_development_dependency 'sqlite3'
38
+ spec.add_development_dependency 'sequel', '~> 4.46.0'
39
+ spec.add_development_dependency 'sqlite3', '~> 1.3.13'
40
40
  spec.add_development_dependency 'rspec', '~> 3.6.0'
41
41
  end
data/readme.md CHANGED
@@ -1,4 +1,5 @@
1
1
  [![Build Status](https://travis-ci.org/ruba-ruba/minesweeper.svg?branch=master)](https://travis-ci.org/ruba-ruba/minesweeper)
2
+ [![Coverage Status](https://coveralls.io/repos/github/ruba-ruba/minesweeper/badge.svg?branch=master)](https://coveralls.io/github/ruba-ruba/minesweeper?branch=master)
2
3
 
3
4
  ### Minesweeper Terminal
4
5
  > Console version of [minesweeper game](https://en.wikipedia.org/wiki/Microsoft_Minesweeper) written in [ruby](https://www.ruby-lang.org/en/) & [curses gem](https://github.com/ruby/curses)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minesweeper-curses
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mykhailo Rybak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-08 00:00:00.000000000 Z
11
+ date: 2017-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -70,30 +70,30 @@ dependencies:
70
70
  name: sequel
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 4.46.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 4.46.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: sqlite3
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 1.3.13
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 1.3.13
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -118,6 +118,7 @@ extra_rdoc_files: []
118
118
  files:
119
119
  - ".gitignore"
120
120
  - ".rspec"
121
+ - ".rubocop.yml"
121
122
  - ".ruby-version"
122
123
  - ".travis.yml"
123
124
  - CODE_OF_CONDUCT.md
@@ -136,6 +137,7 @@ files:
136
137
  - lib/minesweeper/bomb_injector.rb
137
138
  - lib/minesweeper/cell.rb
138
139
  - lib/minesweeper/game_initializer.rb
140
+ - lib/minesweeper/storage.rb
139
141
  - lib/minesweeper/version.rb
140
142
  - minesweeper.gemspec
141
143
  - readme.md