程式1: 彈來彈去的球
《程式碼本色:用程式設計模擬自然系統》是一本好書,一定要讀一讀。用程式設計模擬自然,是我一直以來都想做的事,也是我程式設計的熱情所在。無奈自己的數學和物理知識越剩越少,所以心有餘而力不足。現在這本書來了,學完這本書一定可以讓自己過夠癮。
此書的紙板和電子版都很貴,但程式碼可以在 圖靈社群 下載。不過程式碼是用很少有人熟悉的 processing
語言寫的,於是決定自己用 html5
都實現一遍,並將程式碼託管在GitHub上。
之所以選擇html5,是因為不需要額外的配置,只要有一個現代的瀏覽器就可以觀看程式的執行。另一個原因,就是趁機學習一下html5。
先來第一個簡單的吧: Bouncing Ball。顧名思義,這是一個彈來彈去的球。
下面是我用html5的實現,拷貝下列程式碼,儲存為字尾為html的網頁檔案,用瀏覽器開啟即可。
<!doctype html>
<html>
<head>
<title>random walker</title>
<meta charset="utf-8" />
<meta name="author" content="JollyWing(jiqingwu@gmail.com)"/>
<meta name="create" content="2014-12-16 Tue"/>
<style type="text/css">
#screen {border:1px solid #000;}
</style>
<script>
var x = 100;
var y = 100;
var xspeed = 11;
var yspeed = 10;
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(){
x = x + xspeed;
y = y + yspeed;
if(x > width - 2 || x < 2){
xspeed = xspeed * -1;
}
if(y > height - 2 || y < 2){
yspeed = yspeed * -1;
}
console.log(x + ',' + y);
context.arc(x, y, 2, 0, 2*Math.PI);
context.stroke();
timeOut = setTimeout('walk()', 200);
}
function stopWalk(){
clearTimeout(timeOut);
}
</script>
</head>
<body onload='initScr()'>
<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>
下面是一個物件導向的版本:
<!doctype html>
<html>
<head>
<title>random walker</title>
<meta charset="utf-8" />
<meta name="author" content="JollyWing(jiqingwu@gmail.com)"/>
<meta name="create" content="2014-12-16 Tue"/>
<style type="text/css">
#screen {border:1px solid #000;}
</style>
<script>
var sprite = {
x:100,
y:100,
xspeed:11,
yspeed:10,
radius:2,
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){
this.xspeed = this.xspeed * -1;
}
if(this.y > canvasHeight - this.radius || this.y < this.radius){
this.yspeed = this.yspeed * -1;
}
},
draw:function(context){
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(){
sprite.move(width, height);
sprite.draw(context);
timeOut = setTimeout('walk()', 200);
}
function stopWalk(){
clearTimeout(timeOut);
}
</script>
</head>
<body onload='initScr()'>
<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>
執行效果如圖:
如果你喜歡我的文章,可以點 這裡 給我打賞,五分一毛也是對我的認同。
相關文章
- CSS3彈球效果程式碼例項CSSS3
- 20:球彈跳高度的計算
- Python Turtle實現彈球Python
- winrar去廣告彈窗
- python簡單遊戲-反彈球Python遊戲
- PONG - 100行程式碼寫一個彈球遊戲行程遊戲
- 彈彈彈,彈走魚尾紋的彈出選單(vue)Vue
- 光碟機彈不出來 電腦光碟機彈不出來的解決辦法
- 使用 Flutter 與 Firebase 製作 I/O 彈球遊戲Flutter遊戲
- 使用canvas實現一個圓球的觸壁反彈Canvas
- (1)刷題第一彈
- layui使用彈出層 關閉後彈層的內容又顯示出來UI
- 一行js彈窗程式碼就能設計漂亮的彈窗廣告JS
- 《球球大作戰》原始碼解析——(1)執行起來原始碼
- JS彈幕程式碼分析JS
- 彈出視窗程式碼
- 網路安全的未來:主動彈性
- 「Wdoi-(-1)」戀彈者們的黑集市
- 每次開啟wps都會彈出廣告,怎麼設定取消掉彈屏,wps去廣告的小技巧
- win10禁止程式彈廣告設定方法 win10如何禁止程式彈廣告Win10
- 二進位制彈球計算機及兩個相關的奇妙系統計算機
- 彈框
- 類彈球遊戲關卡難度量化要素:關卡元素,位置,生命值遊戲
- react-native第二彈來了!React
- 深圳大學電信學院《C程式設計》期末大作業:《在二維封閉房間中的彈球模擬程式》C程式程式設計
- 真的有人把“彈窗廣告”裡的遊戲做出來了!遊戲
- 彈框 在Avalonia中,使用系統預設的彈框
- Dapr 彈性的策略
- uniapp彈窗24小時之後彈APP
- js+canvas仿微信《彈一彈》小遊戲JSCanvas遊戲
- JavaScript彈幕效果程式碼詳解JavaScript
- 廣告彈窗/小視窗程式碼
- 彈好工作三步曲,波瀾不驚去創新
- Android彈幕功能實現,模仿鬥魚直播的彈幕效果Android
- 微軟打擊盜版出新招 彈出氣球令盜版者煩惱微軟
- GPU程式設計(零):老黃和他的核彈們GPU程式設計
- Flutter · Python AI 彈幕播放器來襲FlutterPythonAI播放器
- 將MySQL去重操作優化到極致之三彈連發MySql優化