iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
1
自我挑戰組

一週程式專案挑戰系列 第 14

[專案02]自製踩地雷(日)玩家有不死之身

  • 分享至 

  • xImage
  •  

挑戰失敗,踩到地雷還是可以繼續進行遊戲。

【大綱】

  • 遊戲實作
  • Github
  • 心得
    作品:踩地雷
    畫面有點小請見諒,
    後面要在做調整。

【遊戲實作】

參考:JS新增元素及屬性(英文)
進階版:JS新增元素及屬性(英文)

用字串串接方式加屬性,
當需要大量屬性,
就會變得非常不易閱讀。
如下:

//<button value="*" class="boom" onclick="game(this)">*</button>
map[1].innerHtml+="<button value="+"value變數"
+"class="+"class變數"+"onclick=game(this)>"
+"value變數"+"</button>"

既然我會遇到這個問題,
或許別人也會有同樣困擾。
「js create element with attributes」,
才剛打幾個字就跳出後面,
看來很多人搜尋過。

//地圖完成
for (let wd=0;wd<mapsize**2;wd++){
	let row =Math.floor(wd/mapsize);
	let col =wd%mapsize;
	var btnGod = document.createElement("button");
	var btnMain = document.createElement("button");
	
	//上帝視角
	btnGod.setAttribute('value',boommap[row][col]);
	btnGod.setAttribute('class',switchMap(boommap[row][col]));
	btnGod.innerText=boommap[row][col];
	map[0].appendChild(btnGod);
	
	//遊戲地圖
	btnMain.setAttribute('value',boommap[row][col]);
	btnMain.setAttribute('class',"unknow");
	btnMain.setAttribute('onclick',"game(this)");
	map[1].appendChild(btnMain);
	
}

總算看到這個畫面,
回過頭來只剩一小時
https://ithelp.ithome.com.tw/upload/images/20190915/20091910bFBXKF4kTL.jpg

//判斷地圖狀態
function switchMap(ifmap){
	if(ifmap=="*")return "boom";
	if(ifmap==0)return "empty";
	return "number";
}

//遊戲
function game(me){	
	me.innerText=me.value;
	me.setAttribute('class',switchMap(me.value));
}

【心得】

好久沒用Github中間空白好多,
為了放作品放上來,
複習一下久遠的文章。

感謝撥冗閱讀,
有錯誤地方請多指教。


上一篇
[專案02]自製踩地雷(六)地圖完成!!
下一篇
[專案02]自製踩地雷(八)JS控制CSS屬性
系列文
一週程式專案挑戰26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言