rbstar 1.3.0 → 1.4.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.
- checksums.yaml +4 -4
- data/bin/gosustar +102 -0
- data/lib/rbstar.rb +4 -5
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73a2015394f4bd7d124a0183c4fe0c491803214d1ee184db14d05fd8d3c6dad4
|
4
|
+
data.tar.gz: 6775189a3d66e57ab384c641ecf1b2c065b7d2e533a40eb4cdce1249d7c6b16f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccde9bd4ffb6eab1007f9d31a7fb536cff0eed087c07526b49ccecae4ae0bbba6fee74fce9e1f1bd0eb9c5e5c2624f7a385cf038be2182a5b85a33b5369f1c0b
|
7
|
+
data.tar.gz: 1e94e9022519fd74527350ee81b2ba7b72ef2d8da1450a38313e203a7ae1879de49a986ff47b36d84bb3ed8c9f8253be8eecaa1e3b1de907206db83ca61df17c
|
data/bin/gosustar
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'gosu'
|
5
|
+
require 'optparse'
|
6
|
+
|
7
|
+
require 'rbstar'
|
8
|
+
|
9
|
+
class GosuStar < Gosu::Window
|
10
|
+
def initialize( level, scale )
|
11
|
+
@scale = scale
|
12
|
+
@sprite_width = 9
|
13
|
+
@sprite_height = 8
|
14
|
+
|
15
|
+
@level = level
|
16
|
+
@field = RbStar::Board.new( @level )
|
17
|
+
@finished = false
|
18
|
+
@state = { dead: false, victory: false }
|
19
|
+
|
20
|
+
@font = Gosu::Font.new( 20 )
|
21
|
+
@images = { '@' => Gosu::Image.from_blob( @sprite_width * @scale, @sprite_height * @scale, bits_to_rgbas( '000000000000000000000110000001101000001111000000110000000000000000000000' ) ),
|
22
|
+
'H' => Gosu::Image.from_blob( @sprite_width * @scale, @sprite_height * @scale, bits_to_rgbas( '000000000000000000001111000001111000001111000001111000000000000000000000' ) ),
|
23
|
+
'#' => Gosu::Image.from_blob( @sprite_width * @scale, @sprite_height * @scale, bits_to_rgbas( '011111110100101001110000111101100001110001011100100101101001001011111110' ) ),
|
24
|
+
'x' => Gosu::Image.from_blob( @sprite_width * @scale, @sprite_height * @scale, bits_to_rgbas( '000000000000000000000110000001001000001001000000110000000000000000000000' ) ),
|
25
|
+
' ' => Gosu::Image.from_blob( @sprite_width * @scale, @sprite_height * @scale, bits_to_rgbas( '0' * @sprite_width * @sprite_height ) ) }
|
26
|
+
|
27
|
+
@finished = false
|
28
|
+
|
29
|
+
# Creation of the window
|
30
|
+
super ( ( ( ( @sprite_width - 1 ) * @field.width ) + 2 ) * @scale ) + @scale,
|
31
|
+
( ( ( ( @sprite_height - 1 ) * @field.height ) + 2 ) * @scale ) + @scale + 20
|
32
|
+
end
|
33
|
+
|
34
|
+
def bits_to_rgbas( bits )
|
35
|
+
bits.scan(/.{#{@sprite_width}}/).map do |line|
|
36
|
+
line.gsub( '0', "\0\0\0\0" * @scale ).gsub( '1', "\255\255\255\255" * @scale ) * @scale
|
37
|
+
end.join
|
38
|
+
end
|
39
|
+
|
40
|
+
def button_up(id)
|
41
|
+
case id
|
42
|
+
when Gosu::KB_NUMPAD_2, Gosu::KB_DOWN
|
43
|
+
@state = @field.move :down
|
44
|
+
when Gosu::KB_NUMPAD_4, Gosu::KB_LEFT
|
45
|
+
@state = @field.move :left
|
46
|
+
when Gosu::KB_NUMPAD_6, Gosu::KB_RIGHT
|
47
|
+
@state = @field.move :right
|
48
|
+
when Gosu::KB_NUMPAD_8, Gosu::KB_UP
|
49
|
+
@state = @field.move :up
|
50
|
+
when Gosu::KB_ESCAPE, Gosu::KB_Q
|
51
|
+
close
|
52
|
+
when Gosu::KB_N
|
53
|
+
@field.next_level
|
54
|
+
when Gosu::KB_P
|
55
|
+
@field.prev_level
|
56
|
+
when Gosu::KB_R
|
57
|
+
@field.reload_level
|
58
|
+
when Gosu::KB_SPACE
|
59
|
+
@field.switch_moving
|
60
|
+
else
|
61
|
+
super
|
62
|
+
end
|
63
|
+
|
64
|
+
@finished = @field.success?
|
65
|
+
|
66
|
+
@field.next_level if @finished
|
67
|
+
end
|
68
|
+
|
69
|
+
def update; end
|
70
|
+
|
71
|
+
def draw
|
72
|
+
caption = "Level #{@field.level + 1}/#{@field.levels.length}, #{@field.whats_moving} moving, #{@field.count_gifts} gems left, score: #{@field.distance} "
|
73
|
+
|
74
|
+
@font.draw_text( caption, 0, 0, 0 )
|
75
|
+
|
76
|
+
@field.height.times do |y|
|
77
|
+
@field.width.times do |x|
|
78
|
+
@images[ @field.get_cell( x, y ) ].draw ( ( @sprite_width - 1 ) * x * @scale ) + @scale,
|
79
|
+
( ( @sprite_height - 1 ) * y * @scale ) + @scale + 20,
|
80
|
+
0
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
options = { level: 0,
|
87
|
+
scale: 3 }
|
88
|
+
OptionParser.new do |opts|
|
89
|
+
opts.banner = 'Usage: gosustar <options>'
|
90
|
+
|
91
|
+
opts.on( '-l', '--level INT' ) do |level|
|
92
|
+
options[:level] = level.to_i
|
93
|
+
end
|
94
|
+
|
95
|
+
opts.on( '-s', '--scale INT' ) do |scale|
|
96
|
+
options[:scale] = scale.to_i
|
97
|
+
end
|
98
|
+
end
|
99
|
+
.parse!
|
100
|
+
|
101
|
+
GosuStar.new( options[:level], options[:scale] )
|
102
|
+
.show
|
data/lib/rbstar.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module RbStar
|
4
|
-
VERSION = '1.
|
4
|
+
VERSION = '1.4.1'
|
5
5
|
|
6
6
|
class Board
|
7
7
|
attr_reader :board,
|
@@ -61,10 +61,9 @@ module RbStar
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def get_pos( actor )
|
64
|
-
|
65
|
-
|
66
|
-
pos[ :
|
67
|
-
pos[ :x ] = p - ( pos[ :y ] * width )
|
64
|
+
rawpos = @board.index( actor )
|
65
|
+
pos = { y: ( rawpos / width ).floor }
|
66
|
+
pos[ :x ] = rawpos - ( pos[ :y ] * width )
|
68
67
|
|
69
68
|
pos
|
70
69
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbstar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gwenhael Le Moine
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curses
|
@@ -28,17 +28,20 @@ description: Puzzle game inspired by an old HP 48 called dstar
|
|
28
28
|
email: gwenhael@le-moine.org
|
29
29
|
executables:
|
30
30
|
- rbstar
|
31
|
+
- gosustar
|
31
32
|
extensions: []
|
32
33
|
extra_rdoc_files:
|
33
34
|
- README.md
|
34
35
|
files:
|
35
36
|
- README.md
|
37
|
+
- bin/gosustar
|
36
38
|
- bin/rbstar
|
37
39
|
- lib/rbstar.rb
|
38
40
|
homepage: https://src.le-moine.org/gwh/rbstar
|
39
41
|
licenses:
|
40
42
|
- GPL-3.0
|
41
|
-
metadata:
|
43
|
+
metadata:
|
44
|
+
rubygems_mfa_required: 'true'
|
42
45
|
post_install_message:
|
43
46
|
rdoc_options: []
|
44
47
|
require_paths:
|
@@ -54,7 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
54
57
|
- !ruby/object:Gem::Version
|
55
58
|
version: '0'
|
56
59
|
requirements: []
|
57
|
-
rubygems_version: 3.
|
60
|
+
rubygems_version: 3.4.10
|
58
61
|
signing_key:
|
59
62
|
specification_version: 4
|
60
63
|
summary: Puzzle game
|