Сапер, или снова 30 строк

от автора

В продолжение недели 30 строк на JS на хабре, решил внести свою лепту.
Не было идей, но их подсказал один из комментаторов (уже не помню какой именно), который привел целый список еще не написанных в 30 строк игр.
Представляю на ваш суд мое творение — старый добрый сапер.
image

Ссылка
Сам код:

(function (count,fileds) {     function cl(id){x=document.getElementById(id);return x?(x.className.indexOf('bomb')!=-1?1:0):0;}     var bombs=0;     for(i=0;i<fileds;i++){         r=document.createElement('div');         if(Math.random()*fileds<count){r.className='bomb close',document.getElementById('text').innerHTML=(++bombs)+' bomb\'s';}         else r.className='close';         r.id=Math.floor(i/10)+'_'+i%10;         document.body.appendChild(r);     }     for(o=0;o<fileds;o++){         i=Math.floor(o/10),j=o%10,num=0,obj=document.getElementById(i+'_'+j);         for(k=0;k<9;k++)num+=cl((i-(Math.floor(k/3)-1))+'_'+(j-(k%3-1)));         obj.innerHTML=num==0?' ':num;         obj.onclick=function(){mix=this.id.split('_'),open(mix[0],mix[1]);}         obj.oncontextmenu=function(){this.className=this.className.indexOf('flag')!=-1?this.className.replace(/ flag/,''):this.className+' flag';return false;}     }     function open(i,j){         dom=document.getElementById(i+'_'+j);         if(!dom||dom.className.indexOf('close')==-1)return;         if(dom.className.indexOf('bomb')!=-1){             divs=document.getElementsByTagName('div');             for(i=0;i<divs.length;i++)divs[i].className=divs[i].className.indexOf('bomb')!=-1?'bomb':'';             alert('You lose!');         }         else {             dom.className='';             var elems = document.getElementsByTagName('div'),len=0;             for (ki in elems)if(elems[ki].className&&elems[ki].className.indexOf('close')!=-1)len++;             if(len<=bombs)alert('You win!');         }         if(dom.innerHTML==' ')for(var ks=0;ks<9;ks++)open(i-((Math.floor(ks/3)-1)),j-(((ks%3)-1)));     } }(10,100)); 

В заголовке, правда, немного слукаваил — получилось 34 строки.
Если удалить установку флагов на мины, всякие сообщения, и еще больше запихнуть в строчки — то можно и к 30 привести, даже меньше. Но цель у меня была другая — было просто интересно написать что-то веселое и забавное. (до попыток привести код к 30 строкам он был 54 строки 😉

Спасибо всем что подтолкнули к написанию сего забавного творения, и в особенности авторам этих игр.
Гоночка на JavaScript (30 строк кода)
Крошечный арканоид на JavaScript (30 строк кода)
Крошечный Excel на чистом JavaScript (30 строк кода)
Крошечная змейка на JavaScript (30 строк кода)
Tetris на javascript (в 30+ строк)
И последний (конечно не JS, но тоже «ненормальный»)
Рисовалка под Windows на C++, или «Ребята, я тоже ненормальный!» (30+ строк кода)

ссылка на оригинал статьи http://habrahabr.ru/post/202750/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *