js超級閃閃小遊戲代碼(js小閃電)

本文目錄一覽:

求一javascript小遊戲代碼。【註:不要叫我去下載,你直接給我複製過來就可以了】。thank!!

代碼比較長 沒有注釋

腳本說明:

把如下代碼加入body區域中

style

.bigcell {

background-color:#aa9966;

border:4px solid #aa9966;

text-align:center;

}

.cell {

width:40px;

height:40px;

font-family:Verdana, Arial;

font-size:10pt;

font-weight:bold;

background-color:#996633;

color:#ffff33;

border-top:2px solid #aa9966;

border-left:2px solid #aa9966;

border-right:2px solid #663300;

border-bottom:2px solid #663300;

text-align:center;

}

.hole {

width:40px;

height:40px;

background-color:#aa9966;

text-align:center;

}

body,h1,h2,h3,.msg,capt1,capt2 {font-family:Verdana,Comic Sans MS,Arial;}

body {margin:0px;}

h1 {font-size:28pt; font-weight:bold; margin-bottom:0px;}

h2 {font-size:16pt; margin:0px; font-weight:bold;}

h3 {font-size:8pt; margin:0px; font-weight:bold;}

.msg {font-size:8pt; font-weight:bold;}

.tab {cursor:hand;}

.capt1 {font-size:10pt; font-weight:bold;}

.capt2 {font-size:9pt; font-weight:bold;}

.capt3 {font-size:14pt; font-weight:bold; color:yellow;}

.capt4 {font-size:10pt; font-weight:bold; color:yellow;}

.but {font-size:9pt; font-weight:bold; height:30px;background-color:#aaaa99;}

/style

BODY onLoad=”loadBoard(4)”

script

var gsize, ghrow, ghcol, gtime, gmoves, gintervalid=-1, gshuffling;

function toggleHelp()

{

if (butHelp.value == “Hide Help”)

{

help.style.display = “none”;

butHelp.value = “Show Help”;

}

else

{

help.style.display = “”;

butHelp.value = “Hide Help”;

}

}

//random number between low and hi

function r(low,hi)

{

return Math.floor((hi-low)*Math.random()+low);

}

//random number between 1 and hi

function r1(hi)

{

return Math.floor((hi-1)*Math.random()+1);

}

//random number between 0 and hi

function r0(hi)

{

return Math.floor((hi)*Math.random());

}

function startGame()

{

shuffle();

gtime = 0;

gmoves = 0;

tickTime();

gintervalid = setInterval(“tickTime()”,1000);

}

function stopGame()

{

if (gintervalid==-1) return;

clearInterval(gintervalid);

fldStatus.innerHTML = “”;

gintervalid=-1;

}

function tickTime()

{

showStatus();

gtime++;

}

function checkWin()

{

var i, j, s;

if (gintervalid==-1) return; //game not started!

if (!isHole(gsize-1,gsize-1)) return;

for (i=0;igsize;i++)

for (j=0;jgsize;j++)

{

if (!(i==gsize-1 j==gsize-1)) //ignore last block (ideally a hole)

{

if (getValue(i,j)!=(i*gsize+j+1).toString()) return;

}

}

stopGame();

s = “table cellpadding=4”;

s += “trtd align=center class=capt3!! CONGRATS !!/td/tr”;

s += “tr class=capt4td align=centerYou have done it in ” + gtime + ” secs “;

s += “with ” + gmoves + ” moves!/td/tr”;

s += “trtd align=center class=capt4Your speed is ” + Math.round(1000*gmoves/gtime)/1000 + ” moves/sec/td/tr”;

s += “/table”;

fldStatus.innerHTML = s;

// shuffle();

}

function showStatus()

{

fldStatus.innerHTML = “Time: ” + gtime + ” secs Moves: ” + gmoves

}

function showTable()

{

var i, j, s;

stopGame();

s = “table border=3 cellpadding=0 cellspacing=0 bgcolor=’#666655’trtd class=bigcell”;

s = s + “table border=0 cellpadding=0 cellspacing=0”;

for (i=0; igsize; i++)

{

s = s + “tr”;

for (j=0; jgsize; j++)

{

s = s + “td id=a_” + i + “_” + j + ” onclick=’move(this)’ class=cell” + (i*gsize+j+1) + “/td”;

}

s = s + “/tr”;

}

s = s + “/table”;

s = s + “/td/tr/table”;

return s;

}

function getCell(row, col)

{

return eval(“a_” + row + “_” + col);

}

function setValue(row,col,val)

{

var v = getCell(row, col);

v.innerHTML = val;

v.className = “cell”;

}

function getValue(row,col)

{

// alert(row + “,” + col);

var v = getCell(row, col);

return v.innerHTML;

}

function setHole(row,col)

{

var v = getCell(row, col);

v.innerHTML = “”;

v.className = “hole”;

ghrow = row;

ghcol = col;

}

function getRow(obj)

{

var a = obj.id.split(“_”);

return a[1];

}

function getCol(obj)

{

var a = obj.id.split(“_”);

return a[2];

}

function isHole(row, col)

{

return (row==ghrow col==ghcol) ? true : false;

}

function getHoleInRow(row)

{

var i;

return (row==ghrow) ? ghcol : -1;

}

function getHoleInCol(col)

{

var i;

return (col==ghcol) ? ghrow : -1;

}

function shiftHoleRow(src,dest,row)

{

var i;

//conversion to integer needed in some cases!

src = parseInt(src);

dest = parseInt(dest);

if (src dest)

{

for (i=src;idest;i++)

{

setValue(row,i,getValue(row,i+1));

setHole(row,i+1);

}

}

if (dest src)

{

for (i=src;idest;i–)

{

setValue(row,i,getValue(row,i-1));

setHole(row,i-1);

}

}

}

function shiftHoleCol(src,dest,col)

{

var i;

//conversion to integer needed in some cases!

src = parseInt(src);

dest = parseInt(dest);

if (src dest)

{//alert(“src=” + src +” dest=” + dest + ” col=” + col);

for (i=src;idest;i++)

{//alert(parseInt(i)+1);

setValue(i,col,getValue(i+1,col));

setHole(i+1,col);

}

}

if (dest src)

{

for (i=src;idest;i–)

{

setValue(i,col,getValue(i-1,col));

setHole(i-1,col);

}

}

}

function move(obj)

{

var r, c, hr, hc;

if (gintervalid==-1 !gshuffling)

{

alert(‘請點擊”開始遊戲”按鈕’)

return;

}

r = getRow(obj);

c = getCol(obj);

if (isHole(r,c)) return;

hc = getHoleInRow(r);

if (hc != -1)

{

shiftHoleRow(hc,c,r);

gmoves++;

checkWin();

return;

}

hr = getHoleInCol(c);

if (hr != -1)

{

shiftHoleCol(hr,r,c);

gmoves++;

checkWin();

return;

}

}

function shuffle()

{

var t,i,j,s,frac;

gshuffling = true;

frac = 100.0/(gsize*(gsize+10));

s = “% “;

for (i=0;igsize;i++)

{

s += “|”;

for (j=0;jgsize+10;j++)

{

window.status = “Loading ” + Math.round((i*(gsize+10) + j)*frac) + s

if (j%2==0)

{

t = r0(gsize);

while (t == ghrow) t = r0(gsize); //skip holes

getCell(t,ghcol).click();

}

else

{

t = r0(gsize);

while (t == ghcol) t = r0(gsize); //skip holes

getCell(ghrow,t).click();

}

}

}

window.status = “”;

gshuffling = false;

}

function loadBoard(size)

{

gsize = size;

board.innerHTML = showTable(gsize);

setHole(gsize-1,gsize-1);

//shuffle();

}

/script

div id=test/div

table cellpadding=4

trtd align=center

b請選擇難度: /B

select id=level onchange=”loadBoard(parseInt(level.value))”

option value=’3’3/option

option value=’4′ selected4/option

script

for (var i=5;i=10;i++)

{

document.write(“option value='” + i + “‘” + i + “/option”);

}

/script

/select

/td/tr

trtd align=center

input type=button class=but value=”開始遊戲” onclick=”startGame();”

trtd align=center id=fldStatus class=capt2

/td/tr

/table

div id=board/div

js編寫的小遊戲有哪些

有是有,但並不是很多,而且都是貪吃蛇之類的,非常小的遊戲,即便是頁游也一樣。

能運行在瀏覽器端的語言,確實只有JS,但在開發階段,卻並不一定要使用JS寫。而是用其他語言寫,直接使用JS寫遊戲,實在太自虐了。

JS本身的缺點非常嚴重,如果只是寫DOM的話,其實並沒什麼感覺,因為代碼量太少。

但如果寫類似遊戲這種複雜邏輯,代碼量一變大,瞬間就令人崩潰了。弱類型,回調地獄問題,即便將來版本更新到ES10,也不可能完全解決。

如果你看過一個遊戲項目的JS源碼,你會發現一個非常恐怖的現象。在代碼的最底部,有幾百個,甚至幾千個大括弧。。。。所有大型程序的JS源碼,拉到最底部,大概都是長這個樣子的:

} } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } }.Listen(127.0.0.1) } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } }

大括弧的數量還必須絕對精準,少一個,或者多一個,都無法正常運行。。。這就是平時所說的回調地獄。由於JS項目總是函數裡面套函數,層層相套,這叫做回調函數。層數一多,就算你是N年的老手,也照樣懵比。。。。

所有的遊戲項目,都比網頁特效的代碼量要多的多。。。比如寫一個鬥地主,就需要4,5萬行的JS代碼。。。。。最底部的大括弧數量,輕鬆上千。。。。

弱類型的缺陷更嚴重,但由於解釋起來篇幅會很長,所以這裡就不提了。

所以為了避開JS本身太多的語法缺陷,一般遊戲項目,都是使用其他語言編寫,最後再通過一些手段,編譯成JS。。。就如同你用一般編程語言編寫,最終運行的時候,只有1和0的道理一樣。。。在製作頁游的時候,一般都是用強類型語言編寫,最後開發完成之後,把那些強類型語言編寫的代碼,通過一些手段「轉換」成JS代碼。

「轉換」成JS代碼的方法有很多,其中在遊戲行業比較主流的,一共有三種:

1,ActionScript語言,簡稱AS語言。也就是當年FLASH使用的那個語言。。。當年也曾輝煌過,後來隨著FLASH的沒落而逐漸沒落。。。但有很多H5遊戲引擎,也同樣使用AS語言。比如LayaAir引擎等。

2,TypeScript語言,簡稱TS語言。由微軟出品,微軟和谷歌共同維護的一門完全符合ECMA標準的語言,可以視作JS的超集。超集這個概念怎麼理解呢?就是「所有的JS語言,同時也是TS語言,而TS比今天的JS,更像未來的JS」。就比如目前的JS版本只出到了ES6或ES7。那麼ES10是啥樣?現在並沒人見過,連ECMA組織也不知道。。。但有一點可以確定的是,它和TypeScript長的很像。而TS是包含JS的。換言之,JS本身也可以視作是TS的一部分。只是TS里的內容要遠比JS多的多。這語言主要有兩種用法,一是像AS語言一樣結合遊戲引擎,比如cocos creator,白鷺等引擎都支持。還有一種用法就是。。。結合Three.JS之類的庫,完全按照JS本身的用法去使用。

3,C#語言。雖然JS得名字裡面帶個Java。但和它長的最像的語言,卻並不是JAVA,而是C#。簡單說就是:「JS的名字和JAVA有多像,語法就和C#有多像」。所以C#也比較容易轉換成JS。但這並不是重點,重點是有一個超級牛的遊戲引擎,是使用C#作為開發語言的。就是大名鼎鼎的Unity3D。Unity3D可以直接把C#編寫的遊戲項目,虛擬現實項目等,編譯發布到WebGL。

js編寫小遊戲控制子彈的移動,當第二顆子彈發射時第一顆子彈卡死

要發射多顆子彈,就要循環,無論是for還是while還是其他都可以。

就是不能變數共享,不然就是子彈卡在屏幕不動了。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/309086.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-04 19:30
下一篇 2025-01-04 19:30

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29
  • 北化教務管理系統介紹及開發代碼示例

    本文將從多個方面對北化教務管理系統進行介紹及開發代碼示例,幫助開發者更好地理解和應用該系統。 一、項目介紹 北化教務管理系統是一款針對高校學生和教職工的綜合信息管理系統。系統實現的…

    編程 2025-04-29

發表回復

登錄後才能評論