WEEK 06 · JAVASCRIPT
03|運算與條件判斷
看懂一小段,動手改一點,再回到遊戲找用途。
符號的意思
| 符號 | 意思 | 例子 |
|---|---|---|
| = | 指定值 | state = 'win' |
| === / !== | 嚴格相等/不相等 | state === 'playing' |
| += / -= | 加上/減去再存回 | x += 5 等同 x = x + 5 |
| <、>、<=、>= | 大小比較 | nextShot <= 0 |
| && / || / ! | 且/或/非 | !en.alive:敵機不存活 |
| * / / / % | 乘/除/餘數 | i % 3:0、1、2 循環 |
判斷後才執行
若不是遊戲進行狀態,就 return 離開目前函式。=== 不會先幫你轉型,例如數字 3 與字串 '3' 不相等。
if (state !== 'playing') return;
if (e.key === 'r' || e.key === 'R') init();命中判斷:全部條件都成立
Math.abs() 取絕對值。下面要求敵機還活著,而且子彈中心與敵機中心的水平、垂直距離都落在半寬/半高內。這是簡化的矩形判斷,不是照飛機輪廓逐點碰撞。
if (en.alive &&
Math.abs(b.x - en.x) < en.w / 2 &&
Math.abs(b.y - en.y) < en.h / 2) {
en.alive = false;
}三元運算與短路寫法
條件 ? 成立時的值 : 不成立時的值 用來選一個結果。A && B 只有 A 為真值才執行 B;A || B 則在 A 為假值時使用 B,不一定回傳布林值。
const message = state === 'win' ? '你贏了!' : '你輸了…';
en.alive && drawEnemy(en); // 活著才繪圖
const chosen = color || '#ff9800'; // color 未提供或為空字串等假值時用預設色操作看看
輸入成績後按判斷。
動手修改
用 if 判斷成績,60 分以上顯示及格。注意不要把 === 寫成 =。
展開參考答案
先驗證輸入不是空白、是有限數字且介於 0~100,再作比較。
if (score >= 60) {
message.textContent = '及格';
} else {
message.textContent = '不及格';
}