java实现中国象棋1:界面的制作
java實(shí)現(xiàn)中國象棋1:界面的制作
- 前言
- 界面思路
- 棋盤
- 棋子
- 按鈕和Logo
前言
中國象棋的界面主要有三個(gè)部分:棋盤,棋子和按鈕。棋盤在網(wǎng)上可以找到許多相關(guān)的圖片,但是棋子和按鈕就找不到,或者找到的棋子圖片很丑,因此我就自己用PS畫了棋子和按鈕,有需要的朋友可以加我微信,我會(huì)把我的微信號放在文章最后面。注:我們把所有的圖片都放在包的下面。例如Package的名字為Chinesechess,那么就在此Package下新建一個(gè)名為Chinesechess.image的package,并把圖片放入,不然程序?qū)⒄也坏綀D片。(作者使用的IDE為Eclipse,不同的IDE可能會(huì)有不同的引入圖片的方法。請大家根據(jù)自己所使用的IDE選擇合適的方法引入圖片)
界面思路
棋盤
棋盤的圖片在網(wǎng)上找一張自己覺得好看的就好,直接在百度圖片里就可以找到許多種類的棋盤圖片。我的思路是用JPanel的Paint方法把圖片畫到面板上,面板繼承JPanel類。代碼如下:
// DrawUI.javapublic class DrawUI extends JPanel {public void initui() {// 創(chuàng)建面板JFrame jf = new JFrame();// 設(shè)置面板屬性jf.setSize(1240, 860);jf.setTitle("中國象棋");jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 設(shè)置關(guān)閉窗體即清除進(jìn)程jf.getContentPane().setBackground(Color.WHITE);// 設(shè)置背景顏色為白色jf.setLocationRelativeTo(null);// 窗口jf.setResizable(false);// 設(shè)置窗體不可放縮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();} }此時(shí)界面如下:
棋子
因?yàn)槲覀冃枰獙ζ灞P上的棋子進(jìn)行點(diǎn)擊操作,只要一個(gè)DrawUI類是肯定不夠的,所以我們新建一個(gè)監(jiān)聽器的類,在這個(gè)類里面我們對棋子進(jìn)行操作。我的思路是建立一個(gè)二維數(shù)組,每種棋子用一個(gè)數(shù)字來表示,例如“將”我用數(shù)字5表示,“卒”我都用7表示。詳細(xì)表示為:
接下來我們需要對棋盤的起始點(diǎn)和棋盤的格子的大小進(jìn)行測量,并自己定義要畫的棋子的大小,寫在init的接口里。
代碼如下:
此時(shí)的界面如下:
按鈕和Logo
和一般的添加按鈕的不同是我們需要通過使用JButton的Paint方法來對按鈕進(jìn)行添加圖片的操作,并且用setBounds方法設(shè)置按鈕的位置,一定要把JPanel的布局設(shè)置為nullnullnull,不然無效。我們新建一個(gè)JPanel對象,用來添加按鈕。并且為了好看,我又在右上角加了個(gè)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);現(xiàn)在效果如下:
現(xiàn)在我們的界面已經(jīng)做好了,接下來就要進(jìn)行重要的監(jiān)聽器部分。
關(guān)注微信公眾號:圖靈完備,回復(fù)中國象棋即可獲得圖片及代碼資源。
微信號:YonminMa
總結(jié)
以上是生活随笔為你收集整理的java实现中国象棋1:界面的制作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 香港新世代加密资产网红正在崛起
- 下一篇: 流体力学有限元法(三)