日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java實現五子棋游戲的完整代碼

瀏覽:157日期:2022-08-22 16:31:32

用Java編寫簡單的五子棋,供大家參考,具體內容如下

前言

這兩天在空閑時間做了個五子棋項目,分享給大家看一下,界面是這樣的:

Java實現五子棋游戲的完整代碼

界面很丑我知道,本人雖有幾年PS基礎,但知識淺薄,審美觀不盡人意,做到如此實屬極限(其實我懶得做了),大家將就著看看吧。

下面放出代碼,為方便大家參考,我幾乎每條代碼都標有注釋。   

測試類代碼

public class Test { public static void main(String[] args) { MyJFrame mj=new MyJFrame(); mj.myJFrame(); }}

MyJFrame類代碼

import javax.imageio.ImageIO;import javax.swing.*;import java.awt.*;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;public class MyJFrame extends JFrame implements MouseListener { int qx = 20, qy = 40, qw = 490, qh = 490;//棋盤位置、寬高 int bw = 150, bh = 50, bx = 570, by = 150;//按鈕寬高、位置 int x = 0, y = 0;//保存棋子坐標 int[][] SaveGame = new int[15][15];//保存每個棋子 int qc = 1;//記錄白棋=2,黑棋=1 int qn = 0;//判斷棋子是否重復 boolean canplay = true;//判斷游戲是否開始和結束 String go = '黑子先行';//游戲信息 //--------------------------------------------------------------------------------------------------------------------- //窗體 public void myJFrame() { this.setTitle('五子棋'); //標題 this.setSize(800, 550); //窗口大小 this.setResizable(false); //窗口是否可以改變大小=否 this.setDefaultCloseOperation(MyJFrame.EXIT_ON_CLOSE);//窗口關閉方式為關閉窗口同時結束程序 int width = Toolkit.getDefaultToolkit().getScreenSize().width;//獲取屏幕寬度 int height = Toolkit.getDefaultToolkit().getScreenSize().height;//獲取屏幕高度// System.out.println('寬度:'+width);//測試// System.out.println('高度:'+height);//測試 this.setLocation((width - 800) / 2, (height - 600) / 2); //設置窗口默認位置以屏幕居中 this.addMouseListener(this); this.setVisible(true); //窗口是否顯示=是 } //--------------------------------------------------------------------------------------------------------------------- //覆寫paint方法,繪制界面 public void paint(Graphics g) { //雙緩沖技術防止屏幕閃爍 BufferedImage bi = new BufferedImage(800, 550, BufferedImage.TYPE_INT_ARGB); Graphics g2 = bi.createGraphics(); //獲取圖片路徑 BufferedImage image = null; try { image = ImageIO.read(new File('D:/#Java/五子棋/tp/wzqbj.jpg')); } catch (IOException e) { e.printStackTrace(); } g2.drawImage(image, 10, 10, this);//顯示圖片 g2.setColor(Color.BLACK);//設置畫筆顏色 g2.setFont(new Font('華文行楷', 10, 50));//設置字體 g2.drawString('曉時五子棋', 525, 100);//繪制字符 //棋盤 g2.setColor(Color.getHSBColor(30, (float) 0.10, (float) 0.90));//設置畫筆顏色 g2.fillRect(qx, qy, qw, qh);//繪制棋盤背景矩形 //開始按鈕 g2.setColor(Color.WHITE);//設置畫筆顏色 g2.fillRect(bx, by, bw, bh);//繪制開始按鈕 g2.setFont(new Font('華文行楷', 10, 30));//設置字體 g2.setColor(Color.black);//設置畫筆顏色 g2.drawString('開始', 615, 185);//繪制字符 //悔棋按鈕 g2.setColor(Color.LIGHT_GRAY);//設置畫筆顏色 g2.fillRect(bx, by + 60, bw, bh);//繪制悔棋按鈕 g2.setFont(new Font('華文行楷', 10, 30));//設置字體 g2.setColor(Color.WHITE);//設置畫筆顏色 g2.drawString('悔棋', 615, 245);//繪制字符 //認輸按鈕 g2.setColor(Color.GRAY);//設置畫筆顏色 g2.fillRect(bx, by + 120, bw, bh);//繪制認輸按鈕 g2.setFont(new Font('華文行楷', 10, 30));//設置字體 g2.setColor(Color.WHITE);//設置畫筆顏色 g2.drawString('認輸', 615, 305);//繪制字符 //游戲信息欄 g2.setColor(Color.getHSBColor(30, (float) 0.10, (float) 0.90));//設置畫筆顏色 g2.fillRect(550, 350, 200, 150);//繪制游戲狀態區域 g2.setColor(Color.black);//設置畫筆顏色 g2.setFont(new Font('黑體', 10, 20));//設置字體 g2.drawString('游戲信息', 610, 380);//繪制字符 g2.drawString(go, 610, 410);//繪制字符 g2.drawString('作者:曉時谷雨', 560, 440);//繪制字符 g2.drawString('聯系方式:', 560, 465);//繪制字符 g2.drawString('qq 717535996', 560, 490);//繪制字符 g2.setColor(Color.BLACK);//設置畫筆顏色 //繪制棋盤格線 for (int x = 0; x <= qw; x += 35) { g2.drawLine(qx, x + qy, qw + qx, x + qy);//繪制一條橫線 g2.drawLine(x + qx, qy, x + qx, qh + qy);//繪制一條豎線 } //繪制標注點 for (int i = 3; i <= 11; i += 4) { for (int y = 3; y <= 11; y += 4) { g2.fillOval(35 * i + qx - 3, 35 * y + qy - 3, 6, 6);//繪制實心圓 } } //繪制棋子 for (int i = 0; i < 15; i++) { for (int j = 0; j < 15; j++) { if (SaveGame[i][j] == 1)//黑子 { int sx = i * 35 + qx; int sy = j * 35 + qy; g2.setColor(Color.BLACK); g2.fillOval(sx - 13, sy - 13, 26, 26);//繪制實心圓 } if (SaveGame[i][j] == 2)//白子 { int sx = i * 35 + qx; int sy = j * 35 + qy; g2.setColor(Color.WHITE); g2.fillOval(sx - 13, sy - 13, 26, 26);//繪制實心圓 g2.setColor(Color.BLACK); g2.drawOval(sx - 13, sy - 13, 26, 26);//繪制空心圓 } } } g.drawImage(bi, 0, 0, this);// g.drawRect(20, 20, 20, 20);//繪制空心矩形 } //--------------------------------------------------------------------------------------------------------------------- //判斷輸贏 private boolean WinLose() { boolean flag = false;//輸贏 int count = 1;//相連數 int color = SaveGame[x][y];//記錄棋子顏色 //判斷橫向棋子是否相連 int i = 1;//迭代數 while (color == SaveGame[x + i][y]) { count++; i++; } i = 1;//迭代數 while (color == SaveGame[x - i][y]) { count++; i++; } if (count >= 5) { flag = true; } //判斷縱向棋子是否相連 count = 1; i = 1;//迭代數 while (color == SaveGame[x][y + i]) { count++; i++; } i = 1;//迭代數 while (color == SaveGame[x][y - i]) { count++; i++; } if (count >= 5) { flag = true; } //判斷斜向棋子是否相連(左上右下) count = 1; i = 1;//迭代數 while (color == SaveGame[x - i][y - i]) { count++; i++; } i = 1;//迭代數 while (color == SaveGame[x + i][y + i]) { count++; i++; } if (count >= 5) { flag = true; } //判斷斜向棋子是否相連(左下右上) count = 1; i = 1;//迭代數 while (color == SaveGame[x + i][y - i]) { count++; i++; } i = 1;//迭代數 while (color == SaveGame[x - i][y + i]) { count++; i++; } if (count >= 5) { flag = true; } return flag; } //--------------------------------------------------------------------------------------------------------------------- //初始化游戲 public void Initialize() { //遍歷并初始化數組 for (int i = 0; i < 15; i++) { for (int j = 0; j < 15; j++) { SaveGame[i][j] = 0; } } //黑子先行 qc = 1; go = '輪到黑子'; } //--------------------------------------------------------------------------------------------------------------------- @Override//鼠標點擊 public void mouseClicked(MouseEvent e) { } @Override//鼠標按下 public void mousePressed(MouseEvent e) { //獲取鼠標點擊位置 x = e.getX(); y = e.getY(); //判斷是否已開始游戲 if (canplay == true) { //判斷點擊是否為棋盤內 if (x > qx && x < qx + qw && y > qy && y < qy + qh) { //計算點擊位置最近的點 if ((x - qx) % 35 > 17) { x = (x - qx) / 35 + 1; } else { x = (x - qx) / 35; } if ((y - qy) % 35 > 17) { y = (y - qy) / 35 + 1; } else { y = (y - qy) / 35; } //判斷當前位置有沒有棋子 if (SaveGame[x][y] == 0) { SaveGame[x][y] = qc; qn = 0; } else { qn = 1; } //切換棋子 if (qn == 0) { if (qc == 1) { qc = 2; go = '輪到白子'; } else { qc = 1; go = '輪到黑子'; } } this.repaint();//重新執行一次paint方法 //彈出勝利對話框 boolean wl = this.WinLose(); if (wl) { JOptionPane.showMessageDialog(this, '游戲結束,' + (SaveGame[x][y] == 1 ? '黑方贏了' : '白方贏了'));//彈出提示對話框 canplay = false; }// System.out.println(1);//測試 } else {// System.out.println(0);//測試 } } //實現開始按鈕 //判斷是否點擊開始按鈕 if (e.getX() > bx && e.getX() < bx + bw && e.getY() > by && e.getY() < by + bh) { //判斷游戲是否開始 if (canplay == false) { //如果游戲結束,則開始游戲 canplay = true; JOptionPane.showMessageDialog(this, '游戲開始'); //初始化游戲 Initialize(); this.repaint();//重新執行一次paint方法 } else { //如果游戲進行中,則重新開始 JOptionPane.showMessageDialog(this, '重新開始'); //初始化游戲 Initialize(); this.repaint();//重新執行一次paint方法 } } //實現悔棋按鈕 //判斷是否點擊悔棋按鈕 if (e.getX() > bx && e.getX() < bx + bw && e.getY() > by + 60 && e.getY() < by + 60 + bh) { //判斷游戲是否開始 if (canplay == true) { //遍歷棋盤上是否有棋子 int z = 0; for (int i = 0; i < 15; i++) { for (int j = 0; j < 15; j++) { if (SaveGame[i][j] != 0) { z++; } } } //判斷是否有棋子 if (z != 0) { JOptionPane.showMessageDialog(this, '下棋亦如人生,你走的每一步都沒有回頭路。'); } else { JOptionPane.showMessageDialog(this, '棋盤上已無棋子'); } } else { JOptionPane.showMessageDialog(this, '請先開始游戲'); } } //實現認輸按鈕 //判斷是否點擊認輸按鈕 if (e.getX() > bx && e.getX() < bx + bw && e.getY() > by + 120 && e.getY() < by + 120 + bh) { //判斷游戲是否開始 if (canplay == true) { //判斷是誰認輸 if (qc == 1) { JOptionPane.showMessageDialog(this, '黑方認輸,白方獲勝'); canplay = false; } else if (qc == 2) { JOptionPane.showMessageDialog(this, '白方認輸,黑方獲勝'); canplay = false; } } else { JOptionPane.showMessageDialog(this, '請先開始游戲'); } } } @Override//鼠標抬起 public void mouseReleased(MouseEvent e) { } @Override//鼠標進入 public void mouseEntered(MouseEvent e) { } @Override//鼠標離開 public void mouseExited(MouseEvent e) { }}

結束語

因為是我自己測試的,主要功能應該沒問題,可能會忽略一些細節,如有不對的地方,請幫忙指出。

更多有趣的經典小游戲實現專題,分享給大家:

C++經典小游戲匯總

python經典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經典游戲 玩不停

java經典小游戲匯總

javascript經典小游戲匯總

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美.日韩.国产.一区.二区| 韩国久久久久久| 久久福利影视| 日韩精品亚洲专区| 国产精品香蕉| 精品日产乱码久久久久久仙踪林| 欧美 日韩 国产精品免费观看| 日韩三区在线| 四季av一区二区凹凸精品| 在线亚洲欧美| 国产一区调教| 国产一区亚洲| 欧美日一区二区在线观看| 国产精品免费99久久久| 精品欧美日韩精品| 蜜桃精品在线| 在线观看亚洲精品福利片| 老司机精品视频在线播放| 狠狠久久伊人中文字幕| 日本免费新一区视频| 欧美日韩亚洲一区三区| 精品丝袜在线| 一区二区三区午夜视频| 美女尤物国产一区| 9色国产精品| 国产精品日韩精品在线播放| 美女网站视频一区| 亚洲区国产区| 不卡中文字幕| 免费一级欧美片在线观看网站| 日韩精品一卡二卡三卡四卡无卡| 日韩精品诱惑一区?区三区| 精品日产乱码久久久久久仙踪林| 狠狠久久伊人中文字幕| 午夜精品免费| 日本午夜精品久久久久| 毛片在线网站| 97精品久久| 欧美成人基地| 亚洲精品一区二区在线播放∴| 午夜久久中文| 少妇精品久久久一区二区| 国产精品tv| 亚洲二区在线| 久久精品理论片| 黄色成人91| 欧美黑人做爰爽爽爽| 亚洲免费黄色| 久久青青视频| 欧美另类中文字幕| 国产亚洲精品v| 精品国产乱码久久久| 天堂久久av| 另类av一区二区| 国产一区二区三区视频在线| 国产欧美午夜| 日韩美女国产精品| 午夜欧美精品| 久久精品青草| 成人在线黄色| 免费在线小视频| 国产欧美二区| 日韩三级视频| 午夜在线视频观看日韩17c| 亚洲欧洲一区二区天堂久久| 亚洲永久字幕| 亚洲精品888| 国产资源在线观看入口av| 精品国产中文字幕第一页| 国产探花在线精品一区二区| 亚洲免费专区| 亚洲精品无吗| 中文字幕一区二区三区日韩精品| 美女精品在线观看| 自拍日韩欧美| 欧美午夜不卡影院在线观看完整版免费| 久久精品国产www456c0m| 国产精品久久久久久久免费观看 | 久久久精品网| 蜜桃成人精品| 91精品xxx在线观看| 日韩精品首页| 欧美特黄一级大片| 日韩午夜免费| 日韩精品欧美成人高清一区二区| 国产精品久久久久9999高清| 国产高清日韩| 国产拍在线视频| 91久久中文| 日本欧美韩国一区三区| 久久国产成人午夜av影院宅| 色综合www| 国产午夜久久av| 女同性一区二区三区人了人一| 日韩精品一二区| 久久av导航| 一区二区亚洲精品| 日产欧产美韩系列久久99| 国产成人免费精品| av亚洲在线观看| 日韩高清一区在线| 在线手机中文字幕| 久久激情五月激情| 蜜桃精品在线| 国产一区二区三区四区五区传媒| 亚洲少妇诱惑| 青青草国产精品亚洲专区无| 91欧美在线| 日韩国产欧美三级| 色婷婷久久久| 欧美日韩在线精品一区二区三区激情综合| 日韩在线观看| 97久久亚洲| 99亚洲视频| 国产精品视频3p| 美国三级日本三级久久99| 啪啪国产精品| 青青草国产成人99久久| 国产精品91一区二区三区| 国产精品www994| 中文精品电影| 婷婷亚洲综合| 超碰在线99| 久久av日韩| 日韩精品久久理论片| 欧美 日韩 国产一区二区在线视频| 精品美女视频| 欧美亚洲三区| 97成人超碰| 日韩欧乱色一区二区三区在线| 亚洲精品极品| 久久亚洲影院| 三级在线观看一区二区| 米奇777超碰欧美日韩亚洲| 日韩大片在线播放| 水蜜桃精品av一区二区| 日韩成人精品一区| 国产中文在线播放| 亚洲va中文在线播放免费| 成人午夜网址| 天堂日韩电影| 欧美天堂亚洲电影院在线观看| 亚洲毛片网站| 亚洲深深色噜噜狠狠爱网站 | 日本大胆欧美人术艺术动态| 免费久久精品| 久久午夜影视| 国产欧美精品| 久久精品国产免费| 日本а中文在线天堂| 综合激情网站| 国产精品日本一区二区三区在线| 日韩av在线播放网址| 中文字幕人成乱码在线观看| 美日韩精品视频| 国产精品v一区二区三区| 久久精品国产亚洲一区二区三区| 在线国产一区| 日韩在线观看一区二区| 久久精品xxxxx| 亚洲网站视频| 国产精品久久久久久久久久10秀| 国产亚洲欧洲| 欧美另类中文字幕 | 欧美亚洲激情| 亚洲2区在线| 电影91久久久| 99国产一区| 国产精品嫩草影院在线看| 高清av不卡| 在线手机中文字幕| 中文字幕日韩亚洲| 久久99视频| 热久久久久久久| 国产一区白浆| 国产精久久久| 国产日韩专区| 亚洲啊v在线| 中文字幕日韩亚洲| 国产精品精品| 美女精品在线观看| 国产一区二区三区亚洲综合| 九一精品国产| 日韩一区精品| 国产乱人伦精品一区| 国精品产品一区| 日韩精品一级| 在线亚洲激情| 久久精品二区亚洲w码| 日韩毛片视频| 成人av三级| 亚洲人亚洲人色久| 成人久久久久| 国产精品三级| 中文另类视频| 国产精品成人国产| 亚洲最大av| 国产亚洲一级| 欧美sm一区| 免费一级欧美在线观看视频|