java swing 编写的中国象棋 窗体程序 功能完善 下载即可以运行

   今天为大家继续分享一个界面漂亮、功能完整的中国象棋的开发与制作 427,目前系统已经完成了初步功能,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步!!

开发环境 

  开发语言为Java,开发环境Eclipse或者IDEA都可以。运行主程序,或者执行打开JAR文件即可以运行本程序

系统框架

  利用JDK自带的SWING框架开发,不需要安装第三方JAR包。纯窗体模式,直接运行Main文件即可以。选中Main.java,点右键 run as application启动相关程序。也客户把程序打包成JAR包,双击JAR即可以启动相关的程序。

游戏主要功能

   1 中国象棋简介

中国象棋是起源于中国的一种棋,属于二人对抗性游戏的一种,在中国有着悠久的历史。由于用具简单,趣味性强,成为流行极为广泛的棋艺活动。中国象棋使用方形格状棋盘,圆形棋子共有32个,红黑二色各有16个棋子,摆放和活动在交叉点上。双方交替行棋,先把对方的将(帅)“将死”的一方获胜

 2 游戏规则

中国象棋是由两人轮流走子,在战法上遵循古代孙子兵法中的“不战而屈人之兵,善之善者也”的作战思想,以“将死”或“困毙”对方将(帅)为胜的一种二人对抗性游戏。对局时,由执红棋的一方先走,双方轮流各走一招,直至分出胜、负、和,对局即终了。在棋战中,人们可以从攻与防、虚与实、整体与局部等复杂关系的变化中提升思维能力。详细规则如下:

  1. 对局开始前,双方棋子在棋盘上的摆法见右图。

  2. 对局时,由执红棋的一方先走,双方轮流走一步。

  3. 轮到走棋的一方,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,都算走了一着。

  4. 双方各走一着,称为一个回合。

  5. 走一着棋时,如果己方棋子能够走到的位置有对方棋子存在,就可以把对方棋子吃掉而占领那个位置。

  6. 一方的棋子攻击对方的帅(将),并在下一着要把它吃掉,称为“照将”,或简称“将”。“照将”不必声明。被“照将”的一方必须立即“应将”,即用自己的着法去化解被“将”的状态。如果被“照将”而无法“应将”,就算被“将死”。

     3 象棋主要功能

         本系统的主要功能包括以下几个方面

          1 正常人人对战。红方和黑方每个一人下一局

          2 背景音乐播放。播放与象棋相关的背景音乐,循环播放器

         3 实时更新下棋结果、和提示相关信息。

         4 重新下棋。用户在下棋过程,用户点击重新下棋,系统会弹出确认框,用户确认后,会重

        新下棋。

         5 退出系统

运行效果

1 主界面

2 下棋界面

关键代码

public void paintComponent(Graphics g){
		super.paintComponent(g);
		//test
		System.out.println("Canvas paint done");
		
		//BufferedImage BImage = new BufferedImage(this.getWidth(),this.getHeight(),BufferedImage.TYPE_INT_ARGB);
		//Graphics g = BImage.getGraphics();
		//画Canvas背景
		g.drawImage(BgImage, 0, 0, this.getWidth(), this.getHeight(), Mysx1, Mysy1, Mysx2, Mysy2,this);
		//画棋盘
		g.drawImage(Toolkit.getDefaultToolkit().getImage(ChineseChessMainFrame.class.getResource("/imageLibary/chessboardafter.png")), 0, 0,
				Toolkit.getDefaultToolkit().getImage(ChineseChessMainFrame.class.getResource("/imageLibary/chessboardafter.png")).getWidth(null), 
				Toolkit.getDefaultToolkit().getImage(ChineseChessMainFrame.class.getResource("/imageLibary/chessboardafter.png")).getHeight(null), this);
		
		//画棋子
		int xx = DefultSet.ChessBoarderXX;
		int yy = DefultSet.ChessBoarderYY;
		int pp = DefultSet.ChessBoarderPP;
		for (int i = 0;i < 10;i ++){
			for (int j = 0;j < 9;j ++){
				//发现棋子就绘制
				if (ChineseChessMainFrame.MyBoarder.MyPieces[i][j] != null){
					g.drawImage(ChineseChessMainFrame.MyBoarder.MyPieces[i][j].Icon, 
							xx + j  * pp, yy + i * pp,
							ChineseChessMainFrame.MyBoarder.MyPieces[i][j].Icon.getWidth(null) , ChineseChessMainFrame.MyBoarder.MyPieces[i][j].Icon.getHeight(null), this);
				}
			}
		}
		//绘制2个框
		//System.out.println(ChineseChessMainFrame.MyBoarder.p1);
		if (ChineseChessMainFrame.MyBoarder.p1 != null){
			g.drawImage(Toolkit.getDefaultToolkit().getImage(ChineseChessMainFrame.class.getResource("/imageLibary/kuang.png")), 
					xx +  ChineseChessMainFrame.MyBoarder.p1.x * pp, yy + ChineseChessMainFrame.MyBoarder.p1.y * pp,
					Toolkit.getDefaultToolkit().getImage(ChineseChessMainFrame.class.getResource("/imageLibary/kuang.png")).getWidth(null) , Toolkit.getDefaultToolkit().getImage(ChineseChessMainFrame.class.getResource("/imageLibary/kuang.png")).getHeight(null), this);
		}
		if (ChineseChessMainFrame.MyBoarder.p2 != null){
			g.drawImage(Toolkit.getDefaultToolkit().getImage(ChineseChessMainFrame.class.getResource("/imageLibary/kuang.png")), 
					xx +  ChineseChessMainFrame.MyBoarder.p2.x * pp, yy + ChineseChessMainFrame.MyBoarder.p2.y * pp,
					Toolkit.getDefaultToolkit().getImage(ChineseChessMainFrame.class.getResource("/imageLibary/kuang.png")).getWidth(null) , Toolkit.getDefaultToolkit().getImage(ChineseChessMainFrame.class.getResource("/imageLibary/kuang.png")).getHeight(null), this);
		}
		//绘制胜利图片
		if (this.Winner == '红'){
			g.drawImage(Toolkit.getDefaultToolkit().getImage(ChineseChessMainFrame.class.getResource("/imageLibary/red-win.png")), 50, 270,559, 132, this);
		}
		else if (this.Winner == '黑'){
			g.drawImage(Toolkit.getDefaultToolkit().getImage(ChineseChessMainFrame.class.getResource("/imageLibary/black-win.png")), 50, 270,559, 132, this);
		}
		
		//gg.drawImage(BImage, 0, 0, null);
	}

猜你喜欢

转载自blog.csdn.net/bangxiecode/article/details/129898867