久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

java五子棋游戲_控制臺_總結報告(推薦五篇)

時間:2019-05-15 09:43:14下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《java五子棋游戲_控制臺_總結報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《java五子棋游戲_控制臺_總結報告》。

第一篇:java五子棋游戲_控制臺_總結報告

總結

一、目的:

1、完成瘋狂java講義第四章作業

2、提升代碼能力

3、熟悉java語言

二、環境:

Windows8.1系統、jdk1.8、記事本(需要把文件擴展名改成java)

三、遇到的問題:

1、錯誤需要為class、interface或enum的問題

這個問題,經調試發現是因為注釋的時候使用了嵌套注釋,即在跨行注釋/* */里面添加了跨行注釋

2、如何提取控制臺輸入的問題

這個問題,根據書上例子,采用bufferedreader解決,具體可以參見api文檔.3、斜方向棋子的檢測問題

這個問題,解決它所需要的算法,著實讓我頭疼了一下.因為我是以棋盤左邊第一列為基準進行斜上方和斜下方的檢測,以及以棋盤最后一列為基準進行斜上方和斜下方的檢測.第一列的檢測會好做很多,因為只需要兩層嵌套for循環的i和j相加或相減就可以實現斜方向的遞進.而以最后一列的,則需要讓兩層嵌套for循環i和j的初始值設定為棋盤大小,然后遞減.這就導致無法直接用i和j相加或相減來實現遞進.我的解決辦法是引入額外的變量reduce(具體詳見源碼),從0開始遞增,這樣就可以用i和reduce的相加或相減來實現遞進.四、所做的內容: 和大多數五子棋游戲代碼一樣,我也是采用一個二維數組board來作為棋盤.同時采用一個全局變量boardsize來指定這個二維數組的大小,類似于這樣:board[boardsize][boardsize].然后使用水平、豎直、斜方向來檢測游戲是否出現結果。

有棋盤初始化函數,對二維數組board[][]進行賦值.有棋盤打印函數實現棋盤的顯示.一個棋子輸入函數.一個勝負檢測函數.一個信息輸出函數.然后在main函數里面采用while循環實現游戲的流程.列舉幾個很有用的變量:

Board[][];//字符串型,作為棋盤的二維數組,是全局變量

Boardsize;//int型,控制棋盤大小,是全局變量

E_o_t;//布爾變量,用來判斷main函數中的while循環是否結束.即實現游戲是否結束功能.W_steps,B_steps;//int型,用來記錄白棋,黑棋連在一起的棋子的個數,它們中的任何一個值達到5,則代表相應的棋手贏了.Reduce;//int型,在勝負檢測函數中斜方向的檢測用到,前面用介紹.控制臺用到的命令:

Javac;//用來編譯記事本寫的程序.Java;//用來執行編譯過的程序

五、總結:

這次的作業,感覺對自己的代碼能力有一定的提升,同時,對java編程有了更深的認識, 同時了解到在java編程中,幾乎所有的全局變量和方法函數,需要被定義成static.也認識到java提供的一些方法函數功能十分強大,例如bufferedreader.六、源碼:

importjava.io.InputStreamReader;importjava.io.BufferedReader;public class test2{ private static String[][] board;private static intboard_size=16;

private static boolean PLAYER=true;//棋手,默認白棋先下.false代表黑棋,true代表白棋 private static booleane_o_n=true;//作為循環(游戲)是否結束的依據,意思為end or not.public static void board_init(){ board=new String[board_size][board_size];for(inti=0;i

for(int j=0;j

board[i][j]=“+”;

}

}

}

public static void board_print(){ for(inti=0;i

if(i==0){

for(intbou=0;bou

if(bou==0)

System.out.print(bou+“-------”);

else if(bou>=1&&bou<=9)

System.out.print(“0”+bou+“-”);

else

System.out.print(bou+“-”);

}

System.out.print(“n”);

}

for(int j=0;j

if(j==0){

System.out.print(i+1+“t”+board[i][j]);

}

else

System.out.print(“-”+board[i][j]);

} } System.out.print(“n”);} for(intbou=0;bou

if(bou==0)

System.out.print(“--------”);

else if(bou>=1&&bou<=9)

System.out.print(“0”+bou+“-”);

else

System.out.print(bou+“-”);

}

System.out.print(“n”);

//實現棋子輸入并調換棋手

public static void qizi_input(inta,int b){

int x=a-1;

int y=b-1;

if(x>=0&&y=0&&y

if(true==PLAYER){

board[x][y]=“●”;

PLAYER=false;

}

else{

} } else board[x][y]=“○”;PLAYER=true;

System.out.println(“【棋子必須落在棋盤上且該位置沒有已下的棋子!】”);

} public static void WINNERis(){ //實現判斷勝負方法并輸出輸贏信息

intB_steps=0;intW_steps=0;for(inti=0;i

for(int j=0;j

if(board[i][j]==“●”){

W_steps++;

}

else{

W_steps=0;} if(board[i][j]==“○”){ B_steps++;} else{ B_steps=0;} if(5==W_steps){ System.out.print(“【白棋贏了O(∩_∩)O!黑棋輸了~(╯﹏╰)~】”);e_o_n=false;break;} if(5==B_steps){

System.out.print(“【黑棋贏了O(∩_∩)O!白棋輸了~(╯﹏╰)~】”);

e_o_n=false;

break;

} } W_steps=0;B_steps=0;

}

for(int j=0;j

for(inti=0;i

if(board[i][j]==“●”){ W_steps++;} else{ W_steps=0;} if(board[i][j]==“○”){ B_steps++;} else{ B_steps=0;} if(5==W_steps){ System.out.print(“【白棋贏了O(∩_∩)O!黑棋輸了~(╯﹏╰)~】”);e_o_n=false;break;}

“);

”);

if(5==B_steps){

System.out.print(“【黑棋贏了O(∩_∩)O!白棋輸了~(╯﹏╰)~】”);

e_o_n=false;

break;

} } W_steps=0;B_steps=0;

} for(inti=0;i

for(int j=0;j

if(i+j

if(board[i+j][j]==“●”){ W_steps++;} else{ W_steps=0;} if(board[i+j][j]==“○”){ B_steps++;} else{ B_steps=0;} if(5==W_steps){ System.out.print(“【白棋贏了O(∩_∩)O!黑棋輸了~(╯﹏╰)~】 e_o_n=false;break;} if(5==B_steps){

System.out.print(”【黑棋贏了O(∩_∩)O!白棋輸了~(╯﹏╰)~】

e_o_n=false;

break;

} } else

continue;} for(int j=0;j

if(board[i-j][j]==“●”){

“);

”);

W_steps++;} else{ W_steps=0;} if(board[i-j][j]==“○”){ B_steps++;} else{ B_steps=0;} if(5==W_steps){

System.out.print(“【白棋贏了O(∩_∩)O!黑棋輸了~(╯﹏╰)~】 e_o_n=false;break;} if(5==B_steps){ System.out.print(”【黑棋贏了O(∩_∩)O!白棋輸了~(╯﹏╰)~】

e_o_n=false;

break;

}

}

else

continue;}

W_steps=0;B_steps=0;

} for(inti=board_size-2;i>0;i--){ //實現最右列的斜方向的判斷

int reduce=0;for(int j=board_size-1;j>0;j--){

if(i-reduce>0){

if(board[i-reduce][j]==“●”){ W_steps++;} else{ W_steps=0;} if(board[i-reduce][j]==“○”){ B_steps++;}

“);

”);

“);

”);

else{ B_steps=0;} if(5==W_steps){

System.out.print(“【白棋贏了O(∩_∩)O!黑棋輸了~(╯﹏╰)~】 e_o_n=false;break;} if(5==B_steps){

System.out.print(”【黑棋贏了O(∩_∩)O!白棋輸了~(╯﹏╰)~】

e_o_n=false;

break;

}

reduce++;} else

continue;} reduce=0;for(int j=board_size-1;j>0;j--){ if(board_size>i+reduce){

if(board[i+reduce][j]==“●”){

W_steps++;

}

else{

W_steps=0;

}

if(board[i+reduce][j]==“○”){

B_steps++;

}

else{

B_steps=0;

}

if(5==W_steps){

System.out.print(“【白棋贏了O(∩_∩)O!黑棋輸了~(╯﹏╰)~】

e_o_n=false;break;} if(5==B_steps){ System.out.print(”【黑棋贏了O(∩_∩)O!白棋輸了~(╯﹏╰)~】

e_o_n=false;

break;

}

reduce++;

}

else

continue;

}

W_steps=0;

B_steps=0;

}

}

public static void INFO_SHOW(){ //顯示棋盤及必要信息:落子方重新開始退出游戲

System.out.println(“【輸入格式為:‘1,1’或者‘88,99’】”);

if(true==PLAYER)

System.out.print(“【想重新開始嗎?請輸入暗號88,88】【想退出游戲嗎?請輸入暗號66,66】n【現在落子方是白棋:”);

else

System.out.print(“【想重新開始嗎?請輸入暗號88,88】【想退出游戲嗎?請輸入暗號66,66】n【現在落子方是黑棋:”);}

public static void main(String[] args)throws java.io.IOException {

/**

**實現整個邏輯流程的實現,**

**黑白兩方的步數統計

**勝負信息輸出*/

test2 WUZIQI= new test2();//創建對象

System.out.print(“【控制臺五子棋,超高逼格版】n【默認白棋先下,你無法改變,這就是命!】n【請務必根據指示操作】n”);

WUZIQI.board_init();

WUZIQI.board_print();

//實現電腦控制臺的輸入讀取

BufferedReader P_INPUT= new BufferedReader(new InputStreamReader(System.in));

String str_input= null;

//循環體實現游戲框架

while(e_o_n){

INFO_SHOW();

}

} str_input=P_INPUT.readLine();String[] posStrArr=str_input.split(“,”);intxPos=Integer.parseInt(posStrArr[0]);intyPos=Integer.parseInt(posStrArr[1]);if(88==xPos&&88==yPos){ WUZIQI.board_init();continue;} if(66==xPos&&66==yPos){ e_o_n=false;continue;} qizi_input(xPos,yPos);WUZIQI.board_print();WINNERis();System.out.println(“n【游戲結束,再見哦,親!】”);

}

第二篇:Java五子棋實現報告

一、實驗目的

(1)使用Java編寫五子棋程序

(2)掌握編寫過程的一些類和類成員的使用,并且了解五子棋制作過程的一些步驟和了解一些算法。

二、實驗環境

在電子樓2樓,裝有My Eclipse 的計算機上進行

三、實驗內容

編寫一個五子棋程序。程序主要實現以下功能:

1.實現五子棋界面,要求人性化界面簡潔美觀; 2.實現黑白色輪流下棋功能,能提示下棋方; 3.實現連成五子自動判斷功能; 4.實現時間設置功能,認輸功能;

核心代碼如下:

1.我的第一步是設計界面。在這個過程的要使用到以下的步驟:

1.使用MyEclipse 創建一個Project關于這個工程,加入兩個類,分別是ChessFrame和Chess,而ChessFrame是這個工程中最重要的一個部分。創建過程中要繼承JFrame類,并且要繼承Runnable 和 MouseListener 這兩個接口,分別是用來監聽鼠標的移動和時間的變化。2.在給這個JFrame設置大小和顏色等一些東西。這里最主要的是使用了兩個函數,是以前沒見過的:

1.這個是用來設置默認的窗口關閉事件的

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);2.這兩個是用來獲得屏幕的大小的

Toolkit.getDefaultToolkit().getScreenSize().height;Toolkit.getDefaultToolkit().getScreenSize().width;

3.把本地的背景圖片加到這個窗口中,作為這個窗口的背景圖:

使用的到的類有BufferedImage和 ImageIO這兩個類,這兩個類是專門用來處理這種功能的。主要的代碼如下:

BufferedImage bg = null;bg = ImageIO.read(new File(“e:/background.jpg”));g.drawImage(bg,0,0,this);這樣這個圖片就加到了這個窗口的背景去了。

這里有一個改進就是雙緩沖技術,可以防止閃屏。這個技術就是在界面和內存都有一幅圖,我們的改動不是直接畫界面,而是內存中先畫好然后把內存中直接顯示出來,那樣就沒有了一前一后的,那就沒有了閃屏的事情發生了。

4.就是畫棋盤和寫一些游戲信息:

這步比較簡單,也沒什么可以說的,用到的一些畫線的函數,和寫String的一些函數。

以上做完以后就可以出現以下的界面:

1.我的第二步就是增加對mouse的點擊和移動的處理,這樣以后就可以用來下棋。在這個過程的要使用到以下的步驟: 1.增加對mouse的監視,然后重寫它的一些函數:

1.我們在ChessFrame的構造函數中加入了addMouseListener()函數,然后重寫關于這個的四個函數,我們這這里不重寫所有的函數,就改寫一個MousePress函數就可以了。改寫的代碼如下:

public void mousePress(MouseEvent arg0){

this.x = arg0.getX();this.y = arg0.getY();if(this.canplay)

} this.repaint();現在要處理的就是加上棋子了,我在這個做了一下小改動可以更加準確的定位下棋的位置:

if(x >= 10 && x <= 374 && y >= 72 && y <= 450){

int sx1 =(this.x72)/ 20;int yx1 =(this.x72)% 20;if(yx1 >= 10){ } if(yy2 >= 10){ } sy2++;sx1++;就是這個,我們通過監控鼠標的就可以得到點擊的X,Y坐標,我在這里通過對它求余,假如余數大于10(就是一個格子的一半)那就給+1,不然不變。后面的畫棋子是很簡單的一個過程,使用的是現成的函數(drawoval)

2.這部要做的就是記錄棋子和五子連的判斷:

1.我們通過一個數組int給保存棋子,如果是0就是沒子,1表示是黑子,2表示白子。在每次重繪的時候遍歷這個數組顯示,這樣就可以保存棋子了。2.判斷五子連起來然后獲勝的算法: 這個算法是鑒戒例子上的:

private boolean isline(int x, int y, int xchange, int ychange, int color){

int tempx = xchange;int tempy = ychange;int count = 1;while(x + xchange >= 0 && y + ychange >= 0

&& color == chess1[x + xchange][y + ychange]){ count++;if(xchange!= 0){ } if(ychange!= 0){ if(ychange < 0){ xchange++;

}

}

}

} ychange--;ychange++;} else { xchange = tempx;ychange = tempy;while(xychange >= 0

} if(count >= 5){

} return true;return false;} else { && color == chess1[xychange]){ count++;if(xchange!= 0){ } if(ychange!= 0){

} if(ychange < 0){

} ychange--;ychange++;} else { xchange++;中心思想就是要判斷就要判斷8個方向,其中有的只是相反的方向,我們使用關于X,Y的相對的變化來判斷,并且使用count來計數,如果到了5個就可以判斷勝利啦。

1.我的第三步就是時間的變化和一些鍵的設置

1.關于時間的變化主要是在于線程的使用,這里我們這個JFrame它繼承了Runnable 這個接口,不過我們要重寫Run函數,這個run函數的代碼如下: public void run(){

if(this.second > 0){

while(true){

this.repaint();if(this.isblack){

this.ss1--;

if(this.ss1 == 0){

JOptionPane

.showMessageDialog(this, “黑方超時~~~~?¤游戲結束”);

this.message1=“0:0:0”;

{

“白方超時~~~~?¤?¤游戲結束”);this.message2=“0:0:0”;this.canplay = false;

{

{ }

this.ss2--;

if(this.ss2 == 0){

this.message1 = this.ss

1/ 3600 + “ : ”

+(this.ss1 / 60this.ss1 / 60 *

this.ss1=-1;

this.canplay = false;

}else if(this.ss1>0)3600 * 60)60this.ss2 / 3600 + “ : ”

+(this.ss2this.ss2 / 3600 * 60 * 60);

this.repaint();}else { }

try {

}

Thread.sleep(1000);e.printStackTrace();} catch(InterruptedException e){ 這個函數是用來事時間的變化,所以每操作以后就讓線程sleep(1000)就可以了,那樣就是一秒鐘。這樣就可以倒計時了。2.現在我們要點擊一個按鈕要它有響應。

這里我們其實就沒用到什么button,那為什么會有反應呢,因為我們通過鼠標的點擊范圍來確定要響應什么函數,這就是這里面的秘密.在public void mouseClicked(MouseEvent arg0)函數里有下面這些if的判斷

if(x1 >= 404 && x1 <= 473 && y1 >= 74 && y1 <= 103)if(x1 >= 404 && x1 <= 473 && y1 >= 127 && y1 <= 155)if(x1 >= 404 && x1 <= 473 && y1 >= 179 && y1 <= 208)if(x1 >= 404 && x1 <= 473 && y1 >= 286 && y1 <= 316)if(x1 >= 404 && x1 <= 473 && y1 >= 338 && y1 <= 367)if(x1 >= 404 && x1 <= 473 && y1 >= 390 && y1 <= 419)這就是為了確定鼠標的范圍,然后相對調用函數。

其他還有就是一些Debug處理,在程序已經處理了,結果的還是蠻可以處理的,不過只能是人人對戰。

四、實驗心得與小結

這次試驗總的來說沒有想像中那么難,還有視屏的幫助,感覺起還是很容易動手的,不過由于自己沒上心,沒有做比較大的改動,最主要的人機的對戰沒做出來是滿遺憾的,不過通過這個試驗,讓我學習了不少的知識,比如雙緩沖,mouselistener 等許多許多的知識,還有關于五子棋算法的設計也是一部分。不管怎么說還是有學到知識的,沒什么改動,但對現有的知識的掌握還是很可以的。

五、指導教師評議

成績評定:

指導教師簽名:

第三篇:區域游戲五子棋

10:10-10:40 區域游戲

一、活動目標:

1、新增區域中幼兒能迅速接受理解新游戲。

2、大膽選擇自己喜歡的游戲材料和游戲內容,自主愉快地游戲。

3、能與同伴合作游戲,積極交流自己的想法。

二、活動準備:

1、經驗準備:知道各區域的游戲玩法。

2、物質準備:(1)各區游戲材料如:穿編游戲、飛行棋、小畫板等。

(2)新增游戲區域材料如:五子棋

3、區域內容:

(1)公共區域:大舞臺、美發屋等。(2)班級區域:

(3)美食區(關東煮):肉串、涮爐等。

美食區(面包店):面包、披薩等。

美食區(咖啡店):咖啡機、桌椅等。

動手區(制作區):剪刀、雙面膠等。

動手區(編織區):編制籃等。

益智區(好玩的磁鐵):磁鐵、迷宮板等。

益智區(解鎖):鎖、鑰匙等。

閱讀區:書籍,桌椅等。

三、活動過程:

(一)介紹玩法,激發興趣。

教師:今天我們的益智區有了新的棋類游戲——五子 棋。

五子棋是中國民間的一種棋類小游戲,十分地簡單,誰先橫排、豎排、斜排列出5個棋子就算獲勝。

(在電腦上下載五子棋的小游戲進行演示,并講解。)

(二)提出要求,注意安全。

師:

游戲前老師有幾點要求提醒大家。

1、動手區里做粘貼畫時要注意不要把豆子撒在地上,更不能放進鼻子耳朵里。

2、建構區的小朋友在堆擺易拉罐的時候請輕拿輕放。

3、益智區里初學五子棋的小朋友遇到問題主動找老師。

4、要和其他小朋友文明交往、合作,學會謙讓。

5、垃圾放在垃圾桶,不可以隨地亂丟。

小朋友們坐坐好,坐的好的小朋友先插卡進區。

(三)自主進區,觀察記錄

1、了解幼兒入區的情況,是否全部入區,情緒如何。

2、關注各區域活動情況,教師適當加入。

3、仔細觀察并記錄,給予有困難的幼兒幫助。

4、提醒幼兒遵守游戲規則,學會謙讓合作。

(四)重點指導手工區——五子棋

(五)結束活動,觀察記錄。整理和收拾

督促幼兒收拾整理,做到輕、快、齊,教師協助收拾整理。

(六)游戲評價

(1)講解與展示

幼兒自己介紹自己的作品,感受成功后的快樂。

(2)交流與發現

讓幼兒交流今天的活動,活動中開心的事情和遇到的問題。

(3)小結

表揚與批評,出示活動中拍攝的照片進行點評,提出新要求。

第四篇:五子棋JAVA語言課程設計報告

《Java語言程序設計》

課程設計報告

學 院: 信息科學技術學院 班 級: 軟件技術2班 姓 名: 王更新 學 號: 1108900505 指導教師: 郭韶升 課設時間: 2014-03-17 至2014-03-26

二O一四 年 三月 二十六 日

目 錄

一、設計要求…………………………………………....2

二、設計步驟…………………………………………....2 2.1程序流程圖………………………….…………...2 2.2程序的功能分配……………………….………...3

三、設計正文…………………………………………....6 3.1創建棋盤類……………………………………….6 3.2判斷輸贏功能實現……………………………….9 3.3測試結果……………………………………….....9

四、心得體會…………………………………………...12

五、參考文獻…………………………………………...12 附錄(源代碼)……………………………………….13

一、課程設計要求

設計一個15╳15圍棋棋盤,由兩玩家交替進行對戰,并可以實現以下功能: 1.選擇落子的先后順序 2.重置棋盤 3.刷新重新開始 4.退出提示

并且規定退出者判為負,但退出過程中要有提示。以防不小心點錯了。最后判斷某一方是否為五子連珠。

實現一個簡單的多用戶五子棋的游戲程序,包括如下兩個界面(1)選擇對弈桌(執黑、執白)。

(2)在游戲界面,有開始,退出(游戲未結束、點退出自動判負);

二、設計步驟

2.1程序流程圖

2.2 程序的功能分配

a.棋盤的繪制

public void draw_qipan(Graphics G)//畫棋盤 15*15{

G.setColor(Color.lightGray);

G.fill3DRect(10,10,300,300,true);

G.setColor(Color.black);

for(int i=1;i<16;i++){

G.drawLine(20,20*i,300,20*i);

G.drawLine(20*i,20,20*i,300);

} } b.添加按鈕

Button b1=new Button(“開始”);Button b2=new Button(“重置游戲”);Label lblWin=new Label(“ ”);Checkbox ckbHB[]=new Checkbox[3];Button exist = new Button(“退出”);public void init(){

ckbHB[0]=new Checkbox(“執白”,ckgHB,false);

ckbHB[1]=new Checkbox(“執黑”,ckgHB,false);

ckbHB[2]=new Checkbox(“觀看”,ckgHB, false);}

c.鼠標棋子的觸發事件

public void mouseClicked(MouseEvent e){

Graphics g=getGraphics();

int x1,y1;

x1=e.getX();

y1=e.getY();

if(e.getX()<20 || e.getX()>300 || e.getY()<20 || e.getY()>300){

return;

}

if(x1%20>10){

x1+=10;

}

if(y1%20>10){ y1+=10;

}

x1=x1/20*20;

y1=y1/20*20;

set_Qizi(x1,y1);

m*=(-1);}

d.按鈕的觸發事件

public void actionPerformed(ActionEvent e){

Graphics g=getGraphics();

if(e.getSource()==b1){

Game_start();

}

else{

Game_re();

}

if(e.getSource()==exist){

Game_re();

lblWin.setText(Get_qizi_color(color_Qizi)+“輸了!”);

intGame_Start=0;

}

e.判斷落子的位置及畫出相應的黑白棋子 public void set_Qizi(int x,int y)//落子{

if(intGame_Start==0)//判斷游戲未開始{

return;

}

if(intGame_Body[x/20][y/20]!=0){

return;

}

Graphics g=getGraphics();

if(color_Qizi==1)//判斷黑子還是白子{

g.setColor(Color.black);

color_Qizi=0;

}

else{

g.setColor(Color.white);

color_Qizi=1;

}

g.fillOval(x-10,y-10,20,20);

intGame_Body[x/20][y/20]=color_Qizi+1;}

f.判斷勝負

if(Game_win_1(x/20,y/20))//判斷輸贏1{

lblWin.setText(Get_qizi_color(color_Qizi)+“贏了!”);

intGame_Start=0;

}

if(Game_win_2(x/20,y/20))//判斷輸贏2{

lblWin.setText(Get_qizi_color(color_Qizi)+“贏了!”);

intGame_Start=0;} if(Game_win_3(x/20,y/20))//判斷輸贏3{ lblWin.setText(Get_qizi_color(color_Qizi)+“贏了!”);intGame_Start=0;} if(Game_win_4(x/20,y/20))//判斷輸贏4{ lblWin.setText(Get_qizi_color(color_Qizi)+“贏了!”);

intGame_Start=0;} }

三、設計正文

3.1創建棋盤類

Public class WcyChess extends Applet ActionListener,MouseListener,MouseMotionListener,ItemListener{ int color_Qizi=0;//旗子的顏色標識 0:白子 1:黑子

int intGame_Start=0;//游戲開始標志 0未開始 1游戲中

int intGame_Body[][]=new int[16][16];//設置棋盤棋子狀態

int m=-1;Button b1=new Button(“開始”);Button b2=new Button(“重置游戲”);Label lblWin=new Label(“ ”);Checkbox ckbHB[]=new Checkbox[3];Button exist = new Button(“退出”);CheckboxGroup ckgHB=new CheckboxGroup();NetchatClient chat=new NetchatClient();public void init(){

setLayout(null);

addMouseListener(this);

add(b1);

b1.setBounds(330,50,80,30);

b1.addActionListener(this);

add(b2);

b2.setBounds(330,90,80,30);

b2.addActionListener(this);

ckbHB[0]=new Checkbox(“執白”,ckgHB,false);

ckbHB[0].setBounds(320,20,60,30);

ckbHB[1]=new Checkbox(“執黑”,ckgHB,false);

ckbHB[1].setBounds(380,20,60,30);

ckbHB[2]=new Checkbox(“觀看”,ckgHB, false);

add(ckbHB[0]);

add(ckbHB[1]);

add(ckbHB[2]);

ckbHB[0].addItemListener(this);

ckbHB[1].addItemListener(this);

add(lblWin);

lblWin.setBounds(330,180,80,30);

lblWin.setBackground(Color.red);

lblWin.setText(“勝利者!”);//沒有顯示?

ckbHB[2].setBounds(440, 20,60, 30);

add(exist);

exist.setBounds(330,130,80,30);

implements

//

exist.addActionListener(this);add(chat);chat.setBounds(20, 500, 300, 300);chat.frame();chat.setVisible(true);Game_start_csh();setSize(500,600);setVisible(true);} public void itemStateChanged(ItemEvent e){ if(ckbHB[0].getState())//選擇黑子還是白子{

color_Qizi=0;} else{

color_Qizi=1;} } public void mousePressed(MouseEvent e){} public void mouseClicked(MouseEvent e){ Graphics g=getGraphics();int x1,y1;x1=e.getX();y1=e.getY();if(e.getX()<20 || e.getX()>300 || e.getY()<20 || e.getY()>300){

return;} if(x1%20>10){

x1+=10;} if(y1%20>10){

y1+=10;} x1=x1/20*20;y1=y1/20*20;set_Qizi(x1,y1);m*=(-1);} public void actionPerformed(ActionEvent e){ Graphics g=getGraphics();if(e.getSource()==b1){

Game_start();} else {

Game_re();}

} if(e.getSource()==exist){

Game_re();

lblWin.setText(Get_qizi_color(color_Qizi)+“輸了!”);

intGame_Start=0;} } public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseDragged(MouseEvent e){} public void mouseMoved(MouseEvent e){} public void paint(Graphics g){ draw_qipan(g);

3.2判斷輸贏功能實現

if(Game_win_1(x/20,y/20)){ //判斷輸贏1

lblWin.setText(Get_qizi_color(color_Qizi)+“贏了!”);

intGame_Start=0;} if(Game_win_2(x/20,y/20)){ //判斷輸贏2

lblWin.setText(Get_qizi_color(color_Qizi)+“贏了!”);

intGame_Start=0;}

if(Game_win_3(x/20,y/20))//判斷輸贏3{

lblWin.setText(Get_qizi_color(color_Qizi)+“贏了!”);

intGame_Start=0;}

if(Game_win_4(x/20,y/20))//判斷輸贏4{

lblWin.setText(Get_qizi_color(color_Qizi)+“贏了!”);

intGame_Start=0;}

3.3 測試結果

a.進入游戲界面

游戲開始的界面有三個選擇項,用戶可以選擇相應的角色,選擇 完畢后點擊開始進入游戲。

b.選擇角色,開始下棋

首先達到五個棋子連在一塊的贏了,并在紅色區域顯示誰贏了!c.下完后,重新開始

下完一盤后游戲停止,點擊重新開始,界面回到初始界面,選擇角色繼續游戲.d.游戲中點退出,自動判輸

在下棋的過程當中誰中途退出,即點擊退出,系統自動判斷誰輸

四、課程設計心得體會

通過此次課程設計,將我本學期所學的JAVA知識得到鞏固和應用,在設計的過程中我遇到了很到問題,不過在老師和同學們的幫助和自己的思考下還是很好的完成了。這此課程設計還讓我懂得了寫程序不能閉門造車,要努力拓寬知識面,開闊視野,拓展思維。它還讓我學會了在網上查閱那些無限的資料。由于自己的分析設計和程序經驗不足,該系統設計和實現過程中,還有許多沒有完善的地方,比如用戶界面設計不夠美觀,異常出錯處理比較差等多方面問題,這些都有待進一步完善和提高。對于文中出現的不足和系統中出現的問題敬請老師指導。

五、參考文獻

1.吳其慶編著.Java程序設計實例教程.北京:冶金工業出版社 2.柳西玲.許斌編著.Java語言應用開發基礎.北京:清華大學出版社 3.丁振凡 Java 語言實用教程 :北京郵電大學出版社

附錄(源代碼)

import java.net.*;import java.io.*;import java.applet.*;import java.awt.*;import java.awt.event.*;import java.applet.Applet;import java.awt.Color;Public class wuziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener{ int color_Qizi=0;//旗子的顏色標識 0:白子 1:黑子 int intGame_Start=0;//游戲開始標志 0未開始 1游戲中

int intGame_Body[][]=new int[16][16];//設置棋盤棋子狀態

int m=-1;Button b1=new Button(“開始”);Button b2=new Button(“重新開始”);Label lblWin=new Label(“ ”);Checkbox ckbHB[]=new Checkbox[3];Button exist = new Button(“退出”);CheckboxGroup ckgHB=new CheckboxGroup();public void init(){

setLayout(null);

addMouseListener(this);

add(b1);

b1.setBounds(330,50,80,30);

b1.addActionListener(this);

add(b2);

b2.setBounds(330,90,80,30);

b2.addActionListener(this);

ckbHB[0]=new Checkbox(“執白”,ckgHB,false);

ckbHB[0].setBounds(320,20,60,30);

ckbHB[1]=new Checkbox(“執黑”,ckgHB,false);

ckbHB[1].setBounds(380,20,60,30);

ckbHB[2]=new Checkbox(“觀看”,ckgHB, false);

add(ckbHB[0]);

add(ckbHB[1]);

add(ckbHB[2]);

ckbHB[0].addItemListener(this);

ckbHB[1].addItemListener(this);

add(lblWin);

lblWin.setBounds(330,180,80,30);

lblWin.setBackground(Color.red);

e.getY()<20 || e.getY()>300){

lblWin.setText(“勝利者!”);//沒有顯示?

ckbHB[2].setBounds(440, 20,60, 30);add(exist);

exist.setBounds(330,130,80,30);exist.addActionListener(this);Game_start_csh();setSize(500,600);setVisible(true);}

public void itemStateChanged(ItemEvent e){ if(ckbHB[0].getState())//選擇黑子還是白子 {

color_Qizi=0;} else {

color_Qizi=1;} }

public void mousePressed(MouseEvent e){} public void mouseClicked(MouseEvent e){ Graphics g=getGraphics();int x1,y1;x1=e.getX();y1=e.getY();

if(e.getX()<20 || e.getX()>300 ||

return;}

if(x1%20>10){

x1+=10;}

if(y1%20>10){

y1+=10;}

x1=x1/20*20;y1=y1/20*20;set_Qizi(x1,y1);m*=(-1)}

public void actionPerformed(ActionEvent e){ Graphics g=getGraphics();if(e.getSource()==b1){

Game_start();

} else{

// 輸了!“);

贏了!”);

Game_re();}

if(e.getSource()==exist){

Game_re();

color_Qizi=m;

lblWin.setText(Get_qizi_color(color_Qizi)+“

intGame_Start=0;

}

}

public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseDragged(MouseEvent e){} public void mouseMoved(MouseEvent e){} public void paint(Graphics g){ draw_qipan(g);}

public void set_Qizi(int x,int y){ //落子

if(intGame_Start==0){//判斷游戲未開始

return;}

if(intGame_Body[x/20][y/20]!=0){

return;}

Graphics g=getGraphics();

if(color_Qizi==1){//判斷黑子還是白子

g.setColor(Color.black);

color_Qizi=0;} else{

g.setColor(Color.white);

color_Qizi=1;}

g.fillOval(x-10,y-10,20,20);

intGame_Body[x/20][y/20]=color_Qizi+1;if(Game_win_1(x/20,y/20)){ //判斷輸贏1 lblWin.setText(Get_qizi_color(color_Qizi)+”

intGame_Start=0;

了!“);

贏了!”);

贏了!“);

15*15

}

if(Game_win_2(x/20,y/20)){ //判斷輸贏2{

lblWin.setText(Get_qizi_color(color_Qizi)+”贏

intGame_Start=0;}

if(Game_win_3(x/20,y/20)){ //判斷輸贏3

lblWin.setText(Get_qizi_color(color_Qizi)+“

intGame_Start=0;}

if(Game_win_4(x/20,y/20)){ //判斷輸贏4

lblWin.setText(Get_qizi_color(color_Qizi)+”

intGame_Start=0;} }

public String Get_qizi_color(int x){

if(x==0){

return “黑子”;} else {

return “白子”;} }

public void draw_qipan(Graphics G){ //畫棋盤 G.setColor(Color.lightGray);

G.fill3DRect(10,10,300,300,true);G.setColor(Color.black);for(int i=1;i<16;i++){

G.drawLine(20,20*i,300,20*i);

G.drawLine(20*i,20,20*i,300);} }

public void Game_start(){ //游戲開始

intGame_Start=1;

Game_btn_enable(false);

b2.setEnabled(true);} public void Game_start_csh(){//游戲開始初始化

intGame_Start=0;

Game_btn_enable(true);

b2.setEnabled(false);

ckbHB[0].setState(true);

for(int i=0;i<16;i++){

for(int j=0;j<16;j++){

intGame_Body[i][j]=0;

}

}

lblWin.setText(“");} public void Game_re(){ //重新開始游戲

repaint();

Game_start_csh();} public void Game_btn_enable(boolean e){ //設置組件狀態

b1.setEnabled(e);

b2.setEnabled(e);

ckbHB[0].setEnabled(e);

ckbHB[1].setEnabled(e);} public boolean Game_win_1(int x,int y){ //橫向判斷輸贏

int x1,y1,t=1;

x1=x;

y1=y;

for(int i=1;i<5;i++){

if(x1>15){

break;

}

if(intGame_Body[x1+i][y1]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

for(int i=1;i<5;i++){

if(x1<1){){

t+=1;

}

else{

break;

}

}

if(t>4){

return true;

}

else{

return false;

} } public boolean Game_win_2(int x,int y){ //縱向判斷輸贏

int x1,y1,t=1;

x1=x;

y1=y;

for(int i=1;i<5;i++){

if(x1>15){

break;

}

if(intGame_Body[x1][y1+i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

for(int i=1;i<5;i++){

if(x1<1){

break;

}

if(intGame_Body[x1][y1-i]==intGame_Body[x][y]){

t+=1;

}

break;

}

if(intGame_Body[x1-i][y1]==intGame_Body[x][y]

else{

break;

}

}

if(t>4){

return true;

}

else{

return false;

} } public boolean Game_win_3(int x,int y){ //左斜判斷輸贏

int x1,y1,t=1;

x1=x;

y1=y;

for(int i=1;i<5;i++){

if(x1>15){

break;

}

if(intGame_Body[x1+i][y1-i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

for(int i=1;i<5;i++){

if(x1<1){

break;

}

if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

if(t>4){

return true;

}

else{

return false;

} } public boolean Game_win_4(int x,int y){ //左斜判斷輸贏

int x1,y1,t=1;

x1=x;

y1=y;

for(int i=1;i<5;i++){

if(x1>15){

break;

}

if(intGame_Body[x1+i][y1+i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

for(int i=1;i<5;i++){

if(x1<1){

break;

} if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

if(t>4){

return true;

}

else{

return false;

} } }

第五篇:五子棋游戲軟件工程課程設計

軟件工程設計

專 業:班 級:姓 名:學 號:指導老師:

I

目錄

第一章 需求分析.......................................................1 1.1 總體分析..........................................................1 1.2 初始化............................................................1 1.3 主循環控制模塊....................................................1 1.4 玩家下子..........................................................1 1.5 盤面分析填寫棋型表................................................2 1.6 對方下子..........................................................2 1.7 勝負判斷..........................................................2 第二章 功能描述.......................................................3 2.1 功能模塊圖........................................................3 2.2 功能說明..........................................................3 第三章 系統設計.......................................................4 3.1 流程圖............................................................4 3.2 流程圖說明........................................................5 第四章 運行結果.......................................................6 第五章 總結...........................................................7 附錄一 源代碼.........................................................8

II

軟件工程設計

五子棋游戲

第一章 需求分析

1.1 總體分析

軟件需求分析是軟件開發周期的第一個階段,也是關系到軟件開發成敗的關鍵一步。對于任何一個軟件而言,需求分析工作都是至關重要的一步。只有通過軟件需求分析,才能把軟件的功能和性能由總體的概念性描述轉化為具體的規格說明,進而建立軟件開發的基礎。實踐表明,需求分析工作進行得好壞,在很大程度上決定了軟件開發的成敗。

軟件需求分析的任務是:讓用戶和開發者共同明確將要開發的是一個什么樣的軟件。具體而言,就是通過對問題及其環境的理解、分析和綜合,建立邏輯模型,完成新軟件的邏輯方案設計。

基于本游戲,首先得為整個棋盤建立一張表格用以記錄棋子信息,我們使用一個15*15的二維數組Table[15][15](15*15是五子棋棋盤的大小),數組的每一個元素對應棋盤上的一個交叉點,用‘0’表示空位、‘1’代表己方的子、‘2’代表對方的子;這張表也是今后分析的基礎。在此之后還要為兩個玩家雙方各建立一張棋型表Computer[15][15][4]和Player[15][15][4],用來存放棋型數據。

1.2 初始化

首先,建立盤面數組Table[15][15]、對戰雙方的棋型表Computer[15][15][4]和Player[15][15][4]并將它們清零以備使用;然后初始化顯示器、鍵盤、鼠等輸入輸出設備并在屏幕上畫出棋盤(棋盤可以不顯示)。

1.3 主循環控制模塊

控制下棋順序,當輪到某方下子時,負責將程序轉到相應的模塊中去,主要擔當一個調度者的角色。

1.4 玩家下子

當輪到玩家下時,您通過鍵盤或鼠標在棋盤上落子,程序會根據該點的位置,在Table[15][15]數組的相應地方記錄‘2’,以表明該子是玩家下的。

軟件工程設計

1.5 盤面分析填寫棋型表

您在下五子棋時,一定會先根據棋盤上的情況,找出當前最重要的一些點位,如“活三”、“沖四”等;然后再在其中選擇落子點。先來分析己方的棋型,我們從棋盤左上角出發,向右逐行搜索,當遇到一個空白點時,以它為中心向左挨個查找,如果遇到己方的子則記錄然后繼續,如果遇到對方的子、空白點或邊界就停止查找。左邊完成后再向右進行同樣的操作;最后把左右兩邊的記錄合并起來,得到的數據就是該點橫向上的棋型,然后把棋型的編號填入到Computer[x][y][n]中就行了(x、y代表坐標,n=0、1、2、3分別代表橫、豎、左斜、右斜四個方向)。而其他三個方向的棋型也可用同樣的方法得到,當搜索完整張棋盤后,己方棋型表也就填寫完畢了。然后再用同樣的方法填寫對方棋型表。

注意:所有棋型的編號都要事先 定義好,越重要的號數越大!

1.6 對方下子

有了上面填寫的兩張棋型表,就是遍歷棋型表Computer[15][15][4]和Player[15][15][4]找出其中數值最大的一點,在該點下子即可。但這種算法的弱點非常明顯,只顧眼前利益,不能顧全大局,這就和許多五子棋初學者一樣犯了“目光短淺”的毛病。如果在這兒下子將會形成對手不得不防守的棋型(例如:‘沖四’、‘活三’);那么下一步對手就會照您的思路下子來防守您,如此一來便完成了第一步的預測。這時再調用模塊4對預測后的棋進行盤面分析,如果出現了‘四三’、‘雙三’或‘雙四’等制勝點,那么己方就可以獲勝了(當然對黑棋而言‘雙三’、‘雙四’是禁手,另當別論);否則照同樣的方法向下分析,就可預測出第二步、第三步??

等一等,要是盤面上沒有對手必須防的棋型,哪該怎么辦呢?進攻不成的話就得考慮防守了,將自己和對手調換一下位置,然后用上面的方法來預測對手的棋,這樣既可以防住對手巧妙的攻擊,又能待機發動反擊,何樂而不為呢!

1.7 勝負判斷

務須多言,某方形成五子連即獲勝;若黑棋走出‘雙三’、‘雙四’或長連即以禁手判負。

軟件工程設計

第二章 功能描述

2.1 功能模塊圖

五子棋游戲判斷棋盤是否已滿判斷是否出錯并提示判斷那方獲勝交替循環雙方下棋 圖2.1 功能模塊圖

2.2 功能說明

該五子棋程序基本上實現了五子棋的游戲功能,有雙方下棋的界面及最終判定結果的界面。同時該游戲采用二維坐標實現,明了易懂,方便玩家在游戲過程中的基本操作,使游戲更加簡便。在細節方面,該系統提供實時存儲功能,隨時記錄為完成的游戲,使用戶可以很好的處理意外中斷的情況。該游戲基本實現了游戲的一些要求和特征。在游戲的源程序及文檔方面,我們也嚴格遵守軟件工程思想,立足實驗要求,確定任務,需求分析,設計和編碼,每個步驟力求清晰易懂。原代碼注釋詳盡,各功能模塊功能分明,可移植性強。當然該系統也有很多不足的地方,第一次進行獨立的課程設計,也有很多細節方面是考慮到的,這款游戲也是在不斷的調試和修改中產生和完善的。希望老師能夠指出不足,幫助我不斷提高。

軟件工程設計

第三章 系統設計

3.1 流程圖

開始棋盤已滿是輸出平局否“0”方選位置判斷該位置是否有棋有另找位置無“0”方落子否判斷“0”方是否獲勝是輸出“0”方獲勝否棋盤已滿是輸出平局結束否“x”方選位置判斷該位置是否有棋有另找位置無“x”方落子判斷“x”方是否獲勝是輸出“x”方獲勝 圖3.1 流程圖

軟件工程設計

3.2 流程圖說明

本程序定義了各種操作函數、各種狀態判定宏,思想明確,思路清晰。各個判斷選擇了不同路徑,因此繼續進行或輸出結果。程序中,“循環”的利用非常直接和清晰,雙方交替下棋,因此循環往復。最終決出勝負或最終平局。分析時,也考慮了許多種情況,針對各個情況均作出了相對措施和解決方案。

程序采用循環進行雙方交替下棋,并進行了很多判斷。首先判斷棋盤是否已滿,若棋盤已滿,則輸出平局,結束游戲;若棋盤未滿,則繼續進行。然后判斷“0”方是否勝出,若“0”方獲勝,則輸出“0”方獲勝,結束游戲;若“0”方沒有獲勝,則繼續進行。再判斷“x”方是否獲勝,若“x”方獲勝,則輸出“x”方獲勝,結束游戲;若“x”方沒有獲勝,則繼續進行。回到“首先”的判斷。如此循環??

軟件工程設計

第四章 運行結果

圖4.1 運行結果初始圖

圖4.2 游戲過程圖

圖4.3

軟件工程設計

圖4.4

圖4.5

軟件工程設計

圖4.6

圖4.7

軟件工程設計

圖4.8 游戲進行圖

圖4.9 “0”方獲勝圖

軟件工程設計

附錄一 源代碼

#include

using namespace std;

int Hsheng(char a[][15]);

//判斷o子是否獲勝的函數

int Bsheng(char a[][15]);

//判斷x子是否獲勝的函數

int he(char a[][15]);

//判斷是否平局(也就是棋盤下滿了)的函數

void qipan(char a[15][15])

//執行輸出棋盤命令 {

cout<<“本游戲采用二維數組實現,棋盤為15X15的二維直角坐標系,均從1到15,祝二位游戲愉快.”;for(int i=0;i<15;i++)

//打印棋盤

{

for(int j=0;j<15;j++)cout<

}

}

int main(){

char a[15][15];

int x,y;

for(int i=0;i<15;i++)

for(int j=0;j<15;j++)

a[i][j]=' ';qipan(a);

while(1)//用循環語句執行o,x交替下子,這些while語句看起來似乎是個死循環~實際上都會經過break結束

{

int a1=1;

while(1)

{ for(;a1;)

{

cout<<“請輸入o子下的位置:”;

//輸入o子的位置

cin>>x>>y;if(a[x][y]=='o'||a[x][y]=='x')

//判斷是否已有子

{cout<<“已有子請重下”<<“,”;continue;}

else if(x>=15||y>=15){cout<<“輸入錯誤請重輸”<<“,”;continue;}

else { a[x][y]='o';a1=0;}

}

break;}

軟件工程設計

qipan(a);

//下好o子后將棋盤顯示

if(Hsheng(a))

//判斷o子是否已經獲勝

{cout<<“o子獲勝”<

while(1)

//下x子

{ cout<<“請輸入x子下的位置:”;

cin>>x>>y;

if(a[x][y]=='o'||a[x][y]=='x'||x>=15||y>=15)

{

for(;a[x][y]=='o'||a[x][y]=='x';)

{

cout<<“已有子請重下”;

cout<<“請輸入x子下的位置:”;

cin>>x>>y;continue;}

for(;x>=15||y>=15||x;)

{ cout<<“輸入錯誤請重輸”<<“,”;

//判斷輸入棋子位置是否正確

cout<<“請輸入x子下的位置:”;

cin>>x>>y;continue;}

a[x][y]='x';break;

}

else

{a[x][y]='x';break;}

}

qipan(a);

//再一次輸出棋盤

if(Bsheng(a))

//判斷x子是否已經獲勝

{cout<<“x子獲勝”<

if(he(a))

//判斷是否平局

{cout<<“平局”<

}

return 0;

}

int Hsheng(char a[][15]){

int i,j;

//判斷橫著的5個是否都相等

for(i=0;i<15;i++)

for(j=0;j<15;j++)

if(a[i][j]=='o'&&a[i][j+1]=='o'&&a[i][j+2]=='o'&&a[i][j+3]=='o'&&a[i][j+4]=='o')

return 1;

for(j=0;j<15;j++)

//判斷豎著的5個是否都相等

for(i=0;i<15;i++)

if(a[i][j]=='o'&&a[i+1][j]=='o'&&a[i+2][j]=='o'&&a[i+3][j]=='o'&&a[i+4][j]=='o')

軟件工程設計

return 1;

for(i=0;i<15;i++)

//判斷左斜5個

for(j=0;j<15;j++)

if(a[i][j]=='o'&&a[i+1][j+1]=='o'&&a[i+2][j+2]=='o'&&a[i+3][j+3]=='o'&&a[i+4][j+4]=='o')

return 1;

for(i=0;i<15;i++)

//右斜5個

for(j=14;j>3;j--)

if(a[i][j]=='H'&&a[i+1][j-1]=='o'&&a[i+2][j-2]=='o'&&a[i+3][j-3]=='o'&&a[i+4][j-4]=='o')

return 1;

return 0;

}

int Bsheng(char a[][15])

//同o,只是改字符

{

int i,j;

for(i=0;i<15;i++)

for(j=0;j<15;j++)

if(a[i][j]=='x'&&a[i][j+1]=='x'&&a[i][j+2]=='x'&&a[i][j+3]=='x'&&a[i][j+4]=='x')

return 1;

for(j=0;j<15;j++)

for(i=0;i<15;i++)

if(a[i][j]=='x'&&a[i+1][j]=='x'&&a[i+2][j]=='x'&&a[i+3][j]=='x'&&a[i+4][j]=='x')

return 1;

for(i=0;i<15;i++)

for(j=0;j<15;j++)

if(a[i][j]=='x'&&a[i+1][j+1]=='x'&&a[i+2][j+2]=='x'&&a[i+3][j+3]=='x'&&a[i+4][j+4]=='x')

return 1;

for(i=0;i<15;i++)

for(j=14;j>3;j--)

if(a[i][j]=='x'&&a[i+1][j-1]=='x'&&a[i+2][j-2]=='x'&&a[i+3][j-3]=='x'&&a[i+4][j-4]=='x')

return 1;

return 0;

}

int he(char a[][15])

{

for(int i=0;i<15;i++)

for(int j=0;j<15;j++)

{

if(a[i][j]==' ')

//當棋盤全部子都不是' '時才能return 1,即棋盤已下滿

return 0;

}

return 1;

}

下載java五子棋游戲_控制臺_總結報告(推薦五篇)word格式文檔
下載java五子棋游戲_控制臺_總結報告(推薦五篇).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    五子棋游戲項目報告

    - 1 -《軟件技術基礎》項目報告《軟件技術基礎》課程項目報告 項目名稱:用VC++實現的五子棋游戲 專業班級: G11009 項目成員:崔光浩 程德武 付強 付鈺 李洪潤 尚振興 沈婷玉 佟......

    射擊游戲 Java

    游戲資源是從cping1982的博客里下載的(http://blog.csdn.net/cping1982/article/details/6725015)。 下載下來的源碼是反編譯的,我按照自己的思路,盡量模擬跟它一樣的功能效果,......

    五子棋游戲總體設計與實現

    4.系統總體設計與實現 4.1 總體設計分析 總體設計是軟件開發過程中的另一個重要階段,在這一階段中將根據需求分析中提出的邏輯模型,科學合理地進行物理模型的設計。這個階段的......

    java社會實踐報告總結報告

    java社會實踐報告總結報告 導語:Java 技術具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用于PC、數據中心、游戲控制臺、科學超級計算機、移動電話和互聯網,同時擁有全......

    五子棋游戲開發總結(C語言版)

    五子棋游戲開發總結 一.五子棋游戲概述 略 二.游戲功能 對弈游戲,自動判斷游戲勝負。 采用人機對話模式,界面設計美觀友好。 具體玩法:采用任意鍵開始游戲,此處采用鍵盤值W、A、S......

    java游戲制作培訓班

    java游戲制作培訓班 隨著技術對游戲經驗的促進,游戲市場持續增長。商業IT革命為我們節省了時間和金錢,從而提高了我們的工作水平,我們因此會花費更多的時間和金錢在游戲上,來改......

    啤酒游戲總結報告

    啤酒游戲總結報告 啤酒游戲,是 1960 年代,MIT 的 Sloan 管理學院所發展出來的一種類似“大富翁”的策略游戲。念大學本科時,企業管理案例研究課的老師曾經帶領班上同學做過啤酒......

    啤酒游戲總結報告

    廖賢靖 20083274 2008211 啤酒游戲總結報告 啤酒游戲,是1960 年代,MIT 的 Sloan 管理學院所發展出來的一種類似“大富翁”的策略游戲。大型作業通過這個游戲模擬了一個啤酒生......

主站蜘蛛池模板: 无码精品人妻一区二区三区影院| 精品熟人妻一区二区三区四区不卡| 免费全部高h视频无码软件| 亚洲国产品综合人成综合网站| 国产精品有码无码av在线播放| 男男跪床??被?视频| 人妻av中文字幕无码专区| 欧美乱妇高清免费96欧美乱妇高清| 亚洲成在人线在线播放无码| 精品国产免费第一区二区三区| 法国啄木乌av片在线播放| 国产亚洲婷婷香蕉久久精品| 国产高清无套内谢| 精品久久久久久无码免费| 玩弄人妻少妇500系列视频| 一边添奶一边添p好爽视频| 亚洲人成网站色7799| 久久精品一卡二卡三卡四卡| 又黄又爽又色的视频| 国产线播放免费人成视频播放| 亚洲精品成人网站在线播放| 国产成人女人毛片视频在线| 国产成人综合久久精品免费| 国产成人亚洲综合网色欲网| 国产成人亚洲综合无码加勒比一| 欧美极品少妇无套实战| 欧美人牲交a欧美精区日韩| 久久精品www人人做人人爽| 亚洲av无码国产精品色软件| 日本在线视频www色| 成本人妻片无码中文字幕免费| 国产一区二区三区小说| 国产午夜亚洲精品不卡下载| 国产亚洲日韩在线播放更多| 国产无遮挡又黄又爽在线观看| 成人精品一区二区三区电影| 无码h黄肉动漫在线观看网站| 少妇高潮潮喷到猛进猛出小说| 无码专区6080yy国产电影| 国产97色在线 | 国产| 激情五月亚洲综合图区|