Android版的中國象棋人機對弈游戲設計與實現(xiàn)畢業(yè)設計_第1頁
Android版的中國象棋人機對弈游戲設計與實現(xiàn)畢業(yè)設計_第2頁
Android版的中國象棋人機對弈游戲設計與實現(xiàn)畢業(yè)設計_第3頁
Android版的中國象棋人機對弈游戲設計與實現(xiàn)畢業(yè)設計_第4頁
Android版的中國象棋人機對弈游戲設計與實現(xiàn)畢業(yè)設計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、畢業(yè)設計android版的中國象棋人機對弈游戲設計與實現(xiàn)畢業(yè)設計(論文)原創(chuàng)性聲明和使用授權說明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設計(論文),是我個人在指導教師的指導下進行的研究工作及取得的成果。盡我所知,除文中特別加以標注和致謝的地方外,不包含其他人或組織已經發(fā)表或公布過的研究成果,也不包含我為獲得 及其它教育機構的學位或學歷而使用過的材料。對本研究提供過幫助和做出過貢獻的個人或集體,均已在文中作了明確的說明并表示了謝意。作 者 簽 名: 日 期: 指導教師簽名: 日期: 使用授權說明本人完全了解 大學關于收集、保存、使用畢業(yè)設計(論文)的規(guī)定,即:按照學校要求提交畢業(yè)設計(論文)的印刷

2、本和電子版本;學校有權保存畢業(yè)設計(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務;學校可以采用影印、縮印、數(shù)字化或其它復制手段保存論文;在不以贏利為目的前提下,學校可以公布論文的部分或全部內容。作者簽名: 日 期: 摘 要象棋水平的發(fā)展是需要靠信息技術來推動的,國際象棋有兩個很好的范例,一個是象棋棋譜編輯和對弈程序的公共平臺winboard平臺,另一個是商業(yè)的國際象棋數(shù)據庫和對弈軟件chessbase,他們?yōu)閲H象棋愛好者和研究者提供了極大的便利。國際象棋軟件有著成功的商業(yè)運作,已發(fā)展成一種產業(yè)。然而,電腦在中國象棋上的運用還剛剛起步,盡管國內涌現(xiàn)出一大批中國象棋的專業(yè)網站和專業(yè)軟件,但是

3、由于缺乏必要的基礎工作,電腦技術在中國象棋上的應用優(yōu)勢還無法體現(xiàn)出來。在設計中國象棋軟件過程中,國際象棋軟件有很多值得借鑒的成功經驗和優(yōu)秀的思想。例如b. moreland,微軟(microsoft)的程序設計師,業(yè)余從事國際象棋引擎ferret的開發(fā),他的一系列關于國際象棋程序設計的文章非常值得其他棋類程序設計人員借鑒。然而,中國象棋與國際象棋存在著很大的差異,因此國際象棋的某些成熟技術,無法直接應用于中國象棋,需要對其加以改進和創(chuàng)新。中國象棋游戲的設計工作是非常復雜和重要的,它涉及面廣、牽涉方面多,如果不好好考慮和設計,將難以成功開發(fā)出這個游戲。在這個游戲的設計中,將牽涉到圖形界面的顯示與

4、更新,并且在這個游戲的開發(fā)中還會應用類的繼承機制以及一些設計模式。該游戲主要研究基于android技術的中國象棋游戲的分析與設計,對中國象棋游戲特殊的行棋規(guī)則給予了細致的分析與理解,設計出了一種實時可行的行棋規(guī)則,從移動范圍、移動方向等方面重新描述行棋規(guī)則,基于android技術通過計算機模擬實現(xiàn)了中國象棋特殊的行棋規(guī)則算法,設計出了一種可行的方法,使每個棋子的行棋路線都嚴格遵循本身的行棋規(guī)則,游戲的實戰(zhàn)對弈得以實現(xiàn),通過實驗運行,證明這種限定棋子行棋路線的方法是可行的,并得到了預期的目標。關鍵詞:android版、中國象棋、人機對弈、類、規(guī)則 目 錄第一部分:中國象棋的開發(fā)背景*第二部分:中

5、國象棋的需求分析*第三部分:游戲的策劃及準備工作第四部分:功能簡介及其運行結果第五部分:游戲的架構第六部分:游戲框架的簡介第七部分:游戲結論第八部分:游戲展望第九部分:謝謝指導第十部分:游戲參考文獻第一部分:中國象棋的開發(fā)背景1、中國象棋具有悠久的歷史,象棋的愛好者更是數(shù)不勝數(shù),遠在戰(zhàn)國時代,象棋便在貴族階層中廣為流傳,早期的象棋是象征著當時戰(zhàn)斗場面的游戲,后來這種觀念慢慢被改變,成了人們休閑娛樂中不可缺少的一部分。2、而當今的人們忙于工作,很少有時間靜下心來享受一下象棋對弈的樂趣,因此電腦版象棋、手機版象棋便開始受到人們的關注。第二部分:中國象棋的需求分析該游戲是改編網絡版中國象棋,使其更加

6、滿足玩家的的要求。主要用于android手機的平臺。滿足廣大象棋愛好者的要求。第三部分:游戲的策劃及準備工作1)游戲的策劃游戲類型 該游戲屬于棋牌類游戲的一種,并采用簡單的人工智能,可達到玩家與電腦進行對弈的效果。運行的目標平臺 游戲的目標平臺為android2.2(3)操作方式 該游戲擬采用屏幕事件進行操作,玩家可以鼠標來單擊屏幕完成對游戲進行控制,游戲中部分的功能可以使用鍵盤操作來完成。2)android平臺下游戲的準備工作1、相關的素材。圖片名稱用途bacnground.png游戲背景圖片logo2.png歡迎界面logo2welcomebackage.png歡迎界面背景圖片helpba

7、ckground.png幫助界面背景圖片vs.pngvs圖片qipan.png游戲棋盤menu.png菜單按鈕ok.png確定按鈕back.png返回按鈕closesound.png關閉聲音按鈕opensound.png打開聲音按鈕startgame.png開始游戲按鈕exit.png退出游戲按鈕sound3.png顯示聲音狀態(tài)圖片sound2.png聲音按鈕lost.png你輸了圖片win.png你贏了圖片left.png指針right.png指針a.png黑將b.png黑士c.png黑象d.png黑馬e.png黑車f.png黑炮g.png黑卒a1.png紅將b2.png紅士c3.png紅象

8、d4.png紅馬e5.png紅車f6.png紅炮g7.png紅卒2、棋盤的標記紅方黑方帥8將1 仕12士5相13象6馬10馬3車9車2炮11炮4兵14卒72,3,6,5,1,5,6,3,2,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,4,0,7,0,7,0,7,0,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,0,14,0,14,0,14,0,11,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,9,10,13,12,8,12,13,10,9,第四部分:功能簡介及其運行結果(1)運行該游戲,首先進入的將

9、是歡迎界面,效果如圖1所示。 圖1(2)當歡迎動畫播放完畢后,單擊“菜單”按鈕就可以進入菜單界面,如圖2所示。 圖2(3)在菜單按鈕界面,可以通過“打開聲音”/“關閉聲音”菜單來控制游戲聲音的開關,單擊“幫助”菜單可以進入幫助界面,如圖3所示。 圖3(4)而在菜單界面單擊“開始游戲”菜單將進入游戲界面,如圖4所示。 圖4在游戲界面玩家可以通過單擊自己的棋子來走棋,同時可以單擊聲音按鈕來打開或者關閉聲音。當游戲一方“將”或者是另一方的“帥”被吃掉是,會出現(xiàn)游戲勝利的界面,如圖6所示。 圖6在游戲過程中,玩家可以隨時通過單擊“退出”按鈕返回到游戲主菜單。第五部分:游戲的架構共有類 activity

10、的實現(xiàn)類mydochessactivity,該類是通過擴展基類activity得到的,是整個游戲的控制器,也是整個游戲程序的入口。輔助界面相關類歡迎界面類mywelcomeview該類為游戲歡迎界面的實現(xiàn)類,主要負責歡迎界面的繪制工作。歡迎界面動畫生成類mywelcomeviewthread 該類是為了歡迎界面服務的,主要是通過更改歡迎界面中圖片的坐標來實現(xiàn)動畫效果。幫助界面類myhelpview該類為幫助界面的實現(xiàn)類。菜單界面類mymenuview該類為菜單界面的實現(xiàn)類,負責繪制菜單界面以及菜單界面的屏幕進行監(jiān)聽。游戲界面相關類1)游戲界面類mygameview該類為游戲程序中最主要的類,負

11、責繪制游戲過程所有的信息,如棋盤、棋子、各個按鈕以及勝利或者失敗菜單等。2)象棋規(guī)則類myguize (1) 該類是象棋規(guī)則的實現(xiàn)類,其中包含所有棋子的走棋規(guī)則及當前棋牌某方的所有可能的走法3)走法類mychessmove 該類為棋子的走法的封裝類,包含棋子的名稱、出發(fā)點以及目標點。 *帥和士的走法:“帥”,它只能在“九宮”中行走,而且每次只能橫著或者縱著行走一棋點。首先,判斷棋子是否是在“九宮”里行走,接著判斷棋子是否是橫向或縱向只走一個棋點。如果棋子將符合以上的走棋規(guī)則,則可以走動,否則棋子強制放回原處。“士”,它只能在“九宮”中行走,而且每次只能斜著行走一格。這樣只有一種情況來考慮,即縱

12、向走一個棋點,橫向走一個棋點。如果棋子士符合以上的走棋規(guī)則,則可以走動,否則棋子強制放回原處。如圖所示 圖 *象和馬的走法:“象”,它只能走“田”字格,而且不能過河,象腿不能被其它的棋子壓到。首先首先判斷棋子是否出屆,這樣只有一種情況考慮,那就是縱向走兩個棋點,橫向也走兩個棋點。首先判斷棋子是否走田字格,而且不能過河,接著再用判斷象腿是否被其它棋子壓著。如果棋子象走動符合以上的走棋規(guī)則,則可以走動,否則棋子強制放回原處。“馬”,它只能走“日”字格,而且馬腿不能被其它的棋子壓到。設計時可兩種情況來考慮,一種是橫向走兩個棋點,縱向走一個棋點;一種是縱向走兩個棋點,橫向走一個棋點。判斷是否橫向走兩個

13、棋點,縱向走一個棋點,接著來判斷馬腿是否被其它棋子壓著??v向走“日”同理。如果棋子馬符合以上的走棋規(guī)則,則可以走動,否則棋子強制放回原處。如圖所示 圖 *卒和炮的走法:“卒”,它的行走規(guī)則分兩種情況。一種是棋子沒過河界,另一種是棋子過了河界。首先判斷棋子是否出屆,然后設定棋子沒過河界,接著設定棋子在沒過河界的情況下只能向前行走一個棋點;然后設定棋子過了河界,緊接著設定棋子在過了河界的情況下只能向前、向左、向右行走一個棋點。如果棋子卒符合以上的走棋規(guī)則,則可以走動,否則棋子強制放回原處?!芭凇?,它只能走直線,且中間有且只能有一個棋子。如圖所示 圖*車的走法:如圖所示“車”,它只能走直線,且中間不

14、能有任何棋子,設計時分為兩種情況來考慮,一種是縱向行走;一種是橫向行走。判斷棋子是否縱向行走,接著再用判斷判斷中間有沒別的棋子。橫向行走同理。如果棋子車符合以上的走棋規(guī)則,則可以走動,否則棋子強制放回原處。 圖第六部分:游戲框架的簡介 按照程序運行的順序介紹各個類的作用以及整體的運行框架,步驟如下:啟動游戲,首先被創(chuàng)建的是mydochessactivity,而在mydochessactivity中首先將用戶顯示成歡迎界面mywelcomeview.在顯示歡迎界面的同時,啟動mywelcomeviewthread線程生成界面動畫當玩家單擊“菜單”按鈕時進入界面mymenuview,在菜單界面會根

15、據玩家不同的選擇執(zhí)行不同的操作。當玩家單擊“幫助”菜單時,將進入幫助界面myhelpview.而當玩家單擊“開始游戲”菜單按鈕時,進入的將是游戲界面mygameview。當玩家或者電腦走棋是,會根據規(guī)則類myguize進行判斷,然后產生一個走法mychessmove。在游戲過程中,玩家同樣可以隨時單擊“退出”按鈕來返回到菜單界面。第七部分:游戲結論通過一個星期左右的時間,終于把跟著部分網絡的游戲做了出來,從來沒有接觸過 android平臺,但是通過學習,把平時所有的積累的方法和知識都用了上去,雖然并沒有自己平常所使用的熟悉的基于c+語言來寫程序,但是我想對于計算機編程來說,都是相通的,畢竟是使

16、用的是方法與理論,我們學習的是方法,而不是單單的一門語言,對于計算機的日益更新速度,我們不可能學精通于每一個方法和函數(shù),我們更需要的邏輯思路和解決方法的能力并能用于實際的實踐。第八部分:游戲展望該游戲實現(xiàn)了基本的象棋的走法與判斷簡單的邏輯,但是并沒有真正實現(xiàn)相當智能的走法,我想這個也是基于算法的問題,我想需要更加嚴密的算法,以后通過不斷的學習,通過別人的算法,能夠寫出一些比較理想的屬于自己的想法。把該游戲更加完善,真正能夠滿足基于android平臺的手機的棋藝愛好者的需求。第九部分:謝謝指導 謝謝老師教給我的知識和方法,謝謝各位網友的熱心幫助,幫助我解決了很多問題,真的謝謝你們第十部分:參考文

17、獻c/c+中國象棋程序入門與提高 蔣鵬等著 電子工業(yè)出版社學會用java開發(fā)網絡游戲android_21.0游戲開發(fā)實戰(zhàn)寶典附件加代碼:(1)mydochessactivity類package cn.zh.wy.sl;import android.app.activity;import android.os.bundle;import android.media.mediaplayer;import android.os.handler;import android.os.message;import android.view.window;import android.view.window

18、manager;public class mydochessactivity extends activity boolean issound = true;/是否播放聲音mediaplayer startsound;/開始和菜單時的音樂mediaplayer gamesound;/游戲聲音handler myhandler = new handler()/用來更新ui線程中的控件 public void handlemessage(message msg) if(msg.what = 1)/welcomeview或helpview或gameview傳來的消息,切換到menuview init

19、menuview();/初始化并切換到菜單界面 else if(msg.what = 2)/menuview傳來的消息,切換到gameview initgameview();/初始化并切換到游戲界面 else if(msg.what = 3)/menuview傳來的消息,切換到helpview inithelpview();/初始化并切換到幫助界面 ; public void oncreate(bundle savedinstancestate) /重寫的oncreate super.oncreate(savedinstancestate);/全屏requestwindowfeature(wi

20、ndow.feature_no_title);getwindow().setflags(windowmanager.layoutparams.flag_fullscreen , windowmanager.layoutparams.flag_fullscreen);startsound = mediaplayer.create(this, r.raw.startsound);/加載歡迎聲音startsound.setlooping(true);/設置游戲聲音循環(huán)播放 gamesound = mediaplayer.create(this, r.raw.gamesound);/游戲過程的背景聲音

21、gamesound.setlooping(true);/設置游戲聲音循環(huán)播放 this.initwelcomeview();/初始化歡迎界面 public void initwelcomeview()/初始化歡迎界面 this.setcontentview(new mywelcomeview(this,this);/切換到歡迎界面 if(issound)/需要播放聲音時 startsound.start();/播放聲音 public void initgameview()/初始化游戲界面 this.setcontentview(new mygameview(this,this); /切換到游戲

22、界面 public void initmenuview()/初始化菜單界面 if(startsound != null)/停止 startsound.stop();/停止播放聲音 startsound = null; if(this.issound)/是否播放聲音 gamesound.start();/播放聲音 this.setcontentview(new mymenuview(this,this);/切換view public void inithelpview()/初始化幫助界面 this.setcontentview(new myhelpview(this,this);/切換到幫助界面

23、 (2)mywelcomeview類package cn.zh.wy.sl;import android.content.context;import android.graphics.bitmap;import android.graphics.bitmapfactory;import android.graphics.canvas;import android.graphics.color;import android.view.motionevent;import android.view.surfaceholder;import android.view.surfaceview;pub

24、lic class mywelcomeview extends surfaceview implements surfaceholder.callback mydochessactivity mydochessactivity;/的引用private tutorialthread thread;/內部刷幀的線程private mywelcomeviewthread movethread;/物件移動的線程bitmap welcomebackage;/大背景bitmap logo2;bitmap menu;/菜單按鈕 int logo2x = 100;/初始化需要移動的圖片的相應坐標int bor

25、dbackgroundy = -100;/背景框的y坐標int menuy = 550;/菜單的y坐標public mywelcomeview(context context,mydochessactivity mydochessactivity) /構造器 super(context);this.mydochessactivity = mydochessactivity;/得到mydochessactivity引用 getholder().addcallback(this); this.thread = new tutorialthread(getholder(), this);/初始化刷幀

26、線程 this.movethread = new mywelcomeviewthread(this);/初始化圖片移動線程 initbitmap();/初始化所以圖片public void initbitmap()/初始化所以圖片welcomebackage = bitmapfactory.decoderesource(getresources(), r.drawable.welcomebackage);logo2 = bitmapfactory.decoderesource(getresources(), r.drawable.logo2);menu = bitmapfactory.deco

27、deresource(getresources(), r.drawable.menu);public void ondraw(canvas canvas)/自己寫的繪制方法,并非重寫的/畫的內容是z軸的,后畫的會覆蓋前面畫的canvas.drawcolor(color.black);/清屏canvas.drawbitmap(welcomebackage, 0, 0, null);/繪制welcomebackagecanvas.drawbitmap(logo2, logo2x, 150, null);/繪制logo2canvas.drawbitmap(menu, 200, menuy, null

28、);/繪制menu/從寫surfacechanged方法public void surfacechanged(surfaceholder holder, int format, int width, int height) public void surfacecreated(surfaceholder holder) /創(chuàng)建時啟動相應進程 this.thread.setflag(true);/設置循環(huán)標志位 this.thread.start();/啟動線程 this.movethread.setflag(true);/設置循環(huán)標志位 this.movethread.start();/啟動線

29、程public void surfacedestroyed(surfaceholder holder) /摧毀時釋放相應進程 boolean retry = true; thread.setflag(false);/設置循環(huán)標志位 movethread.setflag(false); while (retry) /循環(huán) try thread.join();/等待線程結束 movethread.join(); retry = false;/停止循環(huán) catch (interruptedexception e) /不斷地循環(huán),直到刷幀線程結束 public boolean ontouchevent

30、(motionevent event) /屏幕監(jiān)聽if(event.getaction() = motionevent.action_down)if(event.getx()200 & event.getx()355 & event.gety()355+menu.getheight()/點擊菜單按鈕mydochessactivity.myhandler.sendemptymessage(1);return super.ontouchevent(event);class tutorialthread extends thread/刷幀線程private int span = 100;/睡眠的毫秒

31、數(shù) private surfaceholder surfaceholder;/surfaceholder引用private mywelcomeview welcomeview;/welcomeview引用private boolean flag = false; public tutorialthread(surfaceholder surfaceholder, mywelcomeview welcomeview) /構造器 this.surfaceholder = surfaceholder;/得到surfaceholder引用 this.welcomeview = welcomeview;

32、/得到welcomeview引用 public void setflag(boolean flag) /設置循環(huán)標記位 this.flag = flag; overridepublic void run() /重寫的run方法canvas c;/創(chuàng)建畫布c while (this.flag) / 重復繪圖循環(huán),直到線程停止 c = null; try / 鎖定整個畫布,在內存要求比較高的情況下,建議參數(shù)不要為null c = this.surfaceholder.lockcanvas(null); synchronized (this.surfaceholder) /同步 welcomevie

33、w.ondraw(c);/繪制 finally /使用finally語句保證下面的代碼一定會被執(zhí)行 if (c != null) / 解鎖c,并渲染當前圖像 this.surfaceholder.unlockcanvasandpost(c); try thread.sleep(span);/睡眠指定毫秒數(shù) catch(exception e)/捕獲異常 e.printstacktrace();/打印堆棧信息 (3)mywelcomeviewthread類package cn.zh.wy.sl;public class mywelcomeviewthread extends threadpriv

34、ate boolean flag = true;/循環(huán)標志位mywelcomeview mywelcomeview;/welcomeview的引用public mywelcomeviewthread(mywelcomeview mywelcomeview)/構造器this.mywelcomeview = mywelcomeview;/得到welcomeview的引用public void setflag(boolean flag)/設置循環(huán)標志位this.flag = flag;public void run()/重寫的run方法 try thread.sleep(300);/睡眠三百毫秒,保

35、證界面已經顯示 catch(exception e)/捕獲異常 e.printstacktrace();/打印異常信息 while(flag)mywelcomeview.logo2x -= 30;/更改圖片的坐標if(mywelcomeview.logo2x15)mywelcomeview.logo2x = 15; /停止移動if(mywelcomeview.logo2x = 15)/當logo2到位后按鈕才移動出現(xiàn)mywelcomeview.menuy -= 30;if(mywelcomeview.menuy355)mywelcomeview.menuy = 355; try thread.

36、sleep(100);/睡眠指定毫秒數(shù) catch(exception e)/捕獲異常 e.printstacktrace();/打印異常信息 (4)mygameview類package cn.zh.wy.sl;import android.content.context;import android.graphics.bitmap;import android.graphics.bitmapfactory;import android.graphics.canvas;import android.graphics.color;import android.graphics.paint;imp

37、ort android.media.mediaplayer;import android.view.motionevent;import android.view.surfaceholder;import android.view.surfaceview;public class mygameview extends surfaceview implements surfaceholder.callbackprivate tutorialthread thread;/刷幀的線程/timethread timethread ;mydochessactivity mydochessactivity

38、;/聲明activity的引用bitmap qipan;/棋盤bitmap qizibackground;/棋子的背景圖片bitmap win;/勝利的圖片bitmap lost;/失敗的圖片bitmap ok;/確定按鈕bitmap vs;/黑方紅方vs的圖片bitmap right;/向右的指針bitmap left;/向左的指針 bitmap exit2;/退出按鈕圖片bitmap sound2;/聲音按鈕圖片bitmap sound3;/當前是否播放了聲音bitmap background;/背景圖片mediaplayer go;/下棋聲音paint paint;/畫筆boolean

39、caipan = true;/是否為玩家走棋boolean focus = false;/當前是否有選中的棋子int selectqizi = 0; /當然選中的棋子int starti, startj;/記錄當前棋子的開始位置int endi, endj;/記錄當前棋子的目標位置bitmap heizi = new bitmap7;/黑子的圖片數(shù)組bitmap hongzi = new bitmap7;/紅子的圖片數(shù)組myguize myguize;/規(guī)則類int status = 0;/游戲狀態(tài)。0游戲中,1勝利, 2失敗int qizi = new int/棋盤2,3,6,5,1,5,6

40、,3,2,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,4,0,7,0,7,0,7,0,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,0,14,0,14,0,14,0,11,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,9,10,13,12,8,12,13,10,9,;public mygameview(context context,mydochessactivity mydochessactivity) /構造器super(context);this.mydochessactivity = mydo

41、chessactivity;/得到mydochessactivity的引用getholder().addcallback(this);go = mediaplayer.create(this.getcontext(), r.raw.go);/加載下棋的聲音this.thread = new tutorialthread(getholder(), this);/初始化刷幀線程/this.timethread = new timethread(this);/初始化思考時間的線程init();/初始化所需資源myguize = new myguize();/初始化規(guī)則類public void ini

42、t()/初始化方法 paint = new paint();/初始化畫筆qipan = bitmapfactory.decoderesource(getresources(), r.drawable.qipan);/棋盤圖片win = bitmapfactory.decoderesource(getresources(), r.drawable.win);/勝利的圖片lost = bitmapfactory.decoderesource(getresources(), r.drawable.lost);/失敗的圖片ok = bitmapfactory.decoderesource(getres

43、ources(), r.drawable.ok);/確定按鈕圖片vs = bitmapfactory.decoderesource(getresources(), r.drawable.vs);/vs字樣的圖片right = bitmapfactory.decoderesource(getresources(), r.drawable.right);/向右的指針left = bitmapfactory.decoderesource(getresources(), r.drawable.left);/向左的指針exit2 = bitmapfactory.decoderesource(getres

44、ources(), r.drawable.exit2);/退出按鈕圖片sound2 = bitmapfactory.decoderesource(getresources(), r.drawable.sound2);/聲音按鈕圖片sound3 = bitmapfactory.decoderesource(getresources(), r.drawable.sound3);heizi0 = bitmapfactory.decoderesource(getresources(), r.drawable.a);/黑帥heizi1 = bitmapfactory.decoderesource(get

45、resources(), r.drawable.e);/黑車heizi2 = bitmapfactory.decoderesource(getresources(), r.drawable.d);/黑馬heizi3 = bitmapfactory.decoderesource(getresources(), r.drawable.f);/黑炮heizi4 = bitmapfactory.decoderesource(getresources(), r.drawable.b);/黑士heizi5 = bitmapfactory.decoderesource(getresources(), r.d

46、rawable.c);/黑象heizi6 = bitmapfactory.decoderesource(getresources(), r.drawable.g);/黑兵hongzi0 = bitmapfactory.decoderesource(getresources(), r.drawable.a1);/紅將hongzi1 = bitmapfactory.decoderesource(getresources(), r.drawable.e5);/紅車hongzi2 = bitmapfactory.decoderesource(getresources(), r.drawable.d4)

47、;/紅馬hongzi3 = bitmapfactory.decoderesource(getresources(), r.drawable.f6);/紅砲hongzi4 = bitmapfactory.decoderesource(getresources(), r.drawable.b2);/紅仕hongzi5 = bitmapfactory.decoderesource(getresources(), r.drawable.c3);/紅相hongzi6 = bitmapfactory.decoderesource(getresources(), r.drawable.g7);/紅卒back

48、ground = bitmapfactory.decoderesource(getresources(), r.drawable.bacnground);public void ondraw(canvas canvas)/自己寫的繪制方法canvas.drawcolor(color.white);canvas.drawbitmap(background, 0,0, null);/清背景canvas.drawbitmap(qipan, 10, 10, null);/繪制棋盤for(int i=0; iqizi.length; i+)for(int j=0; jqizii.length; j+)/繪制棋子if(qiziij !=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論