日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java实现中国象棋1:界面的制作

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java实现中国象棋1:界面的制作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java實現中國象棋1:界面的制作

  • 前言
  • 界面思路
    • 棋盤
    • 棋子
    • 按鈕和Logo

前言

中國象棋的界面主要有三個部分:棋盤,棋子和按鈕。棋盤在網上可以找到許多相關的圖片,但是棋子和按鈕就找不到,或者找到的棋子圖片很丑,因此我就自己用PS畫了棋子和按鈕,有需要的朋友可以加我微信,我會把我的微信號放在文章最后面。注:我們把所有的圖片都放在包的下面。例如Package的名字為Chinesechess,那么就在此Package下新建一個名為Chinesechess.image的package,并把圖片放入,不然程序將找不到圖片。(作者使用的IDE為Eclipse,不同的IDE可能會有不同的引入圖片的方法。請大家根據自己所使用的IDE選擇合適的方法引入圖片)

界面思路

棋盤

棋盤的圖片在網上找一張自己覺得好看的就好,直接在百度圖片里就可以找到許多種類的棋盤圖片。我的思路是用JPanel的Paint方法把圖片畫到面板上,面板繼承JPanel類。代碼如下:

// DrawUI.javapublic class DrawUI extends JPanel {public void initui() {// 創建面板JFrame jf = new JFrame();// 設置面板屬性jf.setSize(1240, 860);jf.setTitle("中國象棋");jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 設置關閉窗體即清除進程jf.getContentPane().setBackground(Color.WHITE);// 設置背景顏色為白色jf.setLocationRelativeTo(null);// 窗口jf.setResizable(false);// 設置窗體不可放縮this.setBackground(Color.white);jf.add(this);jf.setVisible(true);}// 重繪public void paint(Graphics g) {super.paint(g);// 畫棋盤g.drawImage(new ImageIcon(getClass().getResource("image\\"+"棋盤.jpg")).getImage(), 90, 60, 625, 700, this);}public static void main(String args[]) {DrawUI ui = new DrawUI();ui.initui();} }

此時界面如下:

棋子

因為我們需要對棋盤上的棋子進行點擊操作,只要一個DrawUI類是肯定不夠的,所以我們新建一個監聽器的類,在這個類里面我們對棋子進行操作。我的思路是建立一個二維數組,每種棋子用一個數字來表示,例如“將”我用數字5表示,“卒”我都用7表示。詳細表示為:

接下來我們需要對棋盤的起始點和棋盤的格子的大小進行測量,并自己定義要畫的棋子的大小,寫在init的接口里。
代碼如下:

//init.javapublic interface init {public int x00 = 70;public int x0 = 105;public int y0 = 100;public int row = 10;public int column = 9;public int chesssize = 67;public int size = 76; } // Listener.javapublic class Listener extends MouseAdapter implements ActionListener {int[][] flag = new int[][]{ { 1, 2, 3, 4, 5, 4, 3, 2, 1 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 6, 0, 0, 0, 0, 0, 6, 0 },{ 7, 0, 7, 0, 7, 0, 7, 0, 7 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 },{ 77, 0, 77, 0, 77, 0, 77, 0, 77 }, { 0, 66, 0, 0, 0, 0, 0, 66, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 },{ 11, 22, 33, 44, 55, 44, 33, 22, 11 } }; // 初始化棋盤// 將畫布傳遞過來public void setG(Graphics g) {this.g = g;}public void setUI(DrawUI ui) {this.ui = ui;}public void actionPerformed(ActionEvent e) {} } // DrawUI.javapublic class DrawUI extends JPanel {Listener ls = new Listener();public void initui() {// 創建面板JFrame jf = new JFrame();// 設置面板屬性jf.setSize(1240, 860);jf.setTitle("中國象棋");jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 設置關閉窗體即清除進程jf.getContentPane().setBackground(Color.WHITE);// 設置背景顏色為白色jf.setLocationRelativeTo(null);// 窗口jf.setResizable(false);// 設置窗體不可放縮// 把this添加到JFrame中this.setBackground(Color.white);jf.add(this);jf.setVisible(true);// 給畫板添加監聽器jf.addMouseListener(ls);Graphics g = jf.getGraphics();ls.setG(g);ls.setUI(this);}// 重繪public void paint(Graphics g) {super.paint(g);// 畫棋盤g.drawImage(new ImageIcon(getClass().getResource("image\\" + "棋盤.jpg")).getImage(), 90, 60, 625, 700, this);// 根據flag畫棋子for (int i = 0; i < init.row; i++) {for (int j = 0; j < init.column; j++) {if (ls.flag[i][j] > 0) {g.drawImage(new ImageIcon(getClass().getResource("image\\"+(Integer.toString(ls.flag[i][j])) + ".png")).getImage(), init.y0 + j * init.size - init.chesssize / 2,init.x00 + i * init.size - init.chesssize / 2,init.chesssize, init.chesssize, this);}}}}public static void main(String args[]) {DrawUI ui = new DrawUI();ui.initui();} }

此時的界面如下:

按鈕和Logo

和一般的添加按鈕的不同是我們需要通過使用JButton的Paint方法來對按鈕進行添加圖片的操作,并且用setBounds方法設置按鈕的位置,一定要把JPanel的布局設置為nullnullnull不然無效。我們新建一個JPanel對象,用來添加按鈕。并且為了好看,我又在右上角加了個Logo。代碼如下:

// 添加JPanelJPanel jp = new JPanel();jp.setPreferredSize(new Dimension(450, 1));jp.setBackground(Color.white);jp.setLayout(null);jf.add(jp, BorderLayout.EAST);// 添加按鈕String[] ShapeBtn = { "開始游戲", "重新開始", "悔棋" };for (int i = 0; i < ShapeBtn.length; i++) {String name = ShapeBtn[i];JButton jbt = new JButton(name) {private static final long serialVersionUID = 1L;Image jbti = new ImageIcon(this.getClass().getResource("image\\" + name + ".png")).getImage();public void paint(Graphics g) {g.drawImage(jbti, 0, 0, 250, 100, null);}};jbt.setBounds(100, 260 + 150 * i, 250, 100);jbt.addActionListener(ls);jp.add(jbt);}// 添加JLabelJLabel jl = new JLabel("中國象棋") {private static final long serialVersionUID = 1L;Image jli = new ImageIcon(this.getClass().getResource("image\\" + "中國象棋.png")).getImage();public void paint(Graphics g) {g.drawImage(jli, 0, 0, 400, 204, null);}};jl.setBounds(0, 0, 400, 204);jp.add(jl);

現在效果如下:

現在我們的界面已經做好了,接下來就要進行重要的監聽器部分。

關注微信公眾號:圖靈完備,回復中國象棋即可獲得圖片及代碼資源。
微信號:YonminMa

總結

以上是生活随笔為你收集整理的java实现中国象棋1:界面的制作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。