Game Development Reference
In-Depth Information
19
load_tiles
20
@map
=
generate_map
21
@zoom
= 0.2
22
end
23
24
def
button_down
(
id
)
25
close
if
id
==
Gosu
::
KbEscape
26
@map
=
generate_map
if
id
==
Gosu
::
KbSpace
27
end
28
29
def
update
30
adjust_zoom(
0.005
)
if
button_down?(
Gosu
::
KbDown
)
31
adjust_zoom(
-0.005
)
if
button_down?(
Gosu
::
KbUp
)
32
set_caption
33
end
34
35
def
draw
36
tiles_x
.
times
do
|
x
|
tiles_y
.
times
do
|
y
|
37
@map
[
x
][
y
].
draw(
38
x
*
TILE_SIZE
*
@zoom
,
39
y
*
TILE_SIZE
*
@zoom
,
40
0
,
41
@zoom
,
42
@zoom
)
43
44
end
45
end
46
end
47
48
private
49
50
def
set_caption
51
self
.
caption
=
'Perlin Noise. '
<<
"Zoom:
#{
'%.2f'
%
@zoom
}
. "
<<
52
'Use Up/Down to zoom. Space to regenerate.'
53
54
end
55
56
def
adjust_zoom
(delta)
57
new_zoom
=
@zoom
+
delta
58
if
new_zoom
> 0.07 &&
new_zoom
< 2
59
@zoom
=
new_zoom
60
end
61
end
62
63
def
load_tiles
64
tiles
=
Gosu
::
Image
.
load_tiles(