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

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

java實(shí)現(xiàn)單機(jī)版五子棋小游戲

瀏覽:31日期:2022-08-19 09:48:14

簡單的java小游戲?單機(jī)版五子棋

學(xué)了java有一段時間了,今天就來搞一個簡單的單機(jī)版五子棋游戲。

實(shí)現(xiàn)功能:那必須能進(jìn)行基礎(chǔ)的輸贏判斷。還有重新開始的功能,悔棋的功能,先手設(shè)置的功能和退出的功能。在右上角能夠顯示目前輪到哪個棋種下棋。右下角還有一個記錄信息框,記錄行為,當(dāng)信息量過多時,可以清除信息內(nèi)容。

成果:

初始界面:

java實(shí)現(xiàn)單機(jī)版五子棋小游戲

游戲(獲勝)界面:

java實(shí)現(xiàn)單機(jī)版五子棋小游戲

附上代碼:

Chessframe.java

package firstgobang;import javax.swing.JFrame;import javax.swing.WindowConstants;public class ChessFrame extends JFrame{ public ChessBoard chessboard; public ChessFrame(String title){ setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setTitle(title); setVisible(true); setLocationRelativeTo(null); chessboard = new ChessBoard(); add(chessboard); pack(); } public static void main(String[] args) { ChessFrame chessframe = new ChessFrame('單機(jī)版五子棋游戲'); }}

ChessBoard.java

package firstgobang;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.Graphics;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.util.Random;import java.util.Stack;import javax.swing.*;public class ChessBoard extends JComponent{ /* *board為1時是白棋,為2時是黑棋,為0時是空 *whitenow為true時,到白棋下,為false時,到黑棋下 *empty為true時,該位置為空,為false,該位置不為空 *win為true,某方勝利,為false,無勝利 *information用來儲存消息 */ public static int x_start = 30; public static int y_start = 60; public static int size = 30; public static int radius = 10; private int[][] board = new int[19][19]; private boolean whitenow = false; private boolean empty = true; private boolean win = false; private JTextArea area; private String information=''; private static Stack<Chess> chessstack; //棧 class Chess{ //棋類,用于儲存棋子的x,y坐標(biāo) int x; int y; public Chess(int x,int y) { this.x=x; this.y=y; } } public ChessBoard() { chessstack = new Stack<>(); area = new JTextArea(5,5); JButton button1 = new JButton('重新開始'); JButton button2 = new JButton('悔棋'); JButton button3 = new JButton('退出'); JButton button4 = new JButton('先手設(shè)置'); JButton button5 = new JButton('清空消息'); JPanel panel = new JPanel(); JScrollPane js = new JScrollPane(); button1.setBounds(620,60,100,30); button2.setBounds(620,110,100,30); button3.setBounds(620,160,100,30); button4.setBounds(620,210,100,30); button5.setBounds(620,260,100,30); panel.setBounds(600,310,140,300); js.setBounds(600,310,140,300); panel.setLayout(new BorderLayout()); add(button1); add(button2); add(button3); add(button4); add(button5); panel.add(area); js.getViewport().add(panel); js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); add(js); button1.addMouseListener(new b1Action()); button2.addMouseListener(new b2Action()); button3.addMouseListener(new b3Action()); button4.addMouseListener(new b4Action()); button5.addMouseListener(new b5Action()); addMouseListener(new theMouseListener()); } public void paint(Graphics g) { super.paint(g); g.setColor(Color.orange); g.fillRect(x_start-size/2,y_start-size/2, size*19, size*19); g.setColor(Color.black); // 橫 for (int i = 0; i < 19; i++) { g.drawLine(x_start, y_start + i * size, x_start+18*size, y_start + i * size); g.drawString(((Integer)i).toString(),x_start/2-radius,y_start + i * size); } // 豎 for (int i = 0; i < 19; i++) { g.drawLine(x_start + i * size, y_start, x_start + i * size, y_start+18*size); g.drawString(((Integer)i).toString(),x_start + i * size,y_start/2+radius); } for (int i = 0; i < 19; i++) { for (int j = 0; j < 19; j++) { if (board[i][j] == 1) { g.setColor(Color.white); g.fillOval(x_start-radius + i * size, y_start-radius + j * size, radius*2,radius*2); g.setColor(Color.black); g.drawOval(x_start-radius + i * size, y_start-radius + j * size, radius*2,radius*2); } if (board[i][j] == 2) { g.setColor(Color.black); g.fillOval(x_start-radius + i * size, y_start-radius + j * size, radius*2,radius*2); } } } g.setFont(new Font('微軟雅黑',Font.BOLD,15)); g.drawString('現(xiàn)在輪到', 600, 35); if(whitenow==true) { g.setColor(Color.white); g.fillOval(680, 20, 20,20); g.setColor(Color.black); g.drawOval(680, 20, 20,20); } if(whitenow==false) { g.setColor(Color.black); g.fillOval(680, 20, 20,20); } } public Dimension getPreferredSize() { return new Dimension(750,650); } public class theMouseListener implements MouseListener{ //下棋 public void mouseClicked(MouseEvent e) { } public void mousePressed(MouseEvent e) { int x=getx(e.getX()); int y=gety(e.getY()); try { if(board[x][y] !=0)empty = false; } catch (Exception e1) { } if (e.getX() > x_start-size/2 && e.getX() < x_start+size/2+18*size && e.getY() > y_start-size/2 && e.getY() < y_start+size/2+18*size) { if(empty == true) { Chess chess = new Chess(x,y); chessstack.push(chess); if (whitenow == true) { writeinformation('白棋下了'+'('+x+','+y+')'+'的位置'); board[x][y]=1; repaint(); } if (whitenow == false){ writeinformation('黑棋下了'+'('+x+','+y+')'+'的位置'); board[x][y]=2; repaint(); } iswin(whitenow,x,y); if(win==true) { if(whitenow==true) { writeinformation('白棋獲勝!'); JOptionPane.showInternalMessageDialog(null, '白棋獲勝', '提示框', JOptionPane.INFORMATION_MESSAGE); } else { writeinformation('黑棋獲勝!'); JOptionPane.showInternalMessageDialog(null, '黑棋獲勝', '提示框', JOptionPane.INFORMATION_MESSAGE); } } if(chessstack.size()==361) { writeinformation('和局'); JOptionPane.showInternalMessageDialog(null, '和局', '提示框', JOptionPane.INFORMATION_MESSAGE); } whitenow=!whitenow; } else { JOptionPane.showInternalMessageDialog(null, '該位置已有棋子!', '提示框', JOptionPane.INFORMATION_MESSAGE); empty=true; } } } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } } class b1Action implements MouseListener{ //重新開始按鈕 public void mouseClicked(MouseEvent e) { int a = JOptionPane.showConfirmDialog(null,'你確定重新開始?', '提示框', JOptionPane.YES_NO_OPTION); if(a==0) cleanstart(); } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } } class b2Action implements MouseListener{ //悔棋按鈕 public void mouseClicked(MouseEvent e) { int a = JOptionPane.showConfirmDialog(null,'你確定悔棋?', '提示框', JOptionPane.YES_NO_OPTION); if(a==0) { if(chessstack.size()>0) { Chess chess1 = chessstack.pop(); if(whitenow)writeinformation('黑棋悔棋,坐標(biāo)'+'('+chess1.x+','+chess1.y+')'); if(!whitenow)writeinformation('白棋悔棋,坐標(biāo)'+'('+chess1.x+','+chess1.y+')'); board[chess1.x][chess1.y]=0; whitenow=!whitenow; repaint(); } else { JOptionPane.showInternalMessageDialog(null, '不能在悔棋了!', '提示框', JOptionPane.INFORMATION_MESSAGE); } } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } } class b3Action implements MouseListener{ //退出按鈕 public void mouseClicked(MouseEvent e) { int a = JOptionPane.showConfirmDialog(null,'你確定退出游戲?', '提示框', JOptionPane.YES_NO_OPTION); if(a==0) { System.exit(0); } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } } class b4Action implements MouseListener{ //先手設(shè)置按鈕 public void mouseClicked(MouseEvent e) { if(chessstack.size()==0) { Object[] possibleValues = { '白棋', '黑棋', '隨機(jī)' }; Object a = JOptionPane.showInputDialog(null, '選擇先手的棋子', '提示框', JOptionPane.INFORMATION_MESSAGE, null, possibleValues, possibleValues[0]); if(a=='白棋') whitenow=true; if(a=='黑棋') whitenow=false; if(a=='隨機(jī)') { Random random = new Random(); int b =random.nextInt(2); if(b==0)whitenow=true; if(b==1)whitenow=false; } repaint(); } else { JOptionPane.showInternalMessageDialog(null, '戰(zhàn)局已經(jīng)開始,不能設(shè)置','提示框', JOptionPane.INFORMATION_MESSAGE); } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } } class b5Action implements MouseListener{ //清空消息按鈕 public void mouseClicked(MouseEvent e) { int a = JOptionPane.showConfirmDialog(null,'你確定清空所有消息?', '提示框', JOptionPane.YES_NO_OPTION); if(a==0) { information=''; area.setText(information); } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } } public void writeinformation(String infor){ //消息寫入 information +=infor+'n'; area.setText(information); } public boolean iswin(boolean whitenow,int startx,int starty) { //勝利判斷 int color = whitenow?1:2; int count = 1; int x=1; int y=1; //橫 while((startx-x)>-1 && board[startx-x][starty]==color) { count++; x++; } x=y=1; while((startx+x)<19 && board[startx+x][starty]==color) { count++; x++; } if(count>=5) { return win = true; } count=x=y=1; //豎 while((starty-y)>-1 && board[startx][starty-y]==color) { count++; y++; } x=y=1; while((starty+y)<19 && board[startx][starty+y]==color) { count++; y++; } if(count>=5) { return win = true; } count=x=y=1; //45右斜 while((startx+x)<19 && (starty-y)>-1 && board[startx+x][starty-y]==color) { count++; x++; y++; } x=y=1; while((startx-x)>-1 && (starty+y)<19 && board[startx-x][starty+y]==color) { count++; x++; y++; } if(count>=5) { return win = true; } count=x=y=1; //135左斜 while((startx-x)>0 && (starty-y)>0 && board[startx-x][starty-y]==color) { count++; x++; y++; } x=y=1; while((startx+x)<19 && (starty+y)<19 && board[startx+x][starty+y]==color) { count++; x++; y++; } if(count>=5) { return win = true; } return false; } private void cleanstart() { //清理棋盤 for(int i=0;i<19;i++) { for(int j=0;j<19;j++) { board[i][j]=0; } } win=false; chessstack.clear(); writeinformation('重新開始戰(zhàn)局!'); repaint(); } private int getx(int x) { //x歸位 x -=x_start; if(x%size<(size/2)) { return x/size; } else { return x/size+1; } } private int gety(int y) { //y歸位 y -=y_start; if(y%size<(size/2)) { return y/size; } else { return y/size+1; } }}

End!

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

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产 日韩 欧美 综合 一区| 日韩国产在线一| 精品一区二区三区中文字幕在线| 日韩av一区二区三区| 日韩**一区毛片| 欧美日韩一区二区三区四区在线观看| 青草久久视频| 国产人成精品一区二区三| 欧美欧美黄在线二区| 国产精品大片免费观看| 精品欧美日韩精品| 黄色在线网站噜噜噜| 精品捆绑调教一区二区三区| 国产精品专区免费| 涩涩av在线| 成人在线观看免费视频| 国精品产品一区| 免费在线亚洲| 成人国产综合| 国产成人精品亚洲日本在线观看| 久久久久久黄| 国产精品外国| 亚欧成人精品| 国产精品成人3p一区二区三区| 国产一区二区三区黄网站 | 欧美日一区二区在线观看| 国产精品资源| 不卡一二三区| 在线一区电影| 亚洲三级毛片| 欧美激情麻豆| 欧美高清一区| 88久久精品| 日韩精品中文字幕第1页| 欧洲激情综合| 亚洲精品乱码日韩| 精品一区二区三区中文字幕视频 | 国产精品巨作av| 成人一区不卡| 亚洲精品va| 日本综合精品一区| 国产999精品在线观看| 九九综合九九| 日韩美女国产精品| 国产aⅴ精品一区二区三区久久 | 精品一级视频| 亚洲成人免费| 亚洲精品美女91| 欧美精品99| 蜜桃精品在线| 最近国产精品视频| 麻豆成全视频免费观看在线看| 亚洲精品一二三区区别| 日韩精品国产欧美| 欧美13videosex性极品| 伊人久久亚洲美女图片| 国产精品久久久久77777丨| 亚洲国产专区校园欧美| 国产日韩在线观看视频| 亚洲一级特黄| 国产精品magnet| 91精品观看| 国产精品白丝久久av网站| 91精品蜜臀一区二区三区在线| 亚洲欧美一级| 日韩理论片av| 欧美日韩中文| 9色精品在线| 国产66精品| 日韩毛片网站| 国产高清一区二区| 麻豆国产一区| 亚洲人成毛片在线播放女女| 日韩欧美一区二区三区免费看| 人人爱人人干婷婷丁香亚洲| 欧美成人综合| 久久一区视频| 亚洲网址在线观看| 亚洲成人不卡| 欧美成人精品一级| 日韩欧美精品一区二区综合视频| 999久久久亚洲| 国产欧美一区| 视频一区视频二区中文| 国产日韩电影| 国产精品久久久久久久免费软件| 国产精品日本| 精精国产xxxx视频在线播放| 国产极品嫩模在线观看91精品| 一级欧美视频| 日本不卡免费高清视频在线| 国产精品白丝一区二区三区| 亚洲区第一页| 婷婷国产精品| 一本大道色婷婷在线| 国产精品jk白丝蜜臀av小说| 美女日韩在线中文字幕| 中文在线资源| 精品一区二区三区中文字幕在线| 日韩久久99| 亚洲一区二区三区久久久| 久久久久免费av| 欧美国产小视频| 国产精品大片| 欧美三区不卡| 日韩精品第二页| 亚洲区第一页| 亚洲理论在线| 鲁大师影院一区二区三区| 91国语精品自产拍| 亚洲一级特黄| 久久久久国产| 久久免费黄色| 日韩欧美一区二区三区免费观看| 国内揄拍国内精品久久| 国产精品成人自拍| 国产精品视频一区二区三区四蜜臂| 日本亚洲视频在线| 中文字幕亚洲精品乱码| 亚洲伊人影院| 色狠狠一区二区三区| 亚洲人成毛片在线播放女女| 老司机精品久久| 亚洲激情av| 视频一区二区三区中文字幕| 影音先锋久久精品| 日本不卡视频在线| 69精品国产久热在线观看| 欧美日韩1区2区3区| 欧美日韩精品一区二区三区视频 | 日韩不卡在线| 久久视频精品| 香蕉精品视频在线观看| 亚洲国产影院| 91精品二区| 99在线精品免费视频九九视| 亚洲欧美久久久| 免费在线视频一区| 婷婷视频一区二区三区| 69堂精品视频在线播放| 国产精品久久久亚洲一区| 精品日韩在线| 婷婷激情一区| 久久午夜精品一区二区| 日本aⅴ亚洲精品中文乱码| 国产日韩一区二区三区在线播放| 国产精品777777在线播放 | 国产日韩1区| 国产精久久一区二区| 久久精品国产成人一区二区三区 | 国产精品**亚洲精品| 国产精选在线| 国产在线不卡| 亚洲欧美久久精品| 欧美a一区二区| 久久久噜噜噜| 中文在线日韩| 精品一区二区三区在线观看视频| 日本精品不卡| 国产视频一区免费看| 日韩不卡手机在线v区| 精品中国亚洲| 亚洲高清不卡| 综合亚洲视频| 国产成人精品三级高清久久91| 国产专区一区| 日韩和欧美一区二区三区| 精品视频在线观看网站| 日韩三区在线| 亚洲香蕉视频| 国产成人精品免费视| 亚洲专区欧美专区| 国产精品自拍区| 久久久精品五月天| 日本不卡视频一二三区| 欧美激情国产在线| 亚洲一区黄色| 国产精品一区二区99| 婷婷综合六月| 五月国产精品| 91欧美日韩| 视频一区二区三区在线| 精品香蕉视频| 免费在线观看成人| 色婷婷色综合| 亚洲精品高潮| 神马午夜在线视频| 亚洲精品一区二区在线播放∴| 97精品国产| 日韩有吗在线观看| 日本美女一区| 欧美精品国产一区| 久久精品卡一| 国产免费av一区二区三区| 亚洲大片在线| 欧美xxxx性| 亚洲资源在线| 国产精品99一区二区| 久久亚洲精品中文字幕| 亚洲精品美女|