tile.dom.html tile.text
-default_booms = {
+# top-level key is word length
+# arrays are [difficulty] level, easiest to hardest
+booms = {
3: {
neighbors: {
- flips: 1
- force: 2
+ flips: [1,1,1,1,0]
+ force: [2,2,1,1,1,1,0]
}
neighbor_neighbors: {
- flips: 0
- force: 0
+ flips: [0]
+ force: [0]
}
board: {
- flips: 0
- force: 0
+ flips: [0]
+ force: [0]
}
}
4: {
neighbors: {
- flips: 'all'
- force: 4
+ flips: ['all', 4,4,4,4,4,3,3,2,2,1]
+ force: [4,3,3,3,3,3,2]
}
neighbor_neighbors: {
- flips: 0
- force: 2
+ flips: [0]
+ force: [2,2,2,1,1,1,0]
}
board: {
- flips: 0
- force: 0
+ flips: [0]
+ force: [0]
}
}
5: {
neighbors: {
- flips: 'all'
- force: 6
+ flips: ['all','all','all','all',5,5,5,4,4,4,3,3,3,2]
+ force: [6,6,6,6,5,5,5,4,4,4,3]
}
neighbor_neighbors: {
- flips: 2
- force: 4
+ flips: [2,2,2,2,2,2,1,1,1,1,0]
+ force: [4,3,3,3,3,2,2,2,1]
}
board: {
- flips: 0
- force: 0
+ flips: [0]
+ force: [0]
}
}
6: {
neighbors: {
- flips: 'all'
- force: 10
+ flips: ['all','all','all','all','all',9,9,9,9,8,8,8,7,7,7,6,6,6,5,5,5,4]
+ force: [9,9,9,9,9,8,8,8,7]
}
neighbor_neighbors: {
- flips: 5
- force: 6
+ flips: [5,5,5,5,5,5,5,4,4,4,3,3,3,2,2,2,1]
+ force: [6,6,5,5,4,4,3,3,2]
}
board: {
- flips: 0
- force: 0
+ flips: [0]
+ force: [0]
}
}
7: {
neighbors: {
- flips: 'all'
- force: 10
+ flips: ['all']
+ force: [10]
}
neighbor_neighbors: {
- flips: 'all'
- force: 10
+ flips: ['all','all','all','all',9,8,7,6,5,4,3,2]
+ force: [10]
}
board: {
- flips: 0
- force: 2
+ flips: [0]
+ force: [5,4,3,2,1]
}
}
lots: {
neighbors: {
- flips: 0
- force: 0
+ flips: [0]
+ force: [0]
}
neighbor_neighbors: {
- flips: 0
- force: 0
+ flips: [0]
+ force: [0]
}
board: {
- flips: 'all'
- force: 10
+ flips: ['all']
+ force: [10]
}
}
}
-booms = null
-init_booms = ->
- booms = {}
- for level, areas of default_booms
- new_level = {}
- for area, effects of areas
- new_area = {}
- for effect, amount of effects
- new_area[effect] = amount
- new_level[area] = new_area
- booms[level] = new_level
- return
+difficulty_level = 0
+next_level_at = 200
+adjust_difficulty_level = ->
+ while score > next_level_at
+ difficulty_level += 1
+ next_level_at *= 1.4
+
# remove the selected tiles from the board, create new tiles, and slide everything into place
blip_selection = ->
+ adjust_difficulty_level()
word_length = selected_word().length
faders = selected
selected = []
boom = booms.lots
for area_name, effects of boom
area = areas[area_name]
- if effects.flips is 'all' or effects.flips >= area.down.length
+ if difficulty_level < effects.flips.length
+ flips = effects.flips[difficulty_level]
+ else
+ flips = effects.flips.last()
+ if flips is 'all' or flips >= area.down.length
for t in area.down
unsink t
else
down_count = area.down.length
- flips_left = effects.flips
+ flips_left = flips
while flips_left > 0 and down_count > 0
flips_left -= 1
flipper = Math.floor(Math.random() * down_count)
down_count -= 1
# move the last tile back into range
area.down[flipper] = area.down[down_count]
- if effects.force > 0
+ if difficulty_level < effects.force.length
+ force = effects.force[difficulty_level]
+ else
+ force = effects.force.last()
+ if force > 0
for tile in area.up
- tile.new_hp = tile.hp + effects.force
+ tile.new_hp = tile.hp + force
for s in spaces
s.tile.new_hp ?= s.tile.hp - 1
if s.tile.new_hp < 0
start_over = ->
selected = []
score = 0
+ difficulty_level = 0
+ next_level_at = 200
$score_display.html score
for s in spaces
selected.push s.tile
blip_selection()
- init_booms()
init_start_over_link = ->
$('#start-over').click (event) ->
init_html_board()
init_start_over_link()
update_selection_display()
- init_booms()
$(init_game)