之前看別人寫小遊戲覺得很厲害,正好最近閒來無聊,就寫了個入門級的小遊戲,貪吃蛇。
當你開始實現的時候,會發現其實並沒有你想的那麼難。下面進入正題。
專案原始碼見:
1. 首先畫出背景
2. 然後初始化初始蛇的位置,蛇為黑色,食物為紅色
renderbackground()
let trs = ;
for (let i = 0; i < size.row; i++) else if (value === 1) )
} else if (value === 2) )}}
trs.push()
}return ;
}// 獲取在方塊中蛇以及食物的顯示
getsnack = (c, r) => = this.state;
for (let s in snake)
// 如果這個點是食物,則返回2
if (food.x === c && food.y === r)
} // 如果這個點什麼都不是返回0
return 0;
}
3. 蛇可以定時移動
// 定時自己移動
timer = () => .bind(this), 600);
this.setstate()
}
4. 通過鍵盤控制蛇的移動
componentdidmount() )
} else if (keycode === 38 || keycode === 87) )
} else if (keycode === 39 || keycode === 68) )
} else if (keycode === 40 || keycode === 83) )
} }.bind(this);
// 初次渲染的時候開啟定時
this.timer();
}
5. 蛇吃完食物變長,繼續行走,蛇頭撞到自己失敗,重新開始
6. 蛇的每個部分統一行走,轉換方向時,後乙個按照前乙個的軌跡進行行走
7. 超過邊界時,重新開始
move = (dir) => = this.state;
let first =
let last = {};
// move
if (dir === direction.up) else if (dir === direction.down) else if (dir === direction.left) else if (dir === direction.right)
// 撞到自己
let _snake = snake.filter(item => item.x === first.x && item.y === first.y)
if (first.y > size.col - 1 || first.y < 0 || first.x < 0 || first.x > size.row - 1 || _snake.length > 0)
let eat = false;
// 吃到食物
if (first.x === food.x && first.y === food.y)
this.showfood();
} // 蛇整體動起來
for (let s in snake) ;
snake[s].x = first.x;
snake[s].y = first.y;
first = next_first;
} // 吃到食物之後蛇變長
if (eat)
this.setstate()
}
8. 暫停,遊戲暫停,蛇不動
// 暫停
pause = () => )
}
9. 開始,蛇繼續行走
// 開始
handlestart = () => = this.state;
if (status === 'pause')
}
10. 計分,每吃乙個食物,則加一分
// 顯示新的食物
showfood = () =>
//每次顯示新的食物意味著吃了上乙個食物,加1分
let score = this.state.score + 1;
this.setstate(, score })
}
11. 重新開始,回到初始化狀態
// 重新開始
handlerestart = () => ],
food: ,
dir: direction.right,
interval: 2,
status: 'start',
score: 0
}) this.timer()
}
12. 優化介面,對頁面布局進行優化 貪吃蛇小遊戲實現
index.html style.css mapindex.js tools.js 自呼叫函式傳入window的目的,是讓變數可以被壓縮 防止undefined重新命名,也可以被壓縮 function window,undefined 暴露tools給window window.tools tool...
貪吃蛇小遊戲
1 doctype html 2 html 3 head 4 title snake title 5head 6 body style text align center margih 100px background color aaaaaa 7 canvas id canv width 400 ...
java swing 實現貪吃蛇小遊戲
if i 1 radomg jpanel.getgraphics radomg.setcolor color.red 建立乙個蛇執行緒 drawsnak snakt new drawsnak snakt.start snakg jpanel.getgraphics snakg.setcolor co...