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ů

13.9.2017 8:00 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

3.9.2017 20:45 /Redakce Linuxsoft.cz
PR: Dne 21. září 2017 proběhne v Praze konference "Mobilní řešení pro business". Hlavní tématy konference budou: nejnovější trendy v oblasti mobilních řešení pro firmy, efektivní využití mobilních zařízení, bezpečnostní rizika a řešení pro jejich omezení, správa mobilních zařízení ve firmách a další.
Přidat komentář

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

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

> Poslední diskuze

18.9.2017 14:37 / Rojas
high security vault

15.9.2017 7:33 / Wilson
new zealand childcare jobs

31.8.2017 12:11 / Jaromir Obr
Re: ukůládání dat ze souboru

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

Více ...

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