rsokoban 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: