rsokoban 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. data/README.md +10 -0
  2. data/VERSION +1 -1
  3. data/lib/rsokoban_game.rb +8 -17
  4. data/rsokoban.gemspec +2 -2
  5. metadata +19 -19
data/README.md CHANGED
@@ -30,6 +30,16 @@ The following keys work in RSokoban:
30
30
  * `WSAD`/arrow keys - Move
31
31
  * 'z' - Undo (unlimited)
32
32
 
33
+ ## Changelog
34
+
35
+ ### 1.0.1
36
+
37
+ Fixed broken undo function (it didn't move boxes back to where they were before being pushed).
38
+
39
+ ### 1.0.0
40
+
41
+ First version. Don't judge.
42
+
33
43
  ## Contributing to rsokoban
34
44
 
35
45
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.0.1
data/lib/rsokoban_game.rb CHANGED
@@ -61,7 +61,7 @@ module RSokoban
61
61
  (@boxes.keys - @goals.keys).empty?
62
62
  end
63
63
 
64
- def move(direction, undoing = false)
64
+ def move(direction)
65
65
  return unless can_move?(direction)
66
66
 
67
67
  new_player = [@player[:row], @player[:col]].zip(DIRECTIONS[direction]).map{|a, b| a + b}
@@ -76,7 +76,7 @@ module RSokoban
76
76
  @window.addstr ' '
77
77
 
78
78
  @player[:row], @player[:col] = new_player
79
- @moves.push direction unless undoing
79
+ @states.push({:player => @player.dup, :boxes => @boxes.dup})
80
80
  end
81
81
 
82
82
  def play_level(level)
@@ -87,7 +87,7 @@ module RSokoban
87
87
  @player = level.player.dup
88
88
  @goals = level.goals.dup
89
89
 
90
- @moves = []
90
+ @states = [{:player => @player.dup, :boxes => @boxes.dup}]
91
91
 
92
92
  draw
93
93
 
@@ -120,20 +120,11 @@ module RSokoban
120
120
  end
121
121
 
122
122
  def undo
123
- return if @moves.empty?
124
-
125
- direction = case @moves.pop
126
- when :left
127
- :right
128
- when :right
129
- :left
130
- when :up
131
- :down
132
- when :down
133
- :up
134
- end
135
-
136
- move direction, true
123
+ state = @states.pop
124
+ @boxes = state[:boxes]
125
+ @player = state[:player]
126
+ @window.clear
127
+ @states.push(state) if @states.empty?
137
128
  end
138
129
 
139
130
  end
data/rsokoban.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rsokoban"
8
- s.version = "1.0.0"
8
+ s.version = "1.0.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Max Thom Stahl"]
12
- s.date = "2012-05-18"
12
+ s.date = "2012-05-19"
13
13
  s.description = "A Sokoban clone written in Ruby using the ncurses library."
14
14
  s.email = "max@dangerouscuteness.com"
15
15
  s.executables = ["rsokoban"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsokoban
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-18 00:00:00.000000000 Z
12
+ date: 2012-05-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: happymapper
16
- requirement: &70276082784920 !ruby/object:Gem::Requirement
16
+ requirement: &70299859924740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70276082784920
24
+ version_requirements: *70299859924740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: ncurses-ruby
27
- requirement: &70276082783860 !ruby/object:Gem::Requirement
27
+ requirement: &70299859907540 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70276082783860
35
+ version_requirements: *70299859907540
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: awesome_print
38
- requirement: &70276082783120 !ruby/object:Gem::Requirement
38
+ requirement: &70299859906660 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70276082783120
46
+ version_requirements: *70299859906660
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &70276082782300 !ruby/object:Gem::Requirement
49
+ requirement: &70299859903240 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70276082782300
57
+ version_requirements: *70299859903240
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: yard
60
- requirement: &70276082781620 !ruby/object:Gem::Requirement
60
+ requirement: &70299859901340 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70276082781620
68
+ version_requirements: *70299859901340
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
- requirement: &70276082780460 !ruby/object:Gem::Requirement
71
+ requirement: &70299859899780 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70276082780460
79
+ version_requirements: *70299859899780
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: jeweler
82
- requirement: &70276082779740 !ruby/object:Gem::Requirement
82
+ requirement: &70299859898780 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70276082779740
90
+ version_requirements: *70299859898780
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: simplecov
93
- requirement: &70276082778940 !ruby/object:Gem::Requirement
93
+ requirement: &70299859898060 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70276082778940
101
+ version_requirements: *70299859898060
102
102
  description: A Sokoban clone written in Ruby using the ncurses library.
103
103
  email: max@dangerouscuteness.com
104
104
  executables:
@@ -139,7 +139,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
139
139
  version: '0'
140
140
  segments:
141
141
  - 0
142
- hash: -1397569013250805758
142
+ hash: -3654479313614394757
143
143
  required_rubygems_version: !ruby/object:Gem::Requirement
144
144
  none: false
145
145
  requirements: