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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/kaki-lifegame.rb +41 -22
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 89a6f9f72edd2d93a8bedfdb4203426517422582
4
- data.tar.gz: 99fcc35b4a6d739bc2ad394976c264588bd05b2b
3
+ metadata.gz: 329898bc76f40e962801e12f255a559b7ccf7cfb
4
+ data.tar.gz: 2c60243ad6c0a6ea29eac8a48db5732d04a7587c
5
5
  SHA512:
6
- metadata.gz: 187b2b4f5122d8abe47fb33956742f80e19719ed68f4b8558dc9735cca698225ed31cff6af052fa222db617859bca3c38a69ed5abea888852ee4c68c18a3c3a8
7
- data.tar.gz: 4bb812802145dd5828377f6c304d39a9c4d59aa003a7e14f6ba6aff85e52955a99a0d64016af988b809894269bc6d6e245133a197b012211ae5538da9e26e576
6
+ metadata.gz: 9d503ece24e787330a35231f3afd912889b36fec273dd7f02f27b332141fddee03d8e2f4c6c479a768f42cc4e8c0a73a3ca0b0527c143b2e635058e638235b6a
7
+ data.tar.gz: fb729aa2a291e8a7b19ec2db6d518fa9983d90f9f6bc0fea6162adb9734cb6d335cc4c70011d6a88e7805fd9f485ef7e9f41464e74d31cf5f5cb80ee9812643d
@@ -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 = 70, 50
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
- m = /^Size : \((.+)\)$/.match(io.gets.chomp)
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
- return false unless size
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) ? [70, 50] : [85, 60]
133
- clear if f
134
- @step = @stored_step = 0
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, :size
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 = 130
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 , true, true, 1)
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kaki-lifegame
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - obelisk