程式2:一直向前
這個例子裡,描述了一個一直向前的物件。
每一次,物件會隨機選一個出生位置和一個方向,然後一直運動下去。如果碰到邊緣,就會轉到畫布的另一邊繼續沿原來的方向前進。
html5程式碼如下(可以從https://github.com/jollywing/nature_of_code_examples_html5/blob/master/chp1_vectors/mover.html 下載該檔案):
<!doctype html>
<html>
<head>
<title>Mover</title>
<meta charset="utf-8" />
<meta name="author" content="JollyWing(jiqingwu@gmail.com)"/>
<meta name="create" content="2014-12-17 Wed"/>
<style type="text/css">
#screen {border:1px solid #000;}
</style>
<script>
var mover = {
/* x:100,
y:100,
xspeed:11,
yspeed:10, */
radius:2,
init:function(canvasWidth, canvasHeight){
this.x = Math.floor(Math.random() * canvasWidth);
this.y = Math.floor(Math.random() * canvasHeight);
this.xspeed = 1 + Math.floor(Math.random() * 10);
this.yspeed = 1 + Math.floor(Math.random() * 10);
console.log(this.xspeed + ',' + this.yspeed);
},
move:function(canvasWidth, canvasHeight){
this.x = this.x + this.xspeed;
this.y = this.y + this.yspeed;
if(this.x > canvasWidth - this.radius){
this.x = this.radius;
}
else if(this.x < this.radius) {
this.x = canvasWidth - this.radius;
}
if(this.y > canvasHeight - this.radius){
this.y = this.radius;
}
else if(this.y < this.radius) {
this.y = canvasHeight - this.radius;
}
},
draw:function(context){
context.moveTo(this.x, this.y);
context.arc(this.x, this.y, this.radius, 0, 2*Math.PI);
context.stroke();
}
};
var timeOut;
var scr, width, height, context;
function initScr(){
scr = document.getElementById('screen');
width = scr.width;
height = scr.height;
context = scr.getContext('2d');
context.strokeStyle="red";
}
function walk(){
mover.move(width, height);
mover.draw(context);
timeOut = setTimeout('walk()', 200);
// console.log(mover.x + ',' + mover.y);
}
function stopWalk(){
clearTimeout(timeOut);
}
function init(){
initScr();
mover.init(width, height);
}
</script>
</head>
<body onload='init()'>
<p>
<canvas id="screen" width="640" height="480"></canvas>
</p>
<input type="button" value='Start' onclick='walk()'/>
<input type="button" value='Stop' onclick='stopWalk()' />
</body>
</html>
執行結果:
相關文章
- 向前看
- 面向前端的設計規範-文字初探-Part2前端
- “Java跌落向下,Python奮鬥向前”,程式設計師:看哭了...JavaPython程式設計師
- 一直想做程式設計師程式設計師
- 面向前端的後端模式(BFF)前端後端模式
- 圖論演算法 有圖有程式碼 萬字總結 向前輩致敬圖論演算法
- 圖論演算法 有圖有程式碼 萬字總結 向前輩致敬圖論演算法
- 程式使用記憶體一直飆升記憶體
- js Abba逆向前瞻正則匹配例項JS
- python 呼叫外部程式訪止一直阻塞Python
- vue2專案 一直報ts-plugin錯誤VuePlugin
- [開源] .Net ORM FreeSql 1.10.0 穩步向前ORMSQL
- css實現的文字標題向前縮排效果CSS
- 面向前端開發者的V8效能優化前端優化
- Android 民工走向前端民工的無奈Android前端
- 簡單C#遞迴(向前查詢上工序)C#遞迴
- ride中引用Selenium2Library一直報錯IDE
- “Java跌落向下,Python奮鬥向前”,網友:看哭了...JavaPython
- 面向前端開發的python入門圖譜前端Python
- 開源才是民族科技向前一步的關鍵
- 帶團隊,要不要把員工推向前臺?
- 如何將list中元素依次向前移動一位
- 這些年一直是寫程式碼的命
- 我們一直談論“寫程式碼”,但你會“讀程式碼”嗎?
- Redis低版本無法向前相容高版本RDB檔案Redis
- 面向前端的設計規範-文字初探-Part1前端
- OGG的replicat程式的Time Since Chkpt一直增加,程式處於假死狀態
- 使你的 Python 遊戲玩家能夠向前和向後跑Python遊戲
- 面向前端的 Lottie & AE 動畫手把手入門教學前端動畫
- 面向前端工程師的Nodejs入門手冊(一)前端工程師NodeJS
- 專訪CiGA創始人Simon,“獨立遊戲”向前一步遊戲
- java工程師走向前端學習心路歷程(二)Java工程師前端
- “一直不明白,程式設計師為什麼要加班。”程式設計師
- 大事發生,程式設計師一直在守護世界程式設計師
- 一直想做前端工程師的後端程式設計師前端工程師後端程式設計師
- 在執行 appium 時,發現程式一直卡在 adb /proc/net/unix, 一直待到 adb 超時才結束APP
- 面向前端開發人員的VSCode自動化外掛前端VSCode
- 寵物食品行業:從ODM大學畢業後,本土品牌企望破冰向前行業