亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

彈球游戲開發的心得

系統 2048 0

桌面彈球是游戲中常見的游戲,從以前的掌上游戲機到如今的手機游戲,都是一個十分經典的游戲。玩家控制一個可以左右移動的擋板去改變運動中小球的移動方向,目的是用小球消除游戲屏幕中的所有 磚塊 不同顏色的磚塊有著不一樣的效果, 例如: 黃色磚塊五魔法效果 粉色的磚塊彈球可以穿越 咖啡色的磚塊可以使小球加速,綠色的磚塊可以使小球發色子彈 等等。本 主要介紹如何實現一個簡單的彈球游戲,讓讀者了解“動畫”的實現原理。

其實所謂的動畫就是一張一張圖片的不斷演示,讓人看上去有動感,最后 使用 Java 中的 雙緩沖 去重復繪圖, 防止游戲的屏幕閃爍 我開發的 桌面彈球游戲的效果如圖所示


彈球游戲開發的心得
?
<!--EndFragment-->

一、 動畫原理

簡單地來說,動畫是利用人的視覺暫留的生理特性,實現出來的一種假象,只要每隔一段時間(這個時間少于人的視頻暫留時間)就重新繪制一幅狀態改變的圖片,就能造成這種“動”的假象。我們在程序中不斷的進行 擦除,然后不斷的畫出新的圖片 ,對程序來講,只需要在短時間內進行多次的繪畫,并且每次繪畫都需要改變繪畫的相關值,就可以達到“動畫”的效果。

二、 彈球游戲開發

在做游戲前,得先實現一個主界面,然后往界面上添加各種物件以及圖片。在這個游戲的開發中,我們有 6 個類( BallUI?? 主界面, Ball??? 彈球類, MapUI?? 地圖類, Stick??? 擋板類, Shot??? 子彈類, Magic?? 魔法類),這些類實現不同的效果,使彈球游戲玩的更有意思。在下面將介紹主要的幾個類

三、 Ball 彈球類

這個類是一個線程,當游戲啟動的時候,界面中會出現一個小球,點開始按鈕后,線程啟動,小球開始運動,其中小球的速度是線程的 sleep 時間和小球在界面中位置的改變這兩個因素決定的。實現小球的動其實很簡單,看下代碼就知道:

// 先擦除,把顏色設為背景色(黑色)

g .setColor(Color. BLACK );

g .fillRect( x0 ,? y0 ,?15,?15);

// 再在下一刻畫出小球(白色),假設坐標都加 1

g .setColor(Color. WHITE );

g .fillRect( x0 +1 ,? y0 +1 ,?15,?15);

然后這個處理很多主要的操作:

1. 游戲輸贏的操作。當小球移動時,用擋板來實現小球的反彈,但當沒接住的時候,小球會往下掉,這時就會判游戲結束。如圖:

<!--EndFragment-->


彈球游戲開發的心得
?

判斷游戲是否勝利,只有把所有的磚塊都打掉,這時彈出對話框,顯示你已經勝利,如圖:
彈球游戲開發的心得
?

1. 這個類最主要的任務是來判斷小球與磚塊的碰撞、與墻壁的碰撞以及與擋板的碰撞。當碰撞時,用不同的方法來處理小球下一時刻的運動,也就是說,當小球碰到擋板時要反彈,碰到墻壁時也要反彈,這些都還好處理;但是當小球碰到不同磚塊時候,要產生不同的效果,這是游戲比較難的地方,不同的效果調用的方法也就不同。

四、 MapUI 地圖類

這個類是來創建地圖,在文檔存儲了一份文件,是對這個地圖的解釋,當調用這份文件的時候,地圖自動會在界面中創建。

由于涉及到文件,那么不可避免的要使用文件輸入流,創建文件輸入流的對象去讀取文件,把讀到的內容用一個 char 二維數組存儲起來,然后再主界面中調用這個類,實現二維數組轉換成地圖的方法,這樣地圖就形成了。

五、 主界面 BallUI

這個類是去調用所用的類,從而實現彈球游戲。啟動不同的線程,使小球的運動形式不一樣以及游戲的可玩性得到提高。在調用線程后,當游戲結束時,記得關閉所有線程,不然浪費 CPU 資源。

最后我想談的是雙緩沖處理屏幕的閃爍問題,在游戲的開發中,讓我頭疼的就是屏幕的閃爍,不僅看的不爽,且對眼睛的傷害也是極大的。這里我們有三個主要的實物(小球、磚塊、擋板),我們分別對這些物體進行重繪,從而解決閃屏的問題。看如下代碼:

public ? void ?paint(Graphics?g){

//?在重繪函數中實現雙緩沖機制?

offSreenImage ?= this .createImage(500,490);

//?獲得截取圖片的畫布?

Graphics?gImage= offSreenImage .getGraphics();

// System.out.println(gImage.getColor());

//?獲取畫布的底色并且使用這種顏色填充畫布,如果沒有填充效果的畫,則會出現拖動的效果?

gImage.setColor(gImage.getColor());

? //?有清楚上一步圖像的功能,

gImage.fillRect(0,?0,?500,?490);

//?調用父類的重繪方法,傳入的是截取圖片上的畫布,防止再從最底層來重繪

super .paint(gImage);

//重繪地圖,也即是重繪磚塊

for ( int ?i=0;i< chars . length ;i++){

for ( int ?j=0;j< chars [i]. length ;j++){

if ( chars [i][j]!=0){

char ?c?=? chars [i][j];

if (c!= '?' ){

String?path?=? "images/" +c+ ".jpg" ;

//根據路徑構造圖片對象

ImageIcon ? icon?=?MapUI. createImageIcon (path);

gImage.drawImage(icon.getImage(),?35*j,?15*i,? null );

}

}

}

}

//擋板的重繪

Stick?stick?= new ?Stick();

int ?x=Stick. x0 ;

gImage.setColor(Color. red );

stick.createStick(gImage,?x-2-1,460-2-2-1-2-2,?100,?15);

//小球的重繪

Ball?ball= new ?Ball();

ball.createBall(gImage,?Ball. x0 ,?Ball. y0 );

//?將接下來的圖片加載到窗體畫布上去,才能得到每次畫的效果?

g.drawImage( offSreenImage ,?0,?0,? null );

}

最后,由于本人知識的不足,游戲中還存在很多問題,且游戲的效果也不是特別的好,游戲的可玩性不高。但總體來說,這次游戲的開發讓我的編程能力得到提升,同時也能處理一些簡單的問題。

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

彈球游戲開發的心得


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲欧美日韩在线精品2021 | 一级欧美在线的视频 | 日韩国产欧美一区二区三区在线 | 麻豆精品一区二区三区免费 | 奇米色网| 2023中文字幕在线观看 | 婷婷国产 | 一区二区三区美女视频 | 免费一级毛片不卡在线播放 | 日本xxxwww在线观看免费 | 日本高清视频www夜色资源网 | 在线观看一区二区精品视频 | 久久青青草原精品影院 | 天天综合网久久 | 成人在线视频免费观看 | 男人叼女人的痛爽视频免费 | 国产50岁老熟妇毛片 | 91青草久久久久久清纯 | 香蕉视频免费在线观看 | 国产精品久久亚洲不卡动漫 | 久久草视频 | 福利视频网页 | 97色资源| 久久精品国产亚洲网址 | 伊人蕉 | 男女车车好快的车车免费网站 | 国产一区二区精品久久凹凸 | 欧美成人片在线 | 欧美一区永久视频免费观看 | 人人看人人鲁狠狠高清 | 亚洲视频在线a视频 | 四虎最新永久免费视频 | 久久精品亚洲热综合一本奇米 | 日本免费不卡在线一区二区三区 | 青青青青啪视频在线观看 | 亚洲国产99在线精品一区69堂 | 国产成人一区二区视频在线观看 | 最新精品国产 | 国产女人水多毛片18 | 欧美 日韩 国产 在线 | 欧美精品久久久久久久免费观看 |