欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

彈球游戲開發的心得

系統 2129 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條評論
主站蜘蛛池模板: 亚洲精品美女久久久 | 欧美日韩亚洲精品国产色 | 中文一区二区 | 久久久久久亚洲 | 日韩在线播放第一页 | 性少妇videosexfreexx入片 | 性XXXX18精品A片一区二区 | 亚洲天堂2013 | 日本男人天堂 | aaaaaa毛片| 欧美福利| 色喜亚洲美女沟沟炮交国模 | 日韩丝袜在线观看 | 亚洲激情视频 | 成人午夜影院 | 黄色免费网页 | 久久久久伊人 | 久久九九精品一区二区 | 成人精品一区二区三区校园激情 | 成人一区二区三区在线 | 亚洲日本中文字幕 | 不卡一区二区三区四区 | 亚洲AV久久无码精品九九九小说 | 亚洲一区二区三区四区 | 国产精品成人在线观看 | jiuse在线| 国产日韩欧美 | 亚洲精品一区二区三区蜜桃久 | 天堂动漫 | 亚洲精品无码成人A片在线虐 | 久久久久久91香蕉国产 | a久久久久一级毛片护士免费 | 久久久久毛片成人精品 | 999精品免费视频观看 | 国产精品美乳一区二区免费 | 久久精品成人 | va在线播放 | 欧美激情免费在线 | 久久国产精品视频 | 国产黄色网址在线观看 | 日本高清在线看片免费视频 |