開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- JavaScript (プログラミング言語)
- Safari(Web browser)
Head First JavaScript Programming (Eric T. Freeman (著)、Elisabeth Robson (著)、O'Reilly Media)の Chapter 8.(Building an app - Bringing it All Together)の SHARPEN YOUR PENCIL(No. 5074)を取り組んでみる。
SHARPEN YOUR PENCIL(No. 5074)
コード(Emacs)
HTML5
<link rel="stylesheet" href="sample2.css"> <div id="board"> <div id="messageArea"></div> <table> <tr> <td id="00"></td><td id="01"></td><td id="02"></td><td id="03"></td><td id="04"></td><td id="05"></td><td id="06"></td> </tr> <tr> <td id="10"></td><td id="11"></td><td id="12"></td><td id="13"></td><td id="14"></td><td id="15"></td><td id="16"></td> </tr> <tr> <td id="20"></td><td id="21"></td><td id="22"></td><td id="23"></td><td id="24"></td><td id="25"></td><td id="26"></td> </tr> <tr> <td id="30"></td><td id="31"></td><td id="32"></td><td id="33"></td><td id="34"></td><td id="35"></td><td id="36"></td> </tr> <tr> <td id="40"></td><td id="41"></td><td id="42"></td><td id="43"></td><td id="44"></td><td id="45"></td><td id="46"></td> </tr> <tr> <td id="50"></td><td id="51"></td><td id="52"></td><td id="53"></td><td id="54"></td><td id="55"></td><td id="56"></td> </tr> <tr> <td id="60"></td><td id="61"></td><td id="62"></td><td id="63"></td><td id="64"></td><td id="65"></td><td id="66"></td> </tr> </table> <div id="form0"> <input id="input0" type="text" id="guessInput0" placeholder="A0"> <button id="fireButton">Fire!</button> </div> </div> <pre id="output0"></pre> <button id="run0">run</button> <button id="clear0">clear</button> <script src="sample3.js"></script>
CSS
<link rel="stylesheet" href="sample2.css"> <div id="board"> <div id="messageArea"></div> <table> <tr> <td id="00"></td><td id="01"></td><td id="02"></td><td id="03"></td><td id="04"></td><td id="05"></td><td id="06"></td> </tr> <tr> <td id="10"></td><td id="11"></td><td id="12"></td><td id="13"></td><td id="14"></td><td id="15"></td><td id="16"></td> </tr> <tr> <td id="20"></td><td id="21"></td><td id="22"></td><td id="23"></td><td id="24"></td><td id="25"></td><td id="26"></td> </tr> <tr> <td id="30"></td><td id="31"></td><td id="32"></td><td id="33"></td><td id="34"></td><td id="35"></td><td id="36"></td> </tr> <tr> <td id="40"></td><td id="41"></td><td id="42"></td><td id="43"></td><td id="44"></td><td id="45"></td><td id="46"></td> </tr> <tr> <td id="50"></td><td id="51"></td><td id="52"></td><td id="53"></td><td id="54"></td><td id="55"></td><td id="56"></td> </tr> <tr> <td id="60"></td><td id="61"></td><td id="62"></td><td id="63"></td><td id="64"></td><td id="65"></td><td id="66"></td> </tr> </table> <div id="form0"> <input id="input0" type="text" id="guessInput0" placeholder="A0"> <button id="fireButton">Fire!</button> </div> </div> <pre id="output0"></pre> <button id="run0">run</button> <button id="clear0">clear</button> <script src="sample3.js"></script>
JavaScript
let btn0 = document.querySelector('#run0'), btn1 = document.querySelector('#clear0'), pre0 = document.querySelector('#output0'), p = (x) => pre0.textContent += x + '\n'; let view = { displayMessage : (msg) => { let messageArea = document.querySelector('#messageArea0'); messageArea.textContent = msg; }, displayHit: (loc) => { let cell = document.getElementById(loc); cell.setAttribute('class', 'hit'); }, displayMiss: (loc) => { let cell = document.getElementById(loc); cell.setAttribute('class', 'miss'); } }; let an = {A:0, B:1, C:2, D:3, E:4, F:5, G:6}; let ships = [{locations: ['31', '41', '51'], hits: ['', '', '']}, {locations: ['14', '24', '34'], hits: ['', 'hit', '']}, {locations: ['00', '01', '02'], hits: ['hit', '', '']}]; let output = () => { let ship2 = ships[1], locations = ship2.locations; p(`Location is ${locations[1]}`) let ship3 = ships[2], hits = ship3.hits; if (hits[0] === 'hit') { p('Ouch, hit on third ship at location one'); } let ship1 = ships[0]; hits = ship1.hits; hits[2] = 'hit'; ships.forEach((ship) => { let locations = ship.locations, hits = ship.hits; locations.forEach((loc, i) => { if (hits[i] === 'hit') { view.displayHit(loc); } else { view.displayMiss(loc); } }); }); }; let clear = () => { pre0.textContent = ''; ships.forEach((ship) => { let locations = ship.locations, hits = ship.hits; locations.forEach((loc, i) => { let cell = document.getElementById(loc); cell.removeAttribute('class'); }); }); }; btn0.onclick = output; btn1.onclick = clear; output();
0 コメント:
コメントを投稿