电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

java GUI實現(xiàn)五子棋游戲

瀏覽:53日期:2022-09-05 11:27:50

本文實例為大家分享了java實現(xiàn)五子棋游戲GUI,供大家參考,具體內(nèi)容如下

引用包

//{Cynthia Zhang}import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.LineBorder;import javax.swing.JOptionPane;import javax.swing.ImageIcon;import java.awt.Image;import com.sun.image.codec.jpeg.*;

前期預(yù)設(shè)

//extends JApplet { // Indicate which player has a turn, initially it is the X player private char whoseTurn = ’X’; final int SIZE = 15; static boolean ISOVER = false; // Create and initialize cells private final Cell[][] cell = new Cell[SIZE][SIZE]; // Create and initialize a status label private final JLabel jlblStatus = new JLabel('X’s turn to play',JLabel.CENTER);

設(shè)置背景板

// Initialize UI @Override public void init() { // Panel p to hold cells JPanel p = new JPanel(); p.setLayout(new GridLayout(SIZE, SIZE, 0, 0)); for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { Cell ce = new Cell(); ce.setBackground(new Color(150,88,42)); // 背景色絕美! p.add(cell[i][j] = ce); } } // Set line borders on the cells panel and the status label p.setBackground(new Color(143,105,94)); // 背景色絕美! jlblStatus.setBorder(new LineBorder(new Color(255,255,255), 2)); // 白框框加寬! // Place the panel and the label to the applet this.getContentPane().add(p, BorderLayout.CENTER); this.getContentPane().add(jlblStatus, BorderLayout.SOUTH); }

主要框架段落

// This main method enables the applet to run as an applicationpublic static void main(String[] args) { // Create a frame JFrame frame = new JFrame('Tic Tac Toe'); // Create an instance of the applet Homework8 applet = new Homework8(); // Add the applet instance to the frame frame.getContentPane().add(applet, BorderLayout.CENTER); // Invoke init() and start() applet.init(); applet.start(); // Display the frame frame.setSize(600, 600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }

判斷是否滿了

// Determine if the cells are all occupied public boolean isFull() { for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { if (cell[i][j].getToken() == ’ ’) { return false; } } } return true; }

判斷是否贏了

和八皇后有點像,可以考慮那種數(shù)組優(yōu)化四個方向,這里比較懶

// Determine if the player with the specified token wins public boolean isWon(char token) { int winNum = 5; // define the max num for a rule for (int indexX = 0; indexX < SIZE; indexX++) { for (int indexY = 0; indexY < SIZE; indexY++){ // in row check cell[indexX][indexY...indexY+winNum-1] if (indexY+winNum-1<SIZE){ boolean flag=true; for (int y =indexY;y<indexY+winNum;y++) if (cell[indexX][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } // in row check cell[indexX...indexX+winNum-1][indexY] if (indexX+winNum-1<SIZE){ boolean flag=true; for (int x =indexX;x<indexX+winNum;x++) if (cell[x][indexY].getToken() != token){ flag=false; break; } if (flag==true) return true; } // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1) if (indexX+winNum-1<SIZE && indexY+winNum-1<SIZE){ boolean flag=true; for (int x =indexX,y=indexY;x<indexX+winNum;x++,y++) if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1) if (indexX+winNum-1<SIZE && indexY-winNum+1>=0){ boolean flag=true; for (int x =indexX,y=indexY;x<indexX+winNum;x++,y--) if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } } } return false; }

設(shè)置棋子

// An inner class for a cell public class Cell extends JPanel implements MouseListener { // Token used for this cell private char token = ’ ’; public Cell() { setBorder(new LineBorder(Color.black, 1)); // Set cell’s border addMouseListener(this); // Register listener } // The getter method for token public char getToken() { return token; } // The setter method for token public void setToken(char c) { token = c; repaint(); }

導(dǎo)入圖片

// Paint the cell @Override public void paintComponent(Graphics g) { if (token == ’X’) { ImageIcon icon = new ImageIcon('C:UsersLenovoDesktopBlack.png'); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); }else if (token==’O’){ ImageIcon icon = new ImageIcon('C:UsersLenovoDesktopWhite.png'); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); } super.paintComponents(g); }

游戲結(jié)束的鎖定與彈窗

// Handle mouse click on a cell @Override public void mouseClicked(MouseEvent e) { if (ISOVER) return; // if game is over, any issue should be forbidden int response=-1; if (token == ’ ’) // If cell is not occupied { if (whoseTurn == ’X’) // If it is the X player’s turn { setToken(’X’); // Set token in the cell whoseTurn = ’O’; // Change the turn jlblStatus.setText('The White’s Turn'); // Display status if (isWon(’X’)) { jlblStatus.setText('The Black Won! The Game Is Over!'); response = JOptionPane.showConfirmDialog(null, 'The Black Won! The Game Is Over!n' +'Do you want to quit?','提示',JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose 'Yes' than quit; } } else if (whoseTurn == ’O’) // If it is the O player’s turn { setToken(’O’); // Set token in the cell whoseTurn = ’X’; // Change the turn jlblStatus.setText('The Black’s Turn'); // Display status if (isWon(’O’)) { jlblStatus.setText('The White Won! The Game Is Over!'); response = JOptionPane.showConfirmDialog(null, 'The White Won! The Game Is Over!n' +'Do you want to quit?','提示',JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose 'Yes' than quit; } } if (isFull()) { jlblStatus.setText('Plain Game! The Game Is Over!'); response = JOptionPane.showConfirmDialog(null, 'Plain Game! The Game Is Over!n' +'Do you want to quit?','提示',JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose 'Yes' than quit; } } }

其他棋子信息

@Override public void mousePressed(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseReleased(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseEntered(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseExited(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } }}

圖片顯示

java GUI實現(xiàn)五子棋游戲

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

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 一级建造师培训_一建培训机构_中建云筑建造师培训网校 | 辊道窑炉,辊道窑炉厂家-山东艾希尔 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 【电子厂招聘_普工招工网_工厂招聘信息平台】-工立方打工网 | 钢格板|热镀锌钢格板|钢格栅板|钢格栅|格栅板-安平县昊泽丝网制品有限公司 | 铝单板_铝窗花_铝单板厂家_氟碳包柱铝单板批发价格-佛山科阳金属 | 电动手术床,医用护理床,led手术无影灯-曲阜明辉医疗设备有限公司 | TPE塑胶原料-PPA|杜邦pom工程塑料、PPSU|PCTG材料、PC/PBT价格-悦诚塑胶 | 液压升降平台_剪叉式液压/导轨式升降机_传菜机定做「宁波日腾升降机厂家」 | 智慧消防-消防物联网系统云平台| 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 雄松华章(广州华章MBA)官网-专注MBA/MPA/MPAcc/MEM辅导培训 | 大学食堂装修设计_公司餐厅效果图_工厂食堂改造_迈普装饰 | 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 北京模型公司-工业模型-地产模型-施工模型-北京渝峰时代沙盘模型制作公司 | 螺钉式热电偶_便携式温度传感器_压簧式热电偶|无锡联泰仪表有限公司|首页 | 旋转/数显粘度计-运动粘度测定仪-上海平轩科学仪器 | 热工多功能信号校验仪-热电阻热电偶校验仿真仪-金湖虹润仪表 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 国际线缆连接网 - 连接器_线缆线束加工行业门户网站 | 上海阳光泵业制造有限公司 -【官方网站】 | 变色龙云 - 打包app_原生app_在线制作平台_短链接_ip查询 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 通用磨耗试验机-QUV耐候试验机|久宏实业百科 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 免费网站网址收录网_海企优网站推荐平台 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 电动车头盔厂家_赠品头盔_安全帽批发_山东摩托车头盔—临沂承福头盔 | 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | SMC-SMC电磁阀-日本SMC气缸-SMC气动元件展示网 | 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 电销卡_稳定企业大语音卡-归属地可选-世纪通信 | 板框压滤机-隔膜压滤机-厢式压滤机生产厂家-禹州市君工机械设备有限公司 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 苗木价格-苗木批发-沭阳苗木基地-沭阳花木-长之鸿园林苗木场 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 |