ผลต่างระหว่างรุ่นของ "Se63/typescript/zombie"
ไปยังการนำทาง
ไปยังการค้นหา
Jittat (คุย | มีส่วนร่วม) |
Jittat (คุย | มีส่วนร่วม) |
||
| แถว 67: | แถว 67: | ||
ทำความเข้าใจกันก่อน | ทำความเข้าใจกันก่อน | ||
* <tt>gameBoard</tt> เป็น global ทำให้เราเรียก <tt>gameBoard.step()</tt> ใน console ให้เกมทำงานทีละขั้นได้ | * <tt>gameBoard</tt> เป็น global ทำให้เราเรียก <tt>gameBoard.step()</tt> ใน console ให้เกมทำงานทีละขั้นได้ | ||
| + | |||
| + | == clean showBoard กันก่อน == | ||
| + | |||
| + | เมทอด <tt>showBoard</tt> นั้นค่อนข้างยาวและอ่านยาก เราจะแยกเป็น method ย่อย ๆ โดยเราจะแยกเป็น <tt>initBoardArray</tt> กับ <tt>showBoardArray</tt> | ||
| + | |||
| + | <pre> | ||
| + | initBoardArray(): char[][] { | ||
| + | let boardRows = []; | ||
| + | for (let i = 0; i < boardHeight; i++) { | ||
| + | let rowChars = []; | ||
| + | for (let j = 0; j < boardWidth; j++) { | ||
| + | rowChars.push(' '); | ||
| + | } | ||
| + | boardRows.push(rowChars); | ||
| + | } | ||
| + | return boardRows; | ||
| + | } | ||
| + | |||
| + | showBoardArray(boardRows: char[][]) { | ||
| + | let boardStr = boardRows.map((row) => { | ||
| + | return row.join('') + "\n"; | ||
| + | }).join(''); | ||
| + | |||
| + | let boardElement = document.getElementById('gameBoard'); | ||
| + | boardElement.innerHTML = boardStr; | ||
| + | } | ||
| + | |||
| + | showBoard() { | ||
| + | let boardRows = this.initBoardArray(); | ||
| + | |||
| + | boardRows[this.pY][this.pX] = '@'; | ||
| + | for (let i = 0; i < this.botCount; i++) { | ||
| + | boardRows[this.botYs[i]][this.botXs[i]] = 'B'; | ||
| + | } | ||
| + | |||
| + | this.showBoardArray(boardRows); | ||
| + | } | ||
| + | </pre> | ||
| + | |||
== แกะ player และ bots == | == แกะ player และ bots == | ||
รุ่นแก้ไขเมื่อ 06:45, 10 กรกฎาคม 2563
เนื้อหา
โค้ดเริ่มต้น
ใส่ใน jsfiddle
ส่วน HTML
<html>
<body>
<pre id="gameBoard"></pre>
</body>
</html>
ส่วน Typescript (เลือก Javascript เปลี่ยนภาษาเป็น Typescript)
const boardHeight = 30;
const boardWidth = 50;
class GameBoard {
constructor() {
this.pX = 25;
this.pY = 15;
this.botCount = 5;
this.botXs = [10,20,30,40,50];
this.botYs = [5,10,20,15,25,12]
}
showBoard() {
let boardRows = [];
for (let i = 0; i < boardHeight; i++) {
let rowChars = [];
for (let j = 0; j < boardWidth; j++) {
rowChars.push(' ');
}
boardRows.push(rowChars);
}
boardRows[this.pY][this.pX] = '@';
for (let i = 0; i < this.botCount; i++) {
boardRows[this.botYs[i]][this.botXs[i]] = 'B';
}
let boardStr = boardRows.map((row) => {
return row.join('') + "\n";
}).join('');
let boardElement = document.getElementById('gameBoard');
boardElement.innerHTML = boardStr;
}
moveBots() {
for (let i=0; i < this.botCount; i++) {
this.botXs[i]--;
}
}
step() {
this.moveBots();
this.showBoard();
}
}
gameBoard = new GameBoard();
gameBoard.showBoard();
ทำความเข้าใจกันก่อน
- gameBoard เป็น global ทำให้เราเรียก gameBoard.step() ใน console ให้เกมทำงานทีละขั้นได้
clean showBoard กันก่อน
เมทอด showBoard นั้นค่อนข้างยาวและอ่านยาก เราจะแยกเป็น method ย่อย ๆ โดยเราจะแยกเป็น initBoardArray กับ showBoardArray
initBoardArray(): char[][] {
let boardRows = [];
for (let i = 0; i < boardHeight; i++) {
let rowChars = [];
for (let j = 0; j < boardWidth; j++) {
rowChars.push(' ');
}
boardRows.push(rowChars);
}
return boardRows;
}
showBoardArray(boardRows: char[][]) {
let boardStr = boardRows.map((row) => {
return row.join('') + "\n";
}).join('');
let boardElement = document.getElementById('gameBoard');
boardElement.innerHTML = boardStr;
}
showBoard() {
let boardRows = this.initBoardArray();
boardRows[this.pY][this.pX] = '@';
for (let i = 0; i < this.botCount; i++) {
boardRows[this.botYs[i]][this.botXs[i]] = 'B';
}
this.showBoardArray(boardRows);
}