java課程設(shè)計:五子棋_第1頁
java課程設(shè)計:五子棋_第2頁
java課程設(shè)計:五子棋_第3頁
java課程設(shè)計:五子棋_第4頁
java課程設(shè)計:五子棋_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、課程設(shè)計論文任務(wù)書 軟件 學院軟件工程工程管理專業(yè) 2006- 3 班 一、課程設(shè)計(論文)題目多用戶五子棋游戲 二、課程設(shè)計(論文)工作自 2021 年 6 月 30 日起至 2021 年 7月 4 日止。三、課程設(shè)計(論文) 地點: 信息學院機房 四、課程設(shè)計(論文)內(nèi)容要求:1本課程設(shè)計的目的 1通過課程設(shè)計把課堂上講的內(nèi)容融會貫穿,學會設(shè)計程序、開發(fā)應(yīng)用軟件、開發(fā)系統(tǒng)軟件等各項工作。 2通過實習掌握語言的語法結(jié)構(gòu),理解類和對象的概念,準確的使用各種數(shù)據(jù)類型,對面向?qū)ο笾械睦^承和多態(tài)的概念要理解、會使用,在程序中提高代碼的重用性,使設(shè)計的程序結(jié)構(gòu)清晰、易于維護。2課程設(shè)計的任務(wù)及要求1根

2、本要求:1、選擇對弈桌及角色2、在游戲界面,有開始,退出游戲未結(jié)束,點退出自動判負;發(fā)言及顯示區(qū);用戶列表區(qū);棋盤繪制區(qū)。2創(chuàng)新要求: 在根本要求到達后,可進行創(chuàng)新設(shè)計,如改善算法性能、友好的人機界面。3課程設(shè)計論文編寫要求1要按照書稿的規(guī)格打印與寫課程設(shè)計論文 2論文包括目錄、設(shè)計思路、具體實現(xiàn)、運行調(diào)試與分析討論、設(shè)計體會與小結(jié)、參考文獻、附錄源代碼等 3課程設(shè)計論文裝訂按學校的統(tǒng)一要求完成4辯論與評分標準: 1完成根本算法設(shè)計:20分; 2完成設(shè)計過程 :40分; 3完成調(diào)試:20分;4答復下列問題:20分。5參考文獻:1丁振凡,?java語言實用教程?.北京:北京郵電大學出版社,200

3、42美Y.DanielLiang,?Java語言程序設(shè)計第三版?M.北京:機械工業(yè)出版社,20043 彭晨陽, ?Java實用系統(tǒng)開發(fā)指南?M.北京:機械工業(yè)出版社,20044 薛亮,?Java實用教程?M.西安:西安電子科技大學出版社,2003596課程設(shè)計進度安排內(nèi)容 天數(shù)地點構(gòu)思及收集資料 1圖書館編碼與調(diào)試 2.5實驗室撰寫論文 1.5圖書館、實驗室學生簽名: 2008年6 月 30 日課程設(shè)計(論文)評審意見1完成根本算法20分:優(yōu)、良、中、一般、差; 2完成調(diào)試20分:優(yōu)、良、中、一般、差; 3創(chuàng)新設(shè)計20分:優(yōu)、良、中、一般、差;4設(shè)計分析20分:優(yōu)、良、中、一般、差;5答復下列

4、問題20分:優(yōu)、良、中、一般、差;6格式標準性及考勤是否降等級:是ü、否評閱人: 職稱: 年 月 日目錄1引言42 JAVA語言概述42.1 JAVA簡介42.2 JAVA語言特點4 JAVA工具53 課程設(shè)計正文.5課程設(shè)計內(nèi)容及要求.53.2 設(shè)計思路.53.3 具體實現(xiàn).93.4 運行調(diào)試及結(jié)果分析.113.5 課程設(shè)計小結(jié).173.6 參考文獻.194 附錄.20-331、引言五子棋游戲不僅能增強思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。五子棋既有現(xiàn)代休閑的明顯特征“短、平、快,又有古典哲學的高深學問“陰陽易理;它既有簡單易學的特性,為人民群眾所喜聞樂見,又有深奧的技

5、巧和高水平的國際性比賽;它的棋文化源淵流長,具有東方的神秘和西方的直觀;既有“場的概念,亦有“點的連接。它是中西文化的交流點,是古今哲理的結(jié)晶。我作為一名學生,在系統(tǒng)的學習了Java語言之后,經(jīng)常用它編一些小程序。這次課程設(shè)計,我就想將學過的Java語言中的各種技術(shù)綜合起來,編寫一個小游戲,既對自己學過的知識進行一次檢驗,也能系統(tǒng)地將學過的知識復習穩(wěn)固。2、JAVA語言概述2.1 JAVA簡介JAVA是Sun公司開發(fā)的編程語言,是一個簡單,面向?qū)ο?,分布式,解釋性,強壯,平安,與系統(tǒng)無關(guān),可移植,高性能,多線程和動態(tài)的語言。1. 平臺無關(guān)性Java引進虛擬機原理,并運行于虛擬機,實現(xiàn)不同平臺之

6、間的Java接口,Java的數(shù)據(jù)類型與機器無關(guān)。2. 平安性Java的編程類似C+,但舍棄了C+的指針對存儲器地址的直接操作,程序運行時,內(nèi)存由操作系統(tǒng)分配,這樣可以防止病毒通過指針入侵系統(tǒng)。它提供了平安管理器,防止程序的非法訪問。3. 面向?qū)ο?Java吸收了C+面向?qū)ο蟮母拍?,將?shù)據(jù)封裝于類中,實現(xiàn)了程序的簡潔性和便于維護性,使程序代碼可以只需一次編譯就可反復利用。4. 分布式Java建立在TCP/IP網(wǎng)絡(luò)平臺上,提供了用 和FTP協(xié)議傳送和接收信息的庫函數(shù),使用其相關(guān)技術(shù)可以十分方便的構(gòu)建分布式應(yīng)用系統(tǒng)。5. 健壯性Java致力與檢查程序在編譯和運行時的錯誤,并自動回收內(nèi)存,減少了內(nèi)存出

7、錯的可能性。Java取消了C語言的結(jié)構(gòu)、指針、#define語句、多重繼承、goto語句、操作符、重載等不易被掌握的特性,提供垃圾收集器自動回收不用的內(nèi)存空間。2.3 JAVA工具JDK1) Java編譯器Java編譯器將Java源代碼文件編譯成可執(zhí)行的Java字節(jié)碼。Java源代碼文件的擴展名為 .java,Java編譯器把這種擴展名的文件編譯成擴展名為.class的文件。源文件中的每個類在編譯后都將產(chǎn)生一個class文件,這意味一個Java源代碼文件可能編譯生成多個class文件。2) Java解釋器Java解釋器對編譯生成的字節(jié)碼格式的可執(zhí)行程序的運行提供支持,它是運行非圖形Java程序

8、的命令行工具。3、課程設(shè)計正文課程設(shè)計內(nèi)容及要求1、題目內(nèi)容五子棋游戲在日常生活中比擬常見,玩起來比擬簡單,根據(jù)五子棋的規(guī)那么,當連續(xù)出現(xiàn)5個同一個顏色的棋子的時候,就判該棋子顏色獲勝。這次課程設(shè)計,我做的是比擬簡單的五子棋游戲,不像網(wǎng)絡(luò)五子棋游戲那樣,要實現(xiàn)很多的功能,而且之間的關(guān)系又非常的復雜。這次題目的內(nèi)容主要實現(xiàn),開始、退出、四個文本框、其中一個是發(fā)言文本框、判斷誰贏。我實現(xiàn)的是人與電腦對戰(zhàn),而不是人與人之間的對戰(zhàn),人默認為黑棋,電腦默認為白棋;每次先下子的都是人黑棋,程序?qū)崿F(xiàn)了電腦每一步在棋盤中的位置;當白棋贏了的時候,顯示的是在第三個文本框,當黑棋贏了的時候,顯示的是第一個文本框。

9、當還沒有分出勝負的時候,如果誰選擇退出,那就判該顏色的棋子輸了,也就是另外一個顏色的棋子獲勝。2、題目要求1選擇對弈桌及角色執(zhí)黑、執(zhí)白、觀看。2在游戲界面,有開始,退出游戲未結(jié)束、點退出自動判負;發(fā)言及顯示區(qū);用戶列表區(qū);棋盤繪制區(qū)。3.2 設(shè)計思路要實現(xiàn)一個五子棋游戲,這里我定義了9個簡單的類,分別是Wuziqi、Wuziqipan、WuziqiPoint_black、WuziqiPoint_white、Auto、Ping、Judge、Scan、Sort。通過這9個類來實現(xiàn)五子棋游戲一些簡單的功能。9個類既相互聯(lián)系又是相互獨立的,它們之間通過調(diào)用來實現(xiàn)的,具體怎么樣調(diào)用如下圖: 在設(shè)計的時候

10、,類Wuziqipan是整個設(shè)計的核心,它是連接主類與類之間的橋梁,同時也是實現(xiàn)方法的核心。怎么繪制棋盤、棋子怎么走、怎么判斷誰贏了、等等都是要通過它才能實現(xiàn)的。下面這個圖是類Wuziqipan。通過這個思路的設(shè)計,自然就可以把整個五子棋游戲的功能實現(xiàn),而且還是智能化。這個五子棋游戲不是人與人之間的對戰(zhàn),而是人與計算機之間的對戰(zhàn),在對戰(zhàn)之前先在電腦上設(shè)置一些電腦下棋的具體算法。它可以根據(jù)具體情況任意選擇其中一個算法,這樣就顯得更加靈活了,給人提出了一定的挑戰(zhàn)。3.3 具體實現(xiàn)為了使界面友好,棋盤背景顏色一定要選擇好,棋盤的大小也選擇好,這里我選擇了19行19列。界面如下圖:1、這次課程設(shè)計我從

11、總體把握,首先定義主類Wuziqi,主類大致功能是這樣的,先定義一個窗體的標題,然后讓窗體可見。創(chuàng)立標簽,設(shè)置標簽的大小、背景色及位置,設(shè)置五子棋盤的位置及大小等一些功能。public class Wuziqi extends Frame /類五子棋繼承窗體 Wuziqipan wuziqipan=new Wuziqipan();/創(chuàng)立對象wuziqipan Wuziqi() super("花名偉-五子棋游戲");/調(diào)用父類的構(gòu)造方法定義窗體的標題 setVisible(true);/讓窗體可見 setLayout(null);/先置布局為空 Label label=new

12、 Label("人VS電腦-五子棋游戲",Label.CENTER);/創(chuàng)立標簽對象 add(label);/添加標簽 label.setBounds(70,55,440,26);/設(shè)置標簽的位置及大小 label.setBackground(Color.pink);/設(shè)標簽的背景色為紅色 add(wuziqipan); /添加五子棋 wuziqipan.setBounds(70,90,440,440);/設(shè)置五子棋的位置及大小 addWindowListener(new WindowAdapter() public void windowClosing(WindowEve

13、nt e)/實現(xiàn)關(guān)閉窗口方法 System.exit(0); ); setSize(600,550);/設(shè)置窗體的大小 public static void main(String args) Wuziqi wuziqi=new Wuziqi();/創(chuàng)立對象 2、其次定義一個五子棋盤類Wuziqipan,然后調(diào)用五子棋盤方法,來繪制五子棋盤。這次課程設(shè)計我繪制的五子棋盤是19行19列,行距和列舉是20,然后根據(jù)五個黑棋子坐標確定位置,也就是五子棋盤的標準形式。在五子棋盤上,有三個按鈕,分別是開始、退出、發(fā)言,其中發(fā)言按鈕中文本框,用來記錄人說的內(nèi)容。還有另外三個文本框,第一個文本框是用來記錄黑

14、子下棋和判斷黑棋贏了,第二個文本框是用來記錄棋子下了幾步,第三個文本框是用來記錄白棋下的坐標和判斷白棋贏了。其次調(diào)用圖形構(gòu)造方法,繪制五子棋盤具體圖形,讓五子棋盤圖形更接近標準化。跟著調(diào)用鼠標單擊方法,確定鼠標單擊的坐標,根據(jù)調(diào)用一系列方法和類來實現(xiàn)判斷是白棋贏了還是黑棋贏了。class Wuziqipan extends Panel implements MouseListener,ActionListener/類五子棋盤繼承控制面板Wuziqipan() /構(gòu)造五子棋盤的方法 public void paint(Graphics g) public void mousePressed(Mo

15、useEvent e)/實現(xiàn)鼠標單擊方法 public void mouseReleased(MouseEvent e)/實現(xiàn)鼠標事件釋放的方法public void mouseEntered(MouseEvent e)/實現(xiàn)鼠標事件移入方法public void mouseExited(MouseEvent e)/實現(xiàn)鼠標事件移出方法public void mouseClicked(MouseEvent e) /實現(xiàn)鼠標事件單擊方法 public void actionPerformed(ActionEvent e) 3、跟著定義黑色五子棋類WuziqiPoint_black,具體的功能是給

16、黑棋注冊,實現(xiàn)黑棋在棋盤上。主要代碼如下所示:class WuziqiPoint_black extends Canvas implements MouseListener/類黑棋繼承畫布實現(xiàn)鼠標接口 Wuziqipan wuziqipan=null;/先給棋盤賦空值 WuziqiPoint_black(Wuziqipan p) public void paint(Graphics g) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e)/實現(xiàn)鼠標事件釋放的方法 public void m

17、ouseEntered(MouseEvent e)/實現(xiàn)鼠標事件移入方法 public void mouseExited(MouseEvent e) /實現(xiàn)鼠標事件移出方法 public void mouseClicked(MouseEvent e)/實現(xiàn)鼠標事件單擊方法 4、同樣定義白色五子棋類WuziqiPoint_white,具體的功能是給白棋注冊,實現(xiàn)白棋在棋盤上。主要代碼如下所示:class WuziqiPoint_white extends Canvas implements MouseListener/類白棋繼承畫布,實現(xiàn)鼠標接口 Wuziqipan wuziqipan=null

18、;/首先給棋盤賦空值 WuziqiPoint_white(Wuziqipan p) public void paint(Graphics g) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e)/實現(xiàn)鼠標事件釋放的方法 public void mouseEntered(MouseEvent e) /實現(xiàn)鼠標事件移入方法 public void mouseExited(MouseEvent e) /實現(xiàn)鼠標事件移出方法 public void mouseClicked(MouseEvent

19、e) /實現(xiàn)鼠標事件單擊方法 5、定義Scan類,瀏覽一下整個棋盤,大致了解一下五子棋盤.主要代碼如下所示:class Scan/瀏覽 int shape=new int19195;/創(chuàng)立一個數(shù)組 void scan(int wuziqipan,int colour) 6、定義Auto類,根據(jù)計算確定計算機所執(zhí)白棋下子的位置,這樣就可以大概知道白棋的下子位置。主要代碼如下所示:class Auto/根據(jù)計算確定計算機所執(zhí)白棋下子的位置 int x,y; void auto(int wuziqipan,int a,int b) int randomNumber=(int)(Math.random

20、()*8)+1;/利用隨機函數(shù)產(chǎn)生1到8的數(shù) switch(randomNumber) /使用開關(guān)語句 7、定義Ping類,評估一下白棋下在這里是不是比擬好,尋找有沒有更好的位置。主要代碼如下所示:class Ping/估計一下白棋落在這里是不是比擬好 int max_x,max_y,max; public void ping(int shape) 8、定義Sort類,排好棋子的順序。主要代碼如下所示:class Sort / public void sort(int shape) 9、定義Judge類,判斷是白棋贏了還是黑棋贏了,根據(jù)五子棋規(guī)那么,當同一顏色連續(xù)出現(xiàn)五個的時候就判定該顏色贏了

21、。class Judge/判斷誰贏了 static boolean judge(int a,int color) 首先將編寫好的程序使用Java編譯器編譯,生成以class為擴展名的類文件,然后使用Java解釋器,進行調(diào)試。1、在調(diào)試的時候,第一個界面就是進入五子棋游戲的界面。如下圖:分析運行結(jié)果:輸出這個界面主要用到了第七章的知識,圖形用戶界面編程,這一章知識說容易也比擬容易,說難也比擬難。當時在編這個程序的時候,不是少了這個就是少了那個。由于自己的能力有限,不能像網(wǎng)上五子棋游戲那樣好看,而且功能齊全,我這個五子棋游戲只是實現(xiàn)了一些根本功能。改良想法:我覺得我這個程序還有一些地方需要改良,例

22、如:在下五子棋的時候,不管是人還是電腦都不能悔棋,我覺得應(yīng)該可以在棋盤上在添加一個悔棋按鈕,當想悔棋的時候只要按一下這個按鈕就可以了,就可以把前一次下子的地方再重新下。2、當點擊開始按鈕的時候,人先下黑子,電腦白子,由于人是隨便下在哪里的,黑子落在棋盤的位置是不確定的,所以電腦根據(jù)相應(yīng)的算法落在的位置也是不確定的。具體如下圖:分析運行結(jié)果:人選擇黑棋,然后落在棋盤相應(yīng)的位置,電腦根據(jù)黑棋落在棋盤的坐標來確定白棋落在的位置。其中三個文本框分別顯示:黑棋下子、白棋走了幾步、白棋落在棋盤的坐標。其實白棋有很多種走法,只是每次它選擇最優(yōu)的一種。改良想法:我覺得可以改良選棋的顏色,這里我做的只是默認人選

23、黑棋,電腦選白棋。這樣改良我覺得更好,可是自己能力有限和時間有限只能做到這樣了。3、當棋子還沒有下完的時候,如果有人想退出的話,當點擊退出按鈕,就判它為負,也就是另外一種顏色的棋子贏了。具體情況如下圖:中選擇黑棋的人,按下退出按鈕,這可以確定黑棋輸了,也就是白棋贏了,具體如下圖:分析運行結(jié)果:當人和電腦下棋還沒有分出勝負的時候,如果人覺得不想再下這盤,按下退出按鈕,那就確定電腦贏了白棋贏了。因為這里只能人和電腦兩個人對戰(zhàn),而電腦是不會按退出按鈕的,所以只有人才會按退出按鈕。當按下退出按鈕,輸?shù)挠肋h是人也就是黑棋輸了。改良想法:我覺得可以設(shè)計為兩個不同的人下棋,這樣兩個人都有可能按退出按鈕,從而

24、顯得五子棋游戲更顯得智能化,等我暑假回去的時候我想可以試一下,現(xiàn)在時間有限只能做這些了。4、當兩個人對決,白棋贏的情形,如下圖:分析運行結(jié)果:這里是白棋連續(xù)出現(xiàn)5個,所以白棋贏了,下五子棋不僅需要技術(shù)還需要耐心,以前我下的時候總是不耐煩,所以老是輸。改良想法:我覺得可以設(shè)置當連續(xù)出現(xiàn)4個同一個顏色的棋子就判定輸贏,這樣難度就更大一點,肯定會更好玩一點。5、兩個人對決,黑棋贏的情形,如下圖:分析運行結(jié)果:這里是連續(xù)出現(xiàn)5個黑棋,黑棋贏了。改良想法:我覺得這里沒有什么改良的,大多數(shù)五子棋都是這樣來判定輸贏的。6、這里也可以發(fā)言,當白棋贏的時候,人可以在發(fā)言區(qū)說:“你真棒!。如下圖:分析運行結(jié)果:實

25、現(xiàn)發(fā)言區(qū)就是在文本框輸入數(shù)據(jù),文本框只能編輯一行數(shù)據(jù),當其中一方贏了,另外一方就可以在發(fā)言區(qū)中發(fā)表自己的看法。改良想法:如果有時間的話,我覺得可以把發(fā)言區(qū)放在五子棋的旁邊,實現(xiàn)多行數(shù)據(jù)的輸入,而且可以邊下棋邊發(fā)表自己的看法,也可以同時發(fā)表看法。3.5 課程設(shè)計小結(jié)通過短短的一周時間來做Java課程設(shè)計,我感覺自己學到了很多,以前在Java書上沒有注意的問題,現(xiàn)在一下子就暴露出來了。以前自己還覺得Java學得還不錯,因為經(jīng)常一個人在編Java程序。不過這對我來說真的是很不錯的,至少可以讓自己學到很多的東西,回想一周的課程設(shè)計,自己發(fā)現(xiàn)對這次的課程設(shè)計有了更深、更新的體會。通過這次課程設(shè)計,我對這

26、個學期所學的Java知識有了更深的了解,穩(wěn)固了自己所學的知識。Java作為一種分布式和可移植的計算機語言,在網(wǎng)絡(luò)軟件開發(fā)上有著特別的優(yōu)點。它開發(fā)方便、快捷,平安性高,對以往復雜的功能,尤其是網(wǎng)絡(luò)通信等方面,實現(xiàn)起來簡潔明了,在網(wǎng)絡(luò)編程領(lǐng)域有著巨大的開展?jié)摿?。在當今網(wǎng)絡(luò)經(jīng)濟飛速開展的時代,Java技術(shù)的平臺無關(guān)性、可重用性、模塊化等特點大大減少了重復勞動,無論是開發(fā)用于Internet瀏覽的網(wǎng)站還是功能復雜的網(wǎng)絡(luò)應(yīng)用系統(tǒng),Java都可以提供有力的支持。做這次五子棋游戲課程設(shè)計,讓我學到了好多東西,特別是第七章圖形用戶界面編程。同時也涉及了許多別的知識,大大擴展了我的知識面,同時也讓我學會了如何使

27、用所學的知識去解決一些實際的問題。在設(shè)計中我深深知道自己掌握的知識還遠遠不夠,掌握的一些理論知識應(yīng)用到實踐中去,總會出現(xiàn)這樣或那樣的問題,不是理論沒有掌握好,而是光知道書本上的知識是遠遠不夠的,一定要把理論知識和實踐結(jié)合起來。把學到的知識應(yīng)用到時間中去,熟能生巧,才可以把理論的精華發(fā)揮出來。知識不是知道、了解就好了,一定要去應(yīng)用它、開展它,讓它在現(xiàn)實生活中得到充分的應(yīng)用,從而解決一些問題,這才是我們學習的根本目的。而且知識又不是單一的,它是互相聯(lián)系的,學科與學科之間都有著內(nèi)在的聯(lián)系。計算機是一門非常復雜而且龐大的學科,一項課題往往需要多項技術(shù)才可以完成的。在設(shè)計階段,通過對課題的深入分析與研究

28、,迫使我對技術(shù)有了一定的了解。在遇到問題時,得到了指導老師與同學的悉心幫助,使我感受到集體的力量是無窮的。 由于自己還在讀大二,很多知識都不是很扎實,特別是Java是這個學期剛學,所以做的課程設(shè)計難免會有很多的問題,不過我會一直努力的。把這次當作是我的一次練習,我未來成功的開始。3.6 參考文獻234薛亮,?Java實用教程?M.西安:西安電子科技大學出版社4 附錄import java.awt.*;/抽象窗口工具集import java.awt.event.*;public class Wuziqi extends Frame /類五子棋繼承窗體 Wuziqipan wuziqipan=ne

29、w Wuziqipan();/創(chuàng)立對象wuziqipan Wuziqi() super("花名偉-五子棋游戲");/調(diào)用父類的構(gòu)造方法定義窗體的標題 setVisible(true);/讓窗體可見 setLayout(null);/先置布局為空 Label label=new Label("人VS電腦-五子棋游戲",Label.CENTER);/創(chuàng)立標簽對象 add(label);/添加標簽 label.setBounds(70,55,440,26);/設(shè)置標簽的位置及大小 label.setBackground(Color.pink);/設(shè)標簽的背景色

30、為紅色 add(wuziqipan); /添加五子棋 wuziqipan.setBounds(70,90,440,440);/設(shè)置五子棋的位置及大小 addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)/實現(xiàn)關(guān)閉窗口方法 System.exit(0); ); setSize(600,550);/設(shè)置窗體的大小 public static void main(String args) Wuziqi wuziqi=new Wuziqi();/創(chuàng)立對象 /*類五子棋盤*class Wuziqipa

31、n extends Panel implements MouseListener,ActionListener/類五子棋盤繼承控制面板 int array=new int1919;/創(chuàng)立一個數(shù)組 Scan scan1=new Scan();/創(chuàng)立對象scan1 Scan scan2=new Scan(); /創(chuàng)立對象scan2 Auto auto=new Auto();/創(chuàng)立對象auto Ping ping1=new Ping();/創(chuàng)立對象ping1 Ping ping2=new Ping();/創(chuàng)立對象ping2 Sort sort=new Sort(); /創(chuàng)立對象sort int i=

32、0; /初始化 int x=-1,y=-1,wuziqicolor=1; Button button=new Button("開始");/創(chuàng)立對象-開始按鈕 Button button1=new Button("退出");/創(chuàng)立對象-退出按鈕 Button button2=new Button("發(fā)言");/創(chuàng)立對象-發(fā)言按鈕 TextField text1=new TextField("黑子下棋"); TextField text2=new TextField(); TextField text3=new Tex

33、tField(); TextField text4=new TextField();/文本框創(chuàng)立四個對象text1text2text3text4Wuziqipan() /構(gòu)造五子棋盤的方法 setSize(440,440);/將窗體的大小設(shè)置寬為440像素,高為440像素 setLayout(null);/先設(shè)置布局為空 setBackground(Color.lightGray);/把棋盤的背景色設(shè)為淺灰色 addMouseListener(this);/注冊鼠標單擊 add(button);/添加按鈕 button.setBounds(10,5,30,26);/設(shè)置按鈕坐標 button.

34、addActionListener(this);/注冊按鈕 add(button1);/添加按鈕 button1.setBounds(50,5,30,26);/設(shè)置按鈕坐標 button1.addActionListener(this);/注冊按鈕 add(button2);/添加按鈕 button2.setBounds(320,5,30,26);/設(shè)置按鈕坐標 button2.addActionListener(this);/注冊按鈕 add(text1); /添加text1 text1.setBounds(90,5,60,24);/設(shè)置text1坐標 add(text2); /添加text

35、2 text2.setBounds(250,5,60,24);/設(shè)置text2坐標 add(text3); /添加text3 text3.setBounds(170,5,60,24);/設(shè)置text3坐標 add(text4); /添加text4 text4.setBounds(360,5,60,24);/設(shè)置text3坐標 for(int i=0;i<19;i+) /利用雙重for循環(huán)給數(shù)組賦值為0 for(int j=0;j<19;j+) arrayij=0; for(int i=0;i<19;i+) /利用三重for循環(huán)給數(shù)組賦初始值 for(int j=0;j<

36、19;j+) for(int h=0;h<5;h+) scan1.shapeijh=0; scan2.shapeijh=0; text1.setEditable(false);/設(shè)置輸入框賦初值 text2.setEditable(false); /*畫圖:畫五個實心小橢圓*public void paint(Graphics g) for (int i=40;i<=400;i=i+20)/利用for循環(huán)畫棋盤一行一行的線,行距為20 g.drawLine(40,i,400,i); for(int j=40;j<=400;j=j+20)/利用for循環(huán)畫棋盤一列一列的線,列距

37、為20 g.drawLine(j,40,j,400); g.fillOval(97,97,6,6); /繪制5個填充橢圓,根據(jù)各自的坐標確定位置 g.fillOval(337,97,6,6); g.fillOval(97,337,6,6); g.fillOval(337,337,6,6); g.fillOval(217,217,6,6); /*實現(xiàn)鼠標單擊事件*public void mousePressed(MouseEvent e)/實現(xiàn)鼠標單擊方法 int a=0,b=0; if(e.getModifiers()=InputEvent.BUTTON1_MASK)/返回鼠標單擊的x和y坐標

38、 x=(int)e.getX();/返回鼠標單擊x坐標 y=(int)e.getY();/返回鼠標單擊y坐標 WuziqiPoint_black wuziqipoint_black=new WuziqiPoint_black(this);/創(chuàng)立五子棋黑棋子對象 WuziqiPoint_white wuziqipoint_white=new WuziqiPoint_white(this);/創(chuàng)立五子棋白棋子對象 i+; text3.setText("第"+i+"步");/往輸入框?qū)懭霐?shù)據(jù)if(x+5)/20<2|(y+5)/20<2|(x-5)

39、/20>19|(y-5)/20>19) else a=(x+10)/20;b=(y+10)/20; if(arrayb-2a-2=0&&wuziqicolor=1) this.add(wuziqipoint_black);/添加當前黑棋 wuziqipoint_black.setBounds(a*20-9,b*20-9,18,18);/算出黑棋子下一步走的坐標 wuziqicolor=wuziqicolor*(-1);/改變棋子顏色的值 arrayb-2a-2=1; if (Judge.judge(array,1) text1.setText("黑棋贏!&

40、quot;);/往輸入框中寫入黑棋贏 wuziqicolor=2; removeMouseListener(this);/去除當前棋盤中所有元素 add(text4); /添加text4 text4.setBounds(360,5,60,24);/確定text4的位置 text4.setText("你真棒!"); else text1.setText(""); /否那么再往輸入框中寫入數(shù)據(jù) if(i>2&&wuziqicolor=-1)/判斷條件語句 scan1.scan(array,1);/掃描對象scan1中的數(shù)組 scan2.

41、scan(array,-1);/掃描對象scan2中的數(shù)組 sort.sort(scan1.shape);/給對象scan1數(shù)組中的形狀排序 sort.sort(scan2.shape);/給對象scan2數(shù)組中的形狀排序 ping1.ping(scan1.shape);/對形狀進行評價 ping2.ping(scan2.shape); wuziqicolor=wuziqicolor*(-1);/改變五子棋顏色的值 this.add(wuziqipoint_white);/添加當前白棋 if(ping1.max>ping2.max) text2.setText(ping1.max_x+&

42、quot; "+ping1.max_y+" "+ping1.max);/往text2輸入框中寫入數(shù)據(jù) wuziqipoint_white.setBounds(ping1.max_y+2)*20-9,(ping1.max_x+2)*20-9,18,18);/算出白棋在棋盤中的坐標 arrayping1.max_xping1.max_y=-1; text1.setText("黑子下棋"); for(int i=0;i<19;i+) /利用三重for循環(huán)給數(shù)組賦值 for(int j=0;j<19;j+) for(int h=0;h<

43、;5;h+) scan1.shapeijh=0; scan2.shapeijh=0; else text2.setText(ping2.max_x+" "+ping2.max_y+" "+ping2.max); /往text2輸入框中寫入數(shù)據(jù) wuziqipoint_white.setBounds(ping2.max_y+2)*20-9,(ping2.max_x+2)*20-9,18,18);/算出白棋在棋盤中的坐標 arrayping2.max_xping2.max_y=-1; if (Judge.judge(array,-1) text2.setTe

44、xt("白棋贏!");/往輸入框輸入白棋贏 wuziqicolor=2; removeMouseListener(this);/移除當前所有元素 add(text4); /添加text4 text4.setBounds(360,5,60,24);/確定text4的位置 text4.setText("你真棒!"); else text1.setText("黑子下棋"); for(int i=0;i<19;i+) /利用三重for循環(huán)給數(shù)組賦值 for(int j=0;j<19;j+) for(int h=0;h<5;h+) scan1.shapeijh=0; scan2.shapeijh=0; if(i<=2&&wuziqicolor=-1) auto.auto(array,b-2,a-2); this.add(wuziqipoint_white);/添加白色棋子 wuziqicolor=wuziqicolor*(-1);/改變其子顏色的值 wuziqipoint_white.setBounds(auto.y+2)*20-9,(auto.x+2)*20-9,18,18);/

溫馨提示

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

評論

0/150

提交評論