kaki-lifegame 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/kaki-lifegame.rb +41 -22
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 329898bc76f40e962801e12f255a559b7ccf7cfb
|
4
|
+
data.tar.gz: 2c60243ad6c0a6ea29eac8a48db5732d04a7587c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d503ece24e787330a35231f3afd912889b36fec273dd7f02f27b332141fddee03d8e2f4c6c479a768f42cc4e8c0a73a3ca0b0527c143b2e635058e638235b6a
|
7
|
+
data.tar.gz: fb729aa2a291e8a7b19ec2db6d518fa9983d90f9f6bc0fea6162adb9734cb6d335cc4c70011d6a88e7805fd9f485ef7e9f41464e74d31cf5f5cb80ee9812643d
|
data/lib/kaki-lifegame.rb
CHANGED
@@ -3,9 +3,10 @@ require 'gtk2'
|
|
3
3
|
module LifeGame
|
4
4
|
class Field
|
5
5
|
MG = 4
|
6
|
+
Small, Large = [70, 50], [85, 60]
|
6
7
|
|
7
8
|
def initialize
|
8
|
-
@width, @height =
|
9
|
+
@width, @height = Small
|
9
10
|
@size = :small
|
10
11
|
clear
|
11
12
|
@step = @stored_step = 0
|
@@ -87,20 +88,16 @@ module LifeGame
|
|
87
88
|
|
88
89
|
def load(file_name)
|
89
90
|
size = nil
|
91
|
+
|
90
92
|
open(file_name, "r") do |io|
|
91
|
-
|
92
|
-
unless m
|
93
|
-
puts "読み込みエラーです"
|
94
|
-
break
|
95
|
-
end
|
93
|
+
size = /^Size : \((.+)\)$/.match(io.gets.chomp)[1].to_sym
|
96
94
|
@field = []
|
97
|
-
size = m[1].to_sym
|
98
95
|
@step = io.gets.chomp.scan(/\d+/)[0].to_i
|
99
96
|
io.each_line do |line|
|
100
97
|
@field << line.chomp.split(",").map(&:to_i)
|
101
98
|
end
|
102
99
|
end
|
103
|
-
|
100
|
+
|
104
101
|
change_window_size(size, false)
|
105
102
|
end
|
106
103
|
|
@@ -129,13 +126,35 @@ module LifeGame
|
|
129
126
|
def change_window_size(size, f = true)
|
130
127
|
return false if @size == size
|
131
128
|
@size = size
|
132
|
-
@width, @height = (@size == :small) ?
|
133
|
-
|
134
|
-
|
129
|
+
@width, @height = (@size == :small) ? Small : Large
|
130
|
+
if f
|
131
|
+
field_convert(@size)
|
132
|
+
else
|
133
|
+
@step = @stored_step = 0
|
134
|
+
end
|
135
135
|
@reserved = copy
|
136
136
|
@store = []
|
137
137
|
true
|
138
138
|
end
|
139
|
+
|
140
|
+
def field_convert(size)
|
141
|
+
mg_w = (Large[0] - Small[0]) / 2
|
142
|
+
mg_h = (Large[1] - Small[1]) / 2
|
143
|
+
a = - MG + 1
|
144
|
+
converted_field = new_field
|
145
|
+
|
146
|
+
(Small[1] + (MG - 1) * 2).times do |y|
|
147
|
+
(Small[0] + (MG - 1) * 2).times do |x|
|
148
|
+
if size == :small
|
149
|
+
converted_field[y + 1][x + 1] = 1 if get_cell(x + a + mg_w, y + a + mg_h) == 1
|
150
|
+
else
|
151
|
+
converted_field[y + 1 + mg_h][x + 1 + mg_w] = 1 if get_cell(x + a, y + a) == 1
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
@field = converted_field
|
157
|
+
end
|
139
158
|
end
|
140
159
|
|
141
160
|
class FieldArea < Gtk::DrawingArea
|
@@ -149,11 +168,11 @@ module LifeGame
|
|
149
168
|
def initialize(field)
|
150
169
|
super()
|
151
170
|
|
152
|
-
@areaw, @areah = field.width * L, field.height * L
|
153
|
-
set_size_request(@areaw, @areah)
|
154
|
-
|
155
171
|
@f = field
|
156
172
|
|
173
|
+
@areaw, @areah = @f.width * L, @f.height * L
|
174
|
+
set_size_request(@areaw, @areah)
|
175
|
+
|
157
176
|
@colormap = Gdk::Colormap.system
|
158
177
|
@color = {black: Gdk::Color.new(0, 0, 0),
|
159
178
|
green: Gdk::Color.new(0xc784, 0xffff, 0x52c4),
|
@@ -193,7 +212,7 @@ module LifeGame
|
|
193
212
|
set_wait_time
|
194
213
|
end
|
195
214
|
attr_writer :time_goes, :label1, :label2
|
196
|
-
attr_reader :areaw, :areah
|
215
|
+
attr_reader :areaw, :areah
|
197
216
|
|
198
217
|
def set_color(color_name)
|
199
218
|
@gc.rgb_fg_color = @color[color_name]
|
@@ -346,7 +365,7 @@ module LifeGame
|
|
346
365
|
|
347
366
|
class SideBar < Gtk::VBox
|
348
367
|
MGN = 3
|
349
|
-
SideBar_W =
|
368
|
+
SideBar_W = 140
|
350
369
|
|
351
370
|
def initialize(field_area, main_window)
|
352
371
|
super()
|
@@ -522,13 +541,9 @@ module LifeGame
|
|
522
541
|
end
|
523
542
|
|
524
543
|
def set_box6
|
525
|
-
close_bt = Gtk::Button.new("終了")
|
526
544
|
large_bt = Gtk::Button.new("大")
|
527
545
|
small_bt = Gtk::Button.new("小")
|
528
|
-
|
529
|
-
close_bt.signal_connect("clicked") do
|
530
|
-
Gtk.main_quit if @edit_mode
|
531
|
-
end
|
546
|
+
close_bt = Gtk::Button.new("終了")
|
532
547
|
|
533
548
|
large_bt.signal_connect("clicked") do
|
534
549
|
change_window_size(:large) if @edit_mode
|
@@ -538,8 +553,12 @@ module LifeGame
|
|
538
553
|
change_window_size(:small) if @edit_mode
|
539
554
|
end
|
540
555
|
|
556
|
+
close_bt.signal_connect("clicked") do
|
557
|
+
Gtk.main_quit if @edit_mode
|
558
|
+
end
|
559
|
+
|
541
560
|
small_box = Gtk::HBox.new
|
542
|
-
small_box.pack_start(large_bt
|
561
|
+
small_box.pack_start(large_bt, true, true, 1)
|
543
562
|
small_box.pack_start(small_bt, true, true, 1)
|
544
563
|
|
545
564
|
box = Gtk::VBox.new
|