Game Development Reference
In-Depth Information
self , media_path( 'ground.png' ), 128 , 128 , true )
65
@sand = tiles [0]
66
@grass = tiles [8]
67
@water = Gosu :: Image . new(
68
self , media_path( 'water.png' ), true )
69
70 end
71
72 def tiles_x
73 count = ( WIDTH / ( TILE_SIZE * @zoom )) . ceil + 1
74 [ count, MAP_WIDTH ]. min
75 end
76
77 def tiles_y
78 count = ( HEIGHT / ( TILE_SIZE * @zoom )) . ceil + 1
79 [ count, MAP_HEIGHT ]. min
80 end
81
82 def generate_map
83 noises = Perlin :: Noise . new( 2 )
84 contrast = Perlin :: Curve . contrast(
85 Perlin :: Curve :: CUBIC , 2 )
86 map = {}
87 MAP_WIDTH . times do | x |
88 map [ x ] = {}
89 MAP_HEIGHT . times do | y |
90 n = noises [ x * 0.1 , y * 0.1]
91 n = contrast . call(n)
92 map [ x ][ y ] = choose_tile(n)
93 end
94 end
95 map
96 end
97
98 def choose_tile (val)
99 case val
100 when 0.0. . 0.3 # 30% chance
101 @water
102 when 0.3. . 0.45 # 15% chance, water edges
103 @sand
104 else # 55% chance
105 @grass
106 end
107 end
108
109 end
110
Search WWH ::




Custom Search