亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript HTML5 canvas實現打磚塊游戲

2019-11-20 10:17:38
字體:
來源:轉載
供稿:網友

本文實例編寫的一個小游戲,基于HTML5中的canvas。游戲主要是小球反彈擊打小方塊。在代碼中主要實現了小方塊的生成,鍵盤鍵事件的監聽,小球的移動和碰壁之后的反彈以及怎樣消除小方塊等方法。代碼使用到了一個js腳本庫

游戲開發流程:

1、創建畫布:

將畫布放在div標簽里面,這樣可以控制畫布居中的位置,再對div標簽加上一些樣式比如border和border-radius,這樣一來使其看上去像手機,利于觀看。

<div id="main"> <!--將畫布嵌在div塊里面,使其可以居中--> <canvas id="liuming_canvas" width="300px" height="500px"> </canvas></div>

2、創建移動的小木塊:

定義一個可以用于移動的小方塊,該移動小方塊包含如下的屬性,坐標位置,小方塊的長和寬和小方塊每次移動的距離。

var diamond = { x : 100,   y : 485, width : 100, height : 15, move : 10}

3、創建用于擊打的小球:

定義一個用于移動和擊打小方塊的小球,該小球包含如下的屬性,小球的做坐標位置,半徑,在x軸和y軸的速度。其中x軸和y軸的速度是為小球計算移動的方向和移動之后的坐標值。

var ball_impact = { x : 150, y : 465, r : 10, vx : 200, vy : 200}

4、生成一系列的小方塊:

生成一系列的小方塊用于被小球擊打,小球的生成主要是根據畫布的大小和小方塊的坐標與長寬以及各個小方塊的x軸和y軸的間隔。

var diamond_impact = [];//定義存儲擊打小方塊的數組diamond_impact.length = 0;var width_span = 25; // 任意兩個小方塊的橫向間隔 var height_span = 25;  //任意兩個小方塊的水平間隔 for(var i =1 ; i <=10 ; i++){//控制每行輸出的小方塊 for(var j = 1 ; j < 10 ; j++){//輸出每列的小方塊 只有x軸和y軸的坐標不一樣而已  var diamond_impact_children = {   x : width_span,   y : height_span,   width : 10,   height : 10  };  width_span += 30;  diamond_impact.push(diamond_impact_children); //將得到的小方塊放在 diamond_impact 中,已被以后使用 } height_span += 25; width_span = 25;}

5、編寫移動小方塊的移動方法:

移動小方塊的實現,首先需要監聽獲得鍵盤的事件,之后再根據獲得的鍵盤事件來分別處理來向那個方向移動,在此處我分別定義了四個方向,目的是為了只在左右移動可能不能完全消滅小方塊,
在移動的過程之中還要判斷移動小方塊的位置,以防止是否已經出界。在此處我分別定義了四個方法來處理各個方向的移動。

//鍵盤事件,獲取當前在那個方向運動var direction = "";document.onkeydown = function (e) { if (e.keyCode == 37 ) direction = "left" ; if (e.keyCode == 39 ) direction = "right"; if (e.keyCode == 38 ) direction = "up"; if (e.keyCode == 40 ) direction = "down";} //定義四個方法來重繪制方塊的位置 分別有 左、右、上、下function move_right_diamond(){ clear_diamond();//清除以前的方塊 init_canvas_background();//再次初始化畫布 下同 //重新繪制小方塊的位置 if(diamond.x + diamond.width >= canvas.width){ //判斷方塊是否已經到達最右端  cxt.fillStyle = "#17F705";  cxt.fillRect(diamond.x,diamond.y,diamond.width,diamond.height); }else{  diamond.x += diamond.move;  cxt.fillStyle = "#17F705";  cxt.fillRect(diamond.x,diamond.y,diamond.width,diamond.height); }}//其余方法類似 

6、編寫小球移動的方法以及碰壁和接觸移動小方塊反彈的方法:

反彈:小方塊的反彈,主要改變其x軸和y軸方向的速度,由于我們定義的是勻速運動,為此我們只需要改變其速度的方向。
移動:根據小球的速度和指定的移動大小來計算出新的小球坐標,之后再繪制新的小球。
反彈圖片實例:(對于觸碰墻壁反彈類似,就不多說)

小球移動的代碼:

cxt.arc(ball_impact.x,ball_impact.y,ball_impact.r,0,Math.PI * 2,true);cxt.closePath();cxt.fill();ball_impact.x += ball_impact.vx * cyc /1000;//改變其坐標的位置ball_impact.y += ball_impact.vy * cyc /1000;

7、小球擊打小方塊,小方塊消失的方法:

擊打:小球擊打小方框,主要判斷小球和小方塊的坐標位置即可。注意此處將會分別判斷y軸和x軸將小球的擊打的小方塊限定在一個區域里面。
小時:擊中當前小方塊之后改變其長寬,之后重繪小方塊即可,由于當前的小方塊的長寬都為0,即繪制之后的小方塊沒有。
圖解擊打的坐標變化:

8、判斷游失敗和成功的方法:

失?。菏且∏虻牡舻阶畹投思葱∏虻腨坐標大于畫布的Y坐標 就是失敗;
成功:計數判斷是否消滅的小方塊數是否和指定的小方塊數相同。

if(ball_impact.y + ball_impact.r >= canvas.height){ cxt.fillStyle = "#FC0000"; cxt.font = "bold 50px 微軟雅黑"; cxt.fillText("FAILURE!",30,250); diamond.move = 0;//不能移動板塊}//判斷是否與所有的小方塊數相等if(count_sum == 90){ cxt.fillStyle = "#FCF205"; cxt.font = "bold 50px 微軟雅黑"; cxt.fillText("SUCCESS!",20,250);//在畫布上書寫SUCCESS  diamond.move = 0;//不能移動板塊 ball_impact.vx =0; ball_impact.vy =0;else{ count_sum = 0;}

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲激情视频网站| 亚洲aa中文字幕| 久久精品视频导航| 日本成人在线视频网址| 57pao成人永久免费视频| 亚洲一区av在线播放| 久久亚洲综合国产精品99麻豆精品福利| 亚洲成av人影院在线观看| 日韩免费观看网站| 成人激情视频免费在线| 欧美在线性视频| 国产成人精品久久亚洲高清不卡| 日韩电影中文字幕| 久久精品国产91精品亚洲| 91在线免费网站| 亚洲性69xxxbbb| 在线观看久久av| 欧美精品久久久久久久久久| 久久人人看视频| 一区二区三区回区在观看免费视频| 久久久久久久久久久国产| 精品日本高清在线播放| 国产精品老女人精品视频| 2019中文在线观看| 亚洲国产成人精品女人久久久| 亚洲日本欧美中文幕| 色噜噜国产精品视频一区二区| 久久久久免费精品国产| 亚洲aⅴ日韩av电影在线观看| 久久精品久久久久电影| 欧美午夜精品久久久久久浪潮| 亚洲激情视频在线观看| 日韩黄色在线免费观看| 国产精品pans私拍| 久久影院资源网| 欧美精品在线看| 欧美激情国内偷拍| 国产91在线高潮白浆在线观看| 亚洲天堂网在线观看| 性欧美在线看片a免费观看| 欧美日韩精品在线视频| 国产成人福利视频| 色婷婷av一区二区三区在线观看| 亚洲欧洲日产国码av系列天堂| 国产精品欧美激情在线播放| 久久久精品国产一区二区| 国产日韩欧美中文在线播放| 久久琪琪电影院| 中文字幕日韩精品在线| 久久人人爽人人| 欧美性xxxx在线播放| 欧美成人免费一级人片100| 日韩欧美在线观看视频| 久久青草精品视频免费观看| 日本国产一区二区三区| 国产一区二区三区四区福利| 国产精品人人做人人爽| 欧美激情一区二区三区成人| 亚洲资源在线看| 欧美大奶子在线| 亚洲国产精品久久久久秋霞蜜臀| 精品少妇v888av| 国产ts一区二区| 91视频国产高清| 亚洲精品免费av| 日韩在线视频免费观看| 欧美黄色成人网| 日韩在线观看免费高清| 欧美激情极品视频| 日韩电影中文 亚洲精品乱码| 亚洲午夜久久久久久久| 欧美激情免费在线| 久久精品国产亚洲精品| 2019中文字幕免费视频| 国产精品第一区| 亚洲欧美制服第一页| 精品国内自产拍在线观看| 91日韩在线播放| 国产啪精品视频| 亚洲国产天堂久久国产91| 韩剧1988在线观看免费完整版| 日韩视频精品在线| 97在线视频观看| 久久夜色精品亚洲噜噜国产mv| 欧美理论电影网| 国产精品久久久久999| 在线观看日韩专区| 成人黄色片在线| 精品国产一区久久久| 久久久久久免费精品| 精品国产户外野外| 欧美激情精品久久久久久| 国产精品一久久香蕉国产线看观看| 欧美精品中文字幕一区| 国产亚洲精品久久| 国产做受69高潮| 伊人亚洲福利一区二区三区| 欧美视频在线观看 亚洲欧| 国产精品久久久久免费a∨大胸| 欧洲亚洲女同hd| 欧美性受xxxx黑人猛交| 久久久天堂国产精品女人| 欧美人与物videos| 亚洲激情在线观看视频免费| 日韩美女免费线视频| 日韩最新中文字幕电影免费看| 日韩欧美高清在线视频| 欧美视频在线视频| 影音先锋日韩有码| 亚洲大尺度美女在线| 国产香蕉精品视频一区二区三区| 成人欧美一区二区三区黑人| 亚洲欧美精品一区| 亚洲人成在线免费观看| 久久国产精品久久久久久久久久| 成人av资源在线播放| 日韩美女在线观看| 久久99热精品这里久久精品| 国产视频欧美视频| 中文字幕日韩欧美在线| 亚洲一区www| 日韩精品在线视频美女| 黑人巨大精品欧美一区免费视频| 亚洲视频在线看| 国产精品青草久久久久福利99| 久久人91精品久久久久久不卡| 亚洲三级 欧美三级| 一区二区日韩精品| 日韩综合视频在线观看| 日韩一区在线视频| 久久久久久久久久婷婷| 亚洲黄色在线观看| 国产欧美日韩精品专区| 久久国产精彩视频| 久久久精品一区| 久久久亚洲精品视频| 久久夜精品va视频免费观看| 欧美色另类天堂2015| 91地址最新发布| 日韩有码在线播放| 另类视频在线观看| 国产精品国产三级国产aⅴ浪潮| 久久艹在线视频| 国产精品一二三在线| 欧美日韩一区二区在线播放| 3344国产精品免费看| 日韩av一卡二卡| 尤物yw午夜国产精品视频明星| 亚洲第一黄色网| 欧美视频中文字幕在线| 欧美在线亚洲一区| 综合欧美国产视频二区| 亚洲精品自产拍| 亚洲自拍小视频| 国产精品激情av在线播放| 日本久久91av| 国产一区二中文字幕在线看| 成人做爽爽免费视频| 欧美激情综合亚洲一二区| 91av视频在线播放| 88国产精品欧美一区二区三区| 欧美第一页在线| 国产精品免费久久久久影院| 色综合久久天天综线观看|