本文目錄一覽:
- 1、求一javascript小遊戲代碼。【註:不要叫我去下載,你直接給我複製過來就可以了】。thank!!
- 2、js編寫的小遊戲有哪些
- 3、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-hant/n/309086.html