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

正文內(nèi)容

基于motorola手機的五子棋游戲開發(fā)技術設計書-在線瀏覽

2025-08-09 06:24本頁面
  

【正文】 n Phones(可視電話)、Digital Settop Boxes(數(shù)字機頂盒)、Car Navigation Systems(汽車導向系統(tǒng))等,同時也廣泛被移動通信設備所采用,如移動電話、雙向尋呼機、智能卡、個人電腦記事本(Personal Organizer)和掌上電腦(Palmtop)等。J2ME 使用配置和簡表定制 Java 運行時環(huán)境 (JRE)。與以前 Sun 公司推出的J2EE (Java 2 Enterprise Edition,Java 2企業(yè)版)、J2SE (Java 2 Standard Edition,Java 2標準版)規(guī)范相比,J2ME 不是一個單獨的技術規(guī)范,而是一系列技術規(guī)范總稱。J2ME 主要適用于小型嵌入式設備,這些設備與PC或是服務器設備相比沒有統(tǒng)一的硬件標準、外觀與操作方式,其功用也是千差萬別。正是因為如此,開發(fā)人員才可以借助J2ME 力量讓編寫的程序能夠運行在其他型號或廠商的設備上。于是 J2ME 先將所有的嵌入式裝置大體上區(qū)分為兩種 :一種是運算功能有限、電力供應也有限的嵌入式裝置(比方說PDA 、手機);另外一種則是運算能力相對較佳、并請在電力供應上相對比較充足的嵌入式裝置 (比方說冷氣機、電冰箱、電視機上盒 (settop box))。也就是說, J2ME 先把所有的嵌入式裝置利用Configuration 的概念區(qū)隔成兩種抽象的型態(tài)。比方就CLDC 的規(guī)范來說,.* 、.*、.*,.*。Profile 是架構在Configuration 之上的規(guī)格。因此Profile 之中定義了與特定嵌入式裝置非常相關的擴充類別函式庫,而 Java 程序在各種嵌入式裝置上的使用者介面該如何呈現(xiàn)就是定義在Profile 里頭?!? Profile簡介Profile是建立在某個configuration之上的特定API集合。因此Profiles往往包括應用程序生命周期的API,用戶界面API以及存儲API。為了在不改動Profile的前提下增加設備的功能,在Profile之外又提出了可選包,可將它們看成Profile的擴展,每個可選包對某個或某些profiles增加特定的功能。如果隨著時間的推移該可選包被廣泛采用,它則可能成為某個或某些profiles的一部分。J2ME的這種結構很好的適應了嵌入設備的巨大多樣性。J2ME中第一個正式發(fā)布的Profile是MIDP,而且隨后比較長的時間內(nèi)未有其它Profile發(fā)布,以至有人把MIDP等同于J2ME了,有人把WTK等同于J2ME SDK(由于J2ME包含的范圍很廣,所以不太可能有廠商推出能支持各種Profile的開發(fā)工具)。由于每個Profile是建立在特定的Configuration之上的,所以我們在Profile后注明其基于的Configuration。第三章 需求分析 基本需求分析手機屏幕尺寸分為物理尺寸和顯示分辨率兩個概念。大的屏幕同時,要配備高分辨率,也就是在這個尺寸下可以顯示多少個像素,顯示的像素越多,可以表現(xiàn)的余地自然越大。受手機屏幕大小和顯示的影響,我們設計的軟件界面必須是簡潔的;手機鍵盤的不方便,游戲需要設計得易操作。游戲是需要快速反應的。三 游戲要設置幾個難度,我們設置不同難度供各個水平的玩家選擇。 游戲玩法及規(guī)則 現(xiàn)代五子棋專用棋盤為十五路(15X15),共225個交叉點。 對局開始時,先由執(zhí)黑棋一方將一枚棋子落在天元點上,然后由執(zhí)白棋一方在黑棋周圍的交叉點上落子。此后黑白雙方輪流落子,直到某一方首先在棋盤的橫線、縱線或斜線上形成連續(xù)五子或五子以上〔僅對白棋而言〕,則該方就算獲勝 。五子棋的比賽規(guī)則如下: 〖1〗 黑先、白后,從天元開始相互順序落子; 〖2〗 最先在棋盤橫向、縱向或斜向形成連續(xù)的同色五個棋子的一方為勝; 〖3〗 黑棋禁手判負、白棋無禁手。黑棋只能以“四、三”取勝; 〖4〗 如分不出勝負,則到為平局; 〖5〗 五連與禁手同時形成,判勝; 〖6〗 黑方禁手形成時,白方應立即指出。 在本游戲中,沒有采用職業(yè)比賽的規(guī)則,直接采用明間規(guī)則,一人一手棋,先成5為勝。第四章 游戲設計分析 驅動循環(huán)及類圖 開始玩家落子判斷落子合法性判斷游戲是否結束計算機落子判斷游戲是否結束等待用戶輸入結束 圖1 驅動循環(huán)圖棋類游戲通常具備兩個重要特性,首先是對戰(zhàn)雙方輪流落子,其次是落子間隔通常是不確定的,尤其是對戰(zhàn)后期,可能每一步都需要經(jīng)過深思熟慮,無論是人方還是計算機方,都無法對間隔時間有事先的預期。事件驅動大大減少了不必要的工作量。這個游戲共有三個版本:單機挑戰(zhàn)版,雙人對戰(zhàn)版,藍牙終極版。Chesses類是棋子類,提供棋子,每當下一個棋子的話,就生成一個棋子對象。GobangCanvas類負責游戲界面的繪制,游戲落棋的控制,游戲規(guī)則的控制,游戲算法的控制,游戲勝負的控制。藍牙終極版是由Chess類、Client類、Connection類、Control類、GameWorld類和Server類組成,Chess類提供藍牙版的棋子,每當下一個棋子的時候,生成一個棋子對象。Connection類是負責連接客戶端和服務器端的。GameWorld類是負責繪制棋盤,游戲規(guī)則的控制,以及游戲勝負的控制,游戲進行的控制。游戲前我們要選擇游戲的版本,這里有三個版本,單機挑戰(zhàn)版,雙人對戰(zhàn)版,藍牙終極版,可以操作手機的上下左右鍵進行選擇。由于時間的原因,目前只完成了初級的開發(fā),中級和高級留作日后進一步開發(fā)。 圖5 開始游戲 Gobang1Canvas類是主要的實現(xiàn)類。//游戲界面到屏幕邊緣的留空 int canvasW,canvasH。//棋子的直徑 int chessMapLength,chessMapGrid,chessGridLength。//棋盤左上角x,y坐標 int selectedX,selectedY。//是否是玩家1 Chesses[][] chesses。//是否是新的游戲 boolean isWin=false。//存放要走的棋子的位置 static int chessesNum = 3。 newGame=true。 canvasW=getWidth()empty。 chessMapGrid=15。 if(canvasWcanvasH){ chessMapLength=canvasHcanvasH%chessMapGrid。 chessMapY=(canvasH%chessMapGrid)/2+empty/2。 chessMapX=(canvasW%chessMapGrid)/2+empty/2。 } chessGridLength=chessMapLength/chessMapGrid。 selectedX=selectedY=chessMapGrid/2。 restartCmd = new Command(重新開始, , 0)。 addCommand(restartCmd)。 setCommandListener(this)。private boolean checkWin(int x,int y,int chessesValue){ int value = chessesValue。//循環(huán)變量的值 int yy = y。//存儲當前傳入的值,便于以后從這個點開始進行判斷 /** * 縱向判斷 */ xx=tempx。//讓目前的值與傳入的值保持一致 int count = 0。amp。amp。 yy。 } yy=tempy+1。amp。amp。 yy++。 } if(count == 5) return true。 yy=tempy。//用來計算當前某一方的棋子是否夠五個 while(xx=0 amp。 chesses[yy][xx]!=null amp。 chesses[yy][xx].getChessesValue()==value) { count++。 if(xx0)break。 while(xxchessMapGrid amp。 chesses[yy][xx]!=null amp。 chesses[yy][xx].getChessesValue()==value) { count++。 if(xxchessMapGrid)break。 /** * 反向對角線 */ xx=tempx。//讓目前的值與傳入的值保持一致 count = 0。amp。amp。amp。 xx。 if(xx0||yychessMapGrid)break。 yy=tempy1。amp。amp。amp。 xx++。 if(yy0||xxchessMapGrid)break。 /** * 正向對角線 */ xx=tempx。//讓目前的值與傳入的值保持一致 count = 0。amp。amp。amp。 xx++。 if(xxchessMapGrid||yychessMapGrid)break。 yy=tempy1。amp。amp。amp。 xx。 if(xx0||yy0)break。 return false。程序如下:private int[] checkChesses(int x,int y,int chessesValue){ int[]temp = {0,0}。 int xx = x。//循環(huán)變量的值 int tempx=x,tempy=y。//用來存放判斷是否已經(jīng)構成威脅的位置坐標 /** * 縱向判斷 */ xx=tempx。//讓目前的值與傳入的值保持一致 int count = 0。amp。amp。 yy。 } pointY1=yy。 while(yychessMapGrid amp。 chesses[yy][xx]!=null amp。 chesses[yy][xx].getChessesValue()==value) { count++。 if(yychessMapGrid)break。 if(count = chessesNum amp。 chesses[pointY1][xx]==null amp。 pointY1=0) { temp[0]=xx。 return temp。amp。amp。 temp[1]=pointY2。 } /** * 橫向判斷 */ xx=tempx。//讓目前的值與傳入的值保持一致 count = 0。amp。amp。 xx。 } pointX1=xx。 while(xxchessMapGrid amp。 chesses[yy][xx]!=null amp。 chesses[yy][xx].getChessesValue()==value) {
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1