LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Minesweeper

Edituj záznam
Kategorie: Javascript
Programovací jazyk:
Domovská stránka: http://javascript.internet.com/games/minesweeper-clone.html
Download: http://javascript.internet.com/games/minesweeper-clone.html
Tvůrce:
Popis skriptu: Další klon známé hry Minesweeper.
Nároky na klienta: Javascript
Nároky na server:
Ukázka spuštěného skriptu
Kód s komentáři:
<!-- KROK1: Zkopíruj tento kód do sekce HEAD tvého HTML document -->

<HEAD>

<!-- Tento script a mnoho dalších je volně přístupno na -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Original: Chris Todd -->
<!-- Web Site: http://www.bitesizeinc.net -->
<script id=MineSweeper language=javascript src="http://www.bitesizeinc.net/demo/jsMineSweeper/jsMineSweeper.js"></script>
</HEAD>

<!-- KROK II Zkopíruj teno kód do sekce BODY tvého HTML dokumentu -->

<BODY>

<!-- Tento script a mnoho dalších je volně přístupno na -->

<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Original: Chris Todd -->
<!-- Web Site: http://www.bitesizeinc.net -->
<script language=Javascript> initMineSweeper(10,10,10) </script>

<p><center>
<font face="arial, helvetica" size"-2">Free JavaScripts provided<br>
by <a href="http://javascriptsource.com">The JavaScript Source</a></font>
</center><p>

<!-- Script Size: 1.08 KB -->
---------------------------




2. Soubor jsMineSweeper

var width=0,height=0;
var tiles;
rnd.today=new Date();
rnd.seed=rnd.today.getTime();
var playing;
var flags;
var bombs=0;
var img_prefix="";
function find_by_id(id) { if (!document.getElementById) { return document.images[id] } else { return document.getElementById(id); } }

customText='<a target=_new href="http://www.bitesizeinc.net/games.html">Play More Games</a>';

function isShiftDown(e) {
shiftPressed=false;
if (parseInt(navigator.appVersion)>3) {
if (e.modifiers) {
var mString =(e.modifiers+32).toString(2).substring(3,6);
shiftPressed=(mString.charAt(0)=="1");
}
else {
shiftPressed=e.shiftKey;
}
}
return(shiftPressed);
}

function changeTile(x,y,path)
{
var tile;
id='tile_'+x+'_'+y;
tile=find_by_id(id);
if (tile) { tile.src=path; }
}

function showBombs()
{
for (i=0;i<=width;i++)
{
for (j=0;j<=height;j++)
{
if ((tiles[i][j]==1)||(tiles[i][j]==3))
{
changeTile(i,j,img_prefix+"img/bomb.gif");
}
}
}
}

function gameFinished()
{
var i,j;
for (i=0;i<=width;i++)
{
for (j=0;j<=height;j++)
{
if ((tiles[i][j]<3))
{
return(false);
}
}
}
return(true);
}

function gameOver()
{
endTimer();
showBombs();
find_by_id('status').innerHTML='Prohráls!!! '+customText;
startButton=find_by_id('startbutton');
startButton.src=img_prefix+"img/go.gif";
playing=false;
}

function gameWinner()
{
endTimer();
find_by_id('status').innerHTML='You Win!!! '+customText;
playing=false;
}

function countNeighbors(x,y)
{
cnt=0;
tmpc=0;
for ( i=-1; i<2 ; i++ ) {
for ( j=-1; j<2 ; j++ ) {
if (!((i==0)&&(j==0)))
{
cx=x+i;
cy=y+j
if ((cx>-1)&&(cy>-1)&&(cx<=width)&&(cy<=height)) {
if (tiles[cx][cy]==1)
{ cnt++; }
if (tiles[cx][cy]==3)
{ cnt++; }
}
}
}
}
return cnt;
}

function doFlag(id)
{
tile=find_by_id(id);
if (tile) {
x=parseInt(id.substr(id.indexOf("_")+1,id.lastIndexOf("_")-id.indexOf("_")-1));
y=parseInt(id.substr(id.lastIndexOf("_")+1,id.length-id.lastIndexOf("_")-1));
if (tiles[x][y]>=2)
{
updateScore(1);
tiles[x][y]-=2;
tile.src=img_prefix+"img/tile.gif";
} else {
if (flags>0)
{
updateScore(-1);
tiles[x][y]+=2;
tile.src=img_prefix+"img/tileflag.gif";
}
}

if (gameFinished()) { gameWinner(); }
}
}

function doClear(x,y)
{
var i,j,cx,cy;
tiles[x][y]=4;
cnt=countNeighbors(x,y);
if (cnt==0)
{
changeTile(x,y,img_prefix+'img/tiledown.gif');
for ( i=-1; i<2 ; i++ ) {
for ( j=-1; j<2 ; j++ ) {
if (!((i==0)&&(j==0))) {
cx=x+i;
cy=y+j
if ((cx>-1)&&(cy>-1)&&(cx<=width)&&(cy<=height)) {
if(tiles[cx][cy]==0)
{
doClear(cx,cy);
}
}
}
}
}
}
else
{ changeTile(x,y,img_prefix+'img/tile'+cnt+'.gif'); }
return true;
}

function doUncover(id)
{
var tile;
tile=find_by_id(id);
if (tile) {
x=parseInt(id.substr(id.indexOf("_")+1,id.lastIndexOf("_")-id.indexOf("_")-1));
y=parseInt(id.substr(id.lastIndexOf("_")+1,id.length-id.lastIndexOf("_")-1));
if (tiles[x][y]==0)
{
doClear(x,y);
if (gameFinished()) { gameWinner(); }
}
if (tiles[x][y]==1)
{
gameOver();
tile=find_by_id(id);
tile.src=img_prefix+"img/bombred.gif";
}
}
}

function userChoice(evt) {
if (!playing) { return false; }
evt = (evt) ? evt : ((window.event) ? window.event : "")
if (evt) {

if (evt.target) {
elem = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target
} else { elem = evt.srcElement }
if (elem) {
if (elem.className=="tile")
{

if (isShiftDown(evt))
{ doFlag(elem.id); }
else { doUncover(elem.id); }
}
}
}
return true;
}

function rand(number) {
return Math.ceil(rnd()*number);
}

function rnd() {
rnd.seed = (rnd.seed*9301+49297) % 233280;
return rnd.seed/(233280.0);
};

function setBombs(bomb_count)
{
//choose bomb_count bombs
for (k=0;k<bomb_count; k++)
{
bx=rand(width+1)-1;
by=rand(height+1)-1;
if (tiles[bx][by]==0)
{ tiles[bx][by]=1; }
else { k--; }
}
}

function makeBoard(w,h,bomb_count)
{
text='<table id=board style="width:auto; border-collapse:collapse; border-spacing:0; border:1px solid;">';
text+='<tr><th style="border: 1px solid;" id=title colspan='+w+'>Mine Sweeper</th></tr>'
text+='<tr><td align=center colspan='+w+'>'
text+='<table width=100% id=score><tr><th>Flags</th>'
text+='<td rowspan=2 align=center><img id=startbutton src="'+img_prefix+'img/go.gif" onClick="startMineSweeper()"></td>';
text+='<th>Time</th></tr>'
text+='<tr><td align=center id=remain>'+bomb_count+'</td>'
text+='<td align=center id=time>0</td></tr></table>'
text+='</td></tr>';
for (i=0;i<w;i++)
{
tiles[i]=new Array(h);
text+='<tr>';
for (j=0;j<h;j++)
{
tiles[i][j]=0;
text+='<td class=tiletd><img onClick="return userChoice(event)" class=tile id=tile_'+i+'_'+j+' src="'+img_prefix+'img/tile.gif"></td>';
}
text+='</tr>';
}
text+='<tr><td style="font-family: sans-serif; font-size: 11px; font-weight: bold;" id=status align=center colspan='+w+'>Stiskni zelené tlačítko</td></tr>';
text+='</table></div>';
document.write(text);
//document.body.innerHTML+=text;
}

function clearBoard()
{
w=width+1;
h=height+1;
for (i=0;i<w;i++)
{
for (j=0;j<h;j++)
{
tiles[i][j]=0;
tile=find_by_id('tile_'+i+'_'+j);
tile.src=img_prefix+"img/tile.gif";
}
}
}

function initMineSweeper(w,h,bomb_count)
{
my_url=find_by_id('MineSweeper').src;
img_prefix=my_url.replace(/jsMineSweeper\.js/g,'');
tiles=new Array(w);
width=w-1;
height=h-1;
makeBoard(w,h,bomb_count);
setBombs(bomb_count);
bombs=bomb_count;
flags=bomb_count;
//showBombs();
}
var time,tickerId;

function updateScore(inc)
{
flags+=inc;
fval=find_by_id('remain');
fval.innerHTML=flags;
}
function timerTick()
{
endTimer();
time++;
timer=find_by_id('time');
timer.innerHTML=time;
startTimer();
}

function startTimer()
{
tickerId=setTimeout('timerTick()',1000);
}

function endTimer()
{
if (tickerId) { clearTimeout(tickerId); tickerId=0; }
}

var dirty=false;
function startMineSweeper()
{
startButton=find_by_id('startbutton');

if (playing) {
gameOver();
return false;
}
if (dirty) {
clearBoard();
setBombs(bombs);
flags=bombs;
updateScore(0);
}
dirty=true;
find_by_id('status').innerHTML='Hrej';
time=0;
playing=true;
startTimer();
startButton.src=img_prefix+"img/stop.gif";
return false;

}
document.write('<STYLE TYPE="text/css" MEDIA=screen> \
<!-- \
td.tiletd { line-height: 0px; padding: 0px; margin: 0px 0px 0px 0px; border: 0px solid; }\
-->\
</STYLE>');
Zadal/a: Hana MAREŠOVÁ


pridej.cz

> Vyhledávání software
> Vyhledávání článků

16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář

18.6.2018 0:43 /František Kučera
Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.
Přidat komentář

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

14.5.2018 7:28 /František Kučera
Květnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 17. 5. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: Audio – zvuk v GNU/Linuxu.
Přidat komentář

7.5.2018 16:20 /František Kučera
Na stránkách spolku OpenAlt vyšla fotoreportáž Pražské srazy 2017 dokumentující srazy za uplynulý rok. Květnový pražský sraz na téma audio se bude konat 17. 5. 2018 (místo a čas ještě upřesníme).
Přidat komentář

17.4.2018 0:46 /František Kučera
Dubnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 4. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tématem tohoto srazu bude OpenStreetMap (OSM) aneb svobodné mapy.
Přidat komentář

16.3.2018 22:01 /František Kučera
Kulatý OpenAlt sraz v Praze oslavíme klasicky: u limonády a piva! Přijďte si posedět, dát si dobré jídlo a vybrat z mnoha piv do restaurace Kulový blesk, který najdete v centru Prahy nedaleko metra I. P. Pavlova na adrese Sokolská 13, Praha 2. Sraz se koná ve čtvrtek 22. března a začínáme v 18:00. Heslo: OpenAlt. Vezměte s sebou svoje hračky! Uvítáme, když si s sebou na sraz vezmete svoje oblíbené hračky. Jestli máte nějaký drobný projekt postavený na Arduinu, nějakou zajímavou elektronickou součástku, či třeba i pěkný úlovek z crowdfundingové akce, neváhejte. Oslníte ostatní a o zábavu bude postaráno.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

16.1.2018 1:08 / Ivan Pittner
verejna ip od o2 ubuntu

15.1.2018 17:26 / Mira Harvalik
Re: Jak udělat HTML/Javascript swiping gallery do mobilu?

30.12.2017 20:16 / Michal Knoll
odmocnina

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2018) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze