Не было идей, но их подсказал один из комментаторов (уже не помню какой именно), который привел целый список еще не написанных в 30 строк игр.
Представляю на ваш суд мое творение — старый добрый сапер.
Ссылка
Сам код:
(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/
Добавить комментарий