Title / Description
Code $window = MrubyJs.get_root_object $document = $window.document $container = $window.jQuery["#container"] def jq(selector) MrubyJs.window.jQuery(selector) end $polja = Array.new $semafor = 0 def init for i in 0..19 pom = Array.new for j in 0..9 pom.push(0) $container.append("<div class='box'></div>") end $polja.push(pom) end jq("#move_block_left").click(Proc.new do pozicija = Array.new for j in 0..9 for i in 0..19 if $polja[i][j] == 2 then pomNiz = Array.new pomNiz.push(i, j) pozicija.push(pomNiz) end end end if pozicija[0][1] > 0 then if $polja[ pozicija[0][0]][ pozicija[0][1]-1] != 1 && $polja[ pozicija[3][0]][ pozicija[3][1]-1] != 1 && $polja[ pozicija[1][0]][ pozicija[1][1]-1] != 1 && $polja[ pozicija[2][0]][ pozicija[2][1]-1] != 1 then pom = 0 while pom < 4 do $polja[ pozicija[pom][0]][ pozicija[pom][1]-1] = $polja[ pozicija[pom][0]][ pozicija[pom][1]] $polja[ pozicija[pom][0]][ pozicija[pom][1]] = 0 $container.find(".box:nth-child("+(pozicija[pom][0]*10 +pozicija[pom][1]).to_s+")").addClass('highlited') $container.find(".box:nth-child("+(pozicija[pom][0]*10 +pozicija[pom][1]+1).to_s+")").removeClass('highlited') pom += 1 end end end end) jq("#move_block_right").click(Proc.new do pozicija = Array.new j = 9 while j >= 0 do for i in 0..19 if $polja[i][j] == 2 then pomNiz = Array.new pomNiz.push(i, j) pozicija.push(pomNiz) end end j -= 1 end if pozicija[0][1] < 9 then if $polja[ pozicija[0][0]][ pozicija[0][1]+1] != 1 && $polja[ pozicija[3][0]][ pozicija[3][1]+1] != 1 && $polja[ pozicija[1][0]][ pozicija[1][1]+1] != 1 && $polja[ pozicija[2][0]][ pozicija[2][1]+1] != 1 then pom = 0 while pom < 4 do $polja[ pozicija[pom][0]][ pozicija[pom][1]+1] = $polja[ pozicija[pom][0]][ pozicija[pom][1]] $polja[ pozicija[pom][0]][ pozicija[pom][1]] = 0 $container.find(".box:nth-child("+(pozicija[pom][0]*10 +pozicija[pom][1]+2).to_s+")").addClass('highlited') $container.find(".box:nth-child("+(pozicija[pom][0]*10 +pozicija[pom][1]+1).to_s+")").removeClass('highlited') pom += 1 end end end end) end def animation pom = 0 stvoriNovoPolje while pom < 20 do pomjeriTrenutniOblik pom += 1 end end def stvoriNovoPolje oblik = 1 +rand(4) if oblik == 1 then $container.find(".box:nth-child(5)").addClass('highlited') $container.find(".box:nth-child(15)").addClass('highlited') $container.find(".box:nth-child(25)").addClass('highlited') $container.find(".box:nth-child(35)").addClass('highlited') $polja[0][4] = 2 $polja[1][4] = 2 $polja[2][4] = 2 $polja[3][4] = 2 elsif oblik == 2 then $container.find(".box:nth-child(5)").addClass('highlited') $container.find(".box:nth-child(15)").addClass('highlited') $container.find(".box:nth-child(6)").addClass('highlited') $container.find(".box:nth-child(16)").addClass('highlited') $polja[0][4] = 2 $polja[1][4] = 2 $polja[0][5] = 2 $polja[1][5] = 2 elsif oblik == 3 then $container.find(".box:nth-child(4)").addClass('highlited') $container.find(".box:nth-child(5)").addClass('highlited') $container.find(".box:nth-child(6)").addClass('highlited') $container.find(".box:nth-child(15)").addClass('highlited') $polja[0][3] = 2 $polja[0][4] = 2 $polja[0][5] = 2 $polja[1][4] = 2 else $container.find(".box:nth-child(4)").addClass('highlited') $container.find(".box:nth-child(5)").addClass('highlited') $container.find(".box:nth-child(6)").addClass('highlited') $container.find(".box:nth-child(14)").addClass('highlited') $polja[0][3] = 2 $polja[0][4] = 2 $polja[0][5] = 2 $polja[1][3] = 2 end end def provjeraPopunjenosti pom2 = false popunjeno = false i = 19 while i >= 0 do popunjeno = false for j in 0..9 if $polja[i][j] != 1 then break elsif j==9 then pom2 = true popunjeno = true end end if pom2 then break end i -= 1 end if popunjeno then pom = i while pom > 0 do for pomocna in 0..9 $polja[pom][pomocna] = $polja[pom-1][pomocna] end pom -= 1 end for pom in 0..9 $polja[0][pom] = 0 $container.find(".box:nth-child("+(i*10+pom+1).to_s+")").removeClass('highlited') end pom = i while pom > 0 do for pomocna in 0..9 if $polja[pom][pomocna] == 1 then $container.find(".box:nth-child("+(pom*10+pomocna+1).to_s+")").addClass('highlited') $container.find(".box:nth-child("+((pom-1)*10+pomocna+1).to_s+")").removeClass('highlited') end end pom -= 1 end provjeraPopunjenosti end end def pomjeriTrenutniOblik $semafor += 1 $window.setTimeout(Proc.new do gotovo = false pozicija = Array.new for i in 0..19 for j in 0..9 if $polja[i][j] == 2 then pomNiz = Array.new pomNiz.push(i, j) pozicija.push(pomNiz) end end end unless pozicija.empty? if pozicija[3][0] == 19 then for index in 0..3 red = pozicija[index][0] kolona = pozicija[index][1] $polja[red][kolona] = 1 end for pom in 0..9 if $polja[0][pom] == 1 then gotovo = true break end end unless gotovo provjeraPopunjenosti animation end elsif $polja[pozicija[3][0]+1][pozicija[3][1]] == 1 || $polja[pozicija[2][0]+1][pozicija[2][1]] == 1 || $polja[pozicija[1][0]+1][pozicija[1][1]] == 1 || $polja[pozicija[0][0]+1][pozicija[0][1]] == 1 then for index in 0..3 red = pozicija[index][0] kolona = pozicija[index][1] $polja[red][kolona] = 1 end for pom in 0..9 if $polja[0][pom] == 1 then gotovo = true break end end unless gotovo provjeraPopunjenosti animation end else pom = 3 while pom >= 0 do $polja[pozicija[pom][0]+1][pozicija[pom][1]] = $polja[pozicija[pom][0]][pozicija[pom][1]] $polja[pozicija[pom][0]][pozicija[pom][1]] = 0 $container.find(".box:nth-child("+((pozicija[pom][0]+1)*10 +pozicija[pom][1] +1).to_s+")").addClass('highlited') $container.find(".box:nth-child("+((pozicija[pom][0])*10 +pozicija[pom][1] +1).to_s+")").removeClass('highlited') pom -= 1 end end end $semafor -= 1 end, 300*$semafor) end init animation
Author
Highlight as C C++ CSS Clojure Delphi ERb Groovy (beta) HAML HTML JSON Java JavaScript PHP Plain text Python Ruby SQL XML YAML diff code