freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

桌面彈球(java開發(fā))分析及源碼-展示頁

2025-07-05 16:37本頁面
  

【正文】 ( Graphics g ),畫圖,方法中是使用Graphics對象g去畫圖。q boolean isWon(),判斷玩家是否已經(jīng)過關(guān)。q void setMagicPos(),改變道具的坐標(biāo)位置。q boolean isHitBrick( Brick brick ),測試小球與磚塊是否有碰撞,參數(shù)brikc是指磚塊。q void setStickPos( KeyEvent ke ),改變擋板的坐標(biāo)位置。 業(yè)務(wù)處理類(BallService)BallService 處理了這個游戲中的大部分業(yè)務(wù)功能,包括開始游戲、小球移動、道具移動、擋板移動、測試小球與擋板是否有碰撞或者擋板和其它元素有碰撞、設(shè)置擋板的長度、判斷用戶是否通關(guān)、初始化磚塊的排列與道具、畫圖等功能。在這里,小球?qū)ο罂梢詥渭兊目醋饕粋€簡單的對象,并不負(fù)責(zé)處理任何的行為,這可以看作我們一般所說的貧血模式,對象并不負(fù)責(zé)處理任何的業(yè)務(wù)邏輯。q int getSpeedY(),獲取小球的豎向速度。q void setStarted( boolean b ),把小球狀態(tài)設(shè)置為運(yùn)動或者靜止。q setSpeedY( int speed ),設(shè)置小球的豎向速度。除了定義這些屬性,還為這些屬性提供相應(yīng)的setter與getter 小球類(Ball)Ball類也是BallComponet的子類,由于小球在游戲面板中運(yùn)動的時候除了橫豎方向,還有各種角度的斜方向,所以我們把小球的速度分解成橫向速度與豎向速度(speedX與speedY),游戲未開始前,小球是處于靜止?fàn)顟B(tài),所以用一個started屬性來標(biāo)志小球是否已經(jīng)開始運(yùn)動。在本例中,擋板是可以變長或者變短的,并且在建立道具抽象類的時候,已經(jīng)定義了一個magicDo的方法,該方法的參數(shù)就是一個擋板對象,所以擋板類必須包括長度的屬性,這樣,在實現(xiàn)道具類的時候,就可以通過改變擋板類的長度來實現(xiàn)本例中所需要實現(xiàn)的長短擋板功能。q int getPreWidth(),獲取初始長度。當(dāng)然,這里只提供一個Stick的參數(shù)可能并不夠,如果以后游戲中出現(xiàn)另外一種道具,會改變球的速度(變快或者變慢),那么我們就需要為該抽象類提供更多的參數(shù)。在本例中,擋板是可以變長或者變短的,而使擋板變長或者變短的方式是通過道具來實現(xiàn),因此可以將道具抽象成變長的道具或者變短的道具,而它們都需要做同一件是,就是改變擋板的展現(xiàn)形式。 道具類及其子類(Magic)Magic類是一個道具類,在游戲中表現(xiàn)包含在磚塊中,是BallComponet的一個抽象子類,此類提供一個Magic( String path, int x , int y )構(gòu)造器去調(diào)用父類的構(gòu)造器,并提供一個抽象的方法magicDo( Stick stick ),此抽象方法是實現(xiàn)道具的效果功能,用于給其子類實現(xiàn),現(xiàn)在實現(xiàn)的子類的LongMagic類和ShortMagic類,兩個子類的magicDo方法中分別實現(xiàn)使擋板變長與變短的功能。q void setDisable( boolean disable ),停用或者啟用此類,disable的值為true或者false。q Magic getMagic(),獲取道具。另外,本類增加了magic與disable屬性,magic代表此磚塊中所包含的道具,初始值為null,disable是用來標(biāo)志Brick的狀態(tài),如果diable為true,則表明此磚塊已經(jīng)不可用,不會再顯示。將該類創(chuàng)建為抽象類,我們就可以提供(如果需要的話)一些抽象方法讓子類去實現(xiàn),并且可以在父類中調(diào)用這些抽象方法。如果我們在編碼的過程中發(fā)現(xiàn)有一些共同的屬性或者方法,我們可以將這些放到這個基類中。 q BallComponent( String path , int x , int y ),以x坐標(biāo),y坐標(biāo)和path去構(gòu)造一個BallComponet。根據(jù)不同的需要,提供以下三個構(gòu)造方法:q BallComponent( String path ),path是圖片的路徑,用圖片的路徑來構(gòu)造一個BallComponent,在此構(gòu)造方法中,將根據(jù)路徑去讀取圖片,再設(shè)置對象中image屬性。圖 桌面彈球類圖筆者在這里提供了本章的類圖,是為了讓讀者可以更清晰的了解本章程序的結(jié)構(gòu),但在實現(xiàn)開發(fā)的過程中,我們可以根據(jù)實際情況,加入或者改變各個類的關(guān)系或者程序的結(jié)構(gòu),但最終都是為降低程序的耦合、提高內(nèi)聚、編寫出優(yōu)秀的代碼。如果該父類中某些方法并不需要由父類實現(xiàn),我們可以將父類做成抽象類,并將這些方法變成抽象的。道具類的子類有LongMagic與ShortMagic,作用是使Stick的長度變長或者變短。3 創(chuàng)建游戲?qū)ο笤谶@個游戲中,有擋板,小球,磚塊(障礙物),道具等物品,這些物品都有共同的特性,有屬于自己的x與y坐標(biāo)屬性,有圖片屬性,有速度屬性,所以,在這時在,設(shè)計一個基類BallComponent包含這些屬性與相關(guān)的方法,讓其子類繼承。如果消除了所有的障礙物,就判斷玩家為贏,如果擋板沒有接住向下移動的小球,就判斷玩家為輸。我們需要在編寫游戲前確定這些小細(xì)節(jié),這樣在開發(fā)的過程中,我們就可以按照這些小細(xì)節(jié)去逐步實現(xiàn)我們的程序。 小球反彈的方向在本章實現(xiàn)的過程中,我們會設(shè)置小球于對稱的方式,并出現(xiàn)少許偏移的方式反彈。圖 桌面彈球 動畫原理簡單地來說,動畫是利用人的視覺暫留的生理特性,實現(xiàn)出來的一種假象,只要每隔一段時間(這個時間少于人的視頻暫留時間)就重新繪制一幅狀態(tài)改變的圖片,就能造成這種“動”的假象。本章主要介紹如何實現(xiàn)一個簡單的彈球游戲,讓讀者了解“動畫”的實現(xiàn)原理。桌面彈球1 桌面彈球概述桌面彈球是游戲中常見的游戲,從以前的掌上游戲機(jī)到如今的手機(jī)游戲,都是一個十分經(jīng)典的游戲。玩家控制一個可以左右移動的擋板去改變運(yùn)動中小球的移動方向,目的是用小球消除游戲屏幕中的所有障礙物到達(dá)下一關(guān),在障礙物被消除的過程中,可能會產(chǎn)生一些能改變擋板或者小球狀態(tài)的物品,例如:擋板變長、變短,小球威力加強(qiáng)等等。在本章中,將介紹與使用Java的繪圖功能,使用到JPanel的paint(Graphics g)方法去繪圖,繪圖主要是依靠這個方法中的Graphics類型的參數(shù),將使用Java中的Timer去重復(fù)繪圖,產(chǎn)生動畫效果。我們在程序中不斷的進(jìn)行繪畫(使用repaint方法),對程序來講,只需要在短時間內(nèi)進(jìn)行多次的繪畫,并且每次繪畫都需要改變繪畫的相關(guān)值,就可以達(dá)到“動畫”的效果。讓小球反彈出現(xiàn)少許編移是為了讓游戲增加點(diǎn)不確定性,增加游戲的趣味性。圖 小球的反彈2 流程描述玩家使用左右方向鍵開始游戲與控制擋板,在未消除完所有的障礙物或者擋板沒有檔住向下移動的小球之前,會一直處于游戲狀態(tài),在這個狀態(tài)中,小球會一直處于直線運(yùn)動或者改變方向,當(dāng)小球消除掉障礙物的時候,有機(jī)率產(chǎn)生一些物品,產(chǎn)生的物品會直線向下移動,用擋板接住物品后,物品的特殊效果會生效。圖 游戲流程游戲中并不涉及復(fù)雜的流程,只需要處理游戲的輸贏即可,因此在實現(xiàn)的過程中,關(guān)鍵是如何確定游戲輸贏的標(biāo)準(zhǔn)(擋欄沒有擋住小球)。繼承此類的子類有Stick類(用于定義擋板的行為于屬性),Ball類(控制小球的移動與其它動作),Brick類(磚塊類),Magic類(道具抽像類,此類中有一個用于使道具功能實現(xiàn)的抽象方法,供其子類實現(xiàn))。在平時的開發(fā)中,如果發(fā)現(xiàn)多個對象之間有一些共同的特性或者行為,并且覺得可以使用這些特性或者行為構(gòu)成一個對象,那么可以建立一個新的對象作為這些對象的父類。確定了我們游戲中的所涉及的對象后,我們還需要一個BallFrame類去創(chuàng)建一個畫板,用于繪制圖片,此類還完成界面的初始化,監(jiān)聽用戶的鍵盤,而與游戲相關(guān)的業(yè)務(wù)邏輯(判斷輸贏或者球的運(yùn)動),我們放到BallService類中去處理。 基類BallComponentBallComponent,做為Brick(磚塊)類、Magic(道具)類、Stick(擋板)類、Ball(小球)類的父類,定義了這些子類共有的屬性與方法,屬性有:x坐標(biāo),初始值為1;y坐標(biāo),初始值為1;圖片image,初始值為null;速度speed,初始值為5。q BallComponent( int panelWidth , int panelHeight, String path ),以panelWidth,panelHeight,與path去構(gòu)造一個Component。除去這些構(gòu)造方法,此類提供了這些屬性的setter與getter方法,用于獲取對象的坐標(biāo)與圖片,或者改變對象的坐標(biāo)位置與圖片屬性。創(chuàng)建BallComponent的時候,我們可以將這個類變成抽象類,即使它沒有任何的抽象方法,這樣做的目的是,在我們的桌面彈球游戲中,該類并不是具體存在的某一個對象,而是我們將一些公用的屬性或者方法存放到該類中,因此它在游戲中并不代表某個具體的對象。 磚塊類(Brick)此類是BallComponet的一個子類,提供一個Brick(String path, int type, int x, int y )構(gòu)造器,其中pah、x與y參數(shù)用于調(diào)用父類的構(gòu)造器,type是代表磚塊的類型:1代表此磚塊里面有LongMagic類型 的道具;2代表此磚塊里面有ShortMagic類型的道具;其它代表此磚塊里面沒有道具。并提供這兩個屬性相關(guān)的以下方法:q void setMagic( Magic magic ),設(shè)置道具。q boolean isDisable(),用來判斷此類是否有效。確定了一個磚塊由一個Brick對象來表示后,在界面中,我們可以提供一個Brick的二維數(shù)組,來表示界面中所有的磚塊,實現(xiàn)原理與控制臺五子棋中的棋盤一樣,但是在本章中,二維數(shù)組的每一個元素并不是字符串,而是具體的某個Brick對象,在以后的章節(jié)中,當(dāng)遇到需要在界面中繪畫某些圖片的時候,我們都可以建立一個二維數(shù)組,將相應(yīng)的對象放置到該數(shù)組中,當(dāng)界面進(jìn)行繪畫的時候,就可以將這個二維數(shù)組“畫”出來。q abstract void magicDo( Stick stick ),道具的功能,給其子類實現(xiàn)。為了程序的可擴(kuò)展性,我們在這里將一個道具變?yōu)橐粋€抽象類(Magic),當(dāng)我們需要有其他形式的道具的時候,就可以為該類添加子類,并提供不同的實現(xiàn)。 擋板類(Stick)同樣,Stick 類也是BallComponet的子類,用
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1