欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java編寫實現(xiàn)九宮格應(yīng)用

 更新時間:2022年05月05日 08:05:55   作者:shihao9895  
這篇文章主要為大家詳細介紹了Java編寫實現(xiàn)九宮格應(yīng)用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Java編寫實現(xiàn)九宮格應(yīng)用的具體代碼,供大家參考,具體內(nèi)容如下

在九宮格里面輪流畫圈或叉,哪一方先在水平、豎直、或?qū)蔷€上有三個子則勝出。

可在窗體中安排9個按鈕對應(yīng)每個格子

計算機和人輪流下子。

代碼如下:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
class ChessDemo extends Panel implements ActionListener{
?? ?char whoTurn = 'O'; ?//人—O,計算機--X
?? ?Button b[] = new Button[9]; ?//9個按鈕
?? ?StringBuffer chess = new StringBuffer("KKKKKKKKK");
? ? ?//將九宮格用一位數(shù)組來表示,用K字符表示空位置
?? ??
public ChessDemo(){
? ? ? setLayout(new GridLayout(3,3,3,3));
? ? ? for (int i=0;i<9;i++) {
? ? ? ? ? b[i] = new Button("");
? ? ? ? ? add(b[i]);
? ? ? ? ? b[i].setActionCommand(String.valueOf(i));
? ? ? ? ? b[i].addActionListener(this);
? ? ? }
}
?
public void actionPerformed(ActionEvent e) {
? ? ? ?Button me = (Button)(e.getSource());//自己
? ? ? ?if (!me.getLabel().equals("")) //不允許在已有棋子位置下棋?
?? ??? ??? ?return;
? ? ? ?me.setLabel("" + whoTurn); //標(biāo)記下棋
? ? ? ?int row = Integer.parseInt(me.getActionCommand()); //求位置
? ? ? ?chess.setCharAt(row,whoTurn); //記錄下棋 ? ??
? ? ? ?gameOver(); ?//判游戲是否結(jié)束
? ? ? ?whoTurn = (whoTurn=='O') ? 'X' : 'O'; //輪換玩家
? ? ? ?computerTake(); ?//計算機下
}?
?
public ?int ?findplace() { //計算機找下棋位置
? ? ? ?for (int r=0;r<9;r++)?
? ? ? ? ? if (chess.charAt(r)=='K') { ? ?//找個空位置
? ? ? ? ? ? ?chess.setCharAt(r,whoTurn); ? ? //先填上棋子
? ? ? ? ? ? ?if (isWin(whoTurn)) ?{ //看自己下此位置是否能贏?
? ? ? ? ? ? ? ? ?chess.setCharAt(r,'K'); ?// 恢復(fù)原狀
?? ??? ??? ??? ??? ?return r;
? ? ? ? ? ? ?}
? ? ? ? ? ? ?else
? ? ? ? ? ? ? ? ?chess.setCharAt(r,'K'); ? // 恢復(fù)原狀
? ? ? ? ?}
? ? ?// 沒自己能直接贏得位置再看對方能贏的地方
? ? ? char ?whoTurn2 = (whoTurn=='O') ? 'X' : 'O'; //換成對方思考
? ? ? for (int r=0;r<9;r++)?
?? ??? ??? ?if (chess.charAt(r)=='K') {
? ? ? ? ? ? ?chess.setCharAt(r,whoTurn2); ? //在空白處填上對方棋子
? ? ? ? ? ? ?if (isWin(whoTurn2)) { ?//看填上棋子后能贏否
? ? ? ? ? ? ? ? ?chess.setCharAt(r,'K'); ?// 恢復(fù)原狀
?? ??? ??? ??? ??? ?return r;
? ? ? ? ? ? ?}
? ? ? ? ? ? ?else
? ? ? ? ? ? ? ? ? chess.setCharAt(r,'K'); ? //恢復(fù)原狀
? ? ? ? ?}
?? ??? ??? ?if (chess.charAt(4)=='K') { ? //優(yōu)先看中央位置
? ? ? ? ? ? return 4; ? ? ?//占據(jù)中央,返回4
?? ??? ?}
?? ??? ??? ?else ?{
?? ??? ??? ??? ?for (int d=1;d<5;d++) { ? // 隨機找個空位置
?? ??? ??? ??? ??? ?int rand= (int)(Math.random() * 9);
?? ??? ??? ??? ??? ?if (chess.charAt(rand)=='K')
?? ??? ??? ??? ??? ?return rand;
?? ??? ??? ??? ?}
?? ??? ?}
? ? ? ?return -1; ?//特殊返回
}
?
public void computerTake(){
? ? ?int x = findplace(); ?//根據(jù)策略找位置
? ? ?chess.setCharAt(x,whoTurn);
? ? ?b[x].setLabel(String.valueOf(whoTurn));
? ? ?gameOver(); ? ?
? ? ?whoTurn = (whoTurn=='O') ? 'X' : 'O';
}
?
public void gameOver() {
? ?if (isWin(whoTurn)) { //判是否取勝
? ? ? ?JOptionPane.showMessageDialog(null, whoTurn+" win!");
? ? ? ?System.exit(0);
? ? } else if (isFull()) { //判是否下滿格子
? ? ? ?JOptionPane.showMessageDialog(null, "game is over!");
? ? ? ?System.exit(0);
? ? }
?}
?
public boolean isWin(char who){ ??
? ?String s3 = "" + who + who + who;
? ?String sum; ??
? ?String sum1;
? ?String sum2;//用來拼接一個方向的棋子標(biāo)識
? ?for(int k=0;k<3;k++)
? ?{
?? ? ? sum1=""+chess.charAt(k)+chess.charAt(k+3)+chess.charAt(k+6);//垂直方向
?? ? ? sum2=""+chess.charAt(k*3+0)+chess.charAt(k*3+1)+chess.charAt(k*3+2);//水平方向
?? ? ? if(sum1.equals(s3)||sum2.equals(s3))
?? ? ? {
?? ??? ? ? return true;
?? ? ? }
?? ? ? else
?? ? ? {
?? ??? ? ? sum1="";
?? ??? ? ? continue;
?? ? ? }
?? ?}
? ?sum=""+chess.charAt(0)+chess.charAt(4)+chess.charAt(8); //正對角線
? ?if (sum.equals(s3)) return true;
? ?sum=""+chess.charAt(2)+chess.charAt(4)+chess.charAt(6); //反對角線
? ?if (sum.equals(s3)) return true;
? ?return false;
}
?
public boolean isFull() { ?//判是否棋盤下滿了
? ?return chess.toString().indexOf("K")== -1;
}
?
public static void main(String args[]) {
? ? Frame f = new Frame();
? ? f.add(new ChessDemo());
? ? f.setSize(300,300);
? ? f.setVisible(true);?
}
}

結(jié)果如下:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論