Java课程设计

您所在的位置:网站首页 象棋兵怎么吃对方的棋子视频讲解 Java课程设计

Java课程设计

2024-06-16 03:46| 来源: 网络整理| 查看: 265

大家好,又见面了,我是你们的朋友全栈君。

你好,我是罡罡同学!

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述传送地址

数据结构课程设计——校园导游系统(C语言): B站视频: https://www.bilibili.com/video/BV1ui4y137X9 CSDN源码: https://blog.csdn.net/m0_46625346/article/details/107149473

Java课程设计——中国象棋 B站视频:https://www.bilibili.com/video/BV1MV411t71f CSDN源码:https://blog.csdn.net/m0_46625346/article/details/112257325

准备导入项目

大家解开压缩包,会得到一个MyChess的文件夹,大家用Eclipse打开就可以了,但有些同学可能不会,在这说一下,如何导入一个项目。 1.打开Eclipse时,选择MyChess文件夹所在位置。 2.点击左上角的File,选择 import 选项。 3.在import 弹窗中,点击General 文件夹, 再点击 第二个 Existing Projects into Workspace , 4.再点击 右侧的 Browse 选项,找到 MyChess文件夹所在位置,选中即可。 导入成功!

修改Eclipse代码字体

1.修改代码字体,修改为程序员必备字体(老师说的 哈哈) 点击标题栏中的 Windows –>Preferences –> General –> Appearance –> Colors and Fonts 然后在右侧中, 找到Java文件夹, 再选中 Java Editor Text Font (set to default: Text Font) 推荐字体 Consals 常规 14号大小。 2.显示代码行数 点击标题栏中的 Windows –>Preferences –> General –> Editors 中Text Editors 会看到很多行选项 我们选择 Show line numbers 选择项 3.设置代码提示 点击标题栏中的 Windows –>Preferences –> Java –> Editor –> 点击Content Assist 在右侧中下面 有 Auto activation triggers for Java: . 在里面输入 从A到Z 和 a到z 即可 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

到目前基本准备操作已经完成。 下面正式开始介绍中国象棋。

中国象棋

下面是 中国象棋 MyChess 的结构框图(架构是老师帮忙写的)

在这里插入图片描述在这里插入图片描述

所有棋子 继承一个父类 org.chess 中的 chess.java Canvas.java 主要负责 棋盘的绘制,棋子的拜访,棋盘初始化。

ChessGame.java 主要负责 框图的初始化,按钮以及按钮事件的建立。

ChessManager.java 主要负责 注册各类棋子,并且区分 黑红棋子。

ArmsChess.java 主要负责 卒和兵的移动规则。

CannonChess.java 主要负责 炮的移动规则(不区分黑红方)

ChapChess.java 主要负责 仕、士的移动规则

Chess.java 所有棋子的父类,所有棋子继承自该类

ElephantChess.java 主要负责 象的移动规则

GeneralChess.java 主要负责 将、帅的移动规则

HorseChess.java 主要负责 马 的移动规则

ImageTool.java 主要负责 加载所有棋子的图片

musicStuff.java 主要负责 音乐的循环播放(此处需要说明一下,该功能只能循环播放音乐,不能暂停,大家可以修改此功能)

RangeChecker.java 主要负责 判断所有棋子的走法是否合法。

Test文件夹中 是所有棋子的测试类,用来测试各类棋子的移动规则是否正确

image文件夹中是 所有棋子和棋盘的图片(来自网络)

music文件夹中是 音乐(高山流水),此处要注意文件格式为wav格式的。当然,主要还是看大家如何实现这个音乐播放器,不同的方法对于格式要求不同。此模块,是我们组的一个同学在网上学的比较简单的一个方法。

下图是MyChess文件下的所有内容 :

在这里插入图片描述在这里插入图片描述

谢谢大家的支持,您的一键三连是 罡罡同学前进的最大动力! 一键三连 一键三连 一键三连 一键三连 一键三连 一键三连

废话不多说,直接上代码(下面是一大波代码 哈哈): 1.ChessGame.java 代码:

代码语言:javascript复制import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import org.chess.musicStuff; /*2020-第一组-中国象棋项目分工 * 姜权罡(组长):炮、马、架构、图形化界面、视频讲解、报告(结构和代码和总结)、 * PPT代码和总结反思部分、所有工作的审核。 * * 庞义俊:车、音乐、图片搜集、绘制结构图。 * 董玟彤:象、PPT。 * 李若彤:将、士、PPT。 * 曹佳榕:卒、PPT、报告(项目介绍) * * 2020/12/22 所有工作全部完成! * */ public class ChessGame { public static void main(String[] args) { JFrame f =new JFrame("中国象棋:观棋不语真君子,棋死无悔大丈夫"); ImageIcon icon = new ImageIcon("image\\红将.gif"); f.setIconImage(icon.getImage()); f.setSize(730,750); f.setLocationRelativeTo(null); f.setLayout(new BorderLayout());//学习一下BorderLayout()布局管理器,把按钮放进去。 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final Canvas c= new Canvas(); f.add(c); JButton newStartGame = new JButton("新游戏"); JButton startMusic = new JButton("播放音乐"); JButton ExitGame = new JButton("退出游戏"); //为新游戏按钮 添加事件 newStartGame.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub c.initMap();//新游戏 c.repaint();//新游戏后,出棋先后顺序互换 c.select_c = -1; c.select_r = -1; c.isBlack=!c.isBlack; //System.out.println("点击\n"); } }); //为退出按钮 添加事件 ExitGame.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub int j=JOptionPane.showConfirmDialog(null, "真的要退出吗?","退出",JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE); if(j==JOptionPane.YES_OPTION){ System.exit(0); } } }); //为音乐播放按钮 添加事件 startMusic.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String filepath = "music\\music.wav"; musicStuff musicObject = new musicStuff(); musicObject.playMusic(filepath);//音乐播放 } }); //f.setIconImage(new ImageIcon("红将.gif").getImage()); f.add(newStartGame,BorderLayout.WEST); f.add(startMusic,BorderLayout.EAST); f.add(ExitGame,BorderLayout.SOUTH); f.setVisible(true); } }

2.Canvas.java 代码:

代码语言:javascript复制import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.WindowConstants; import javax.xml.bind.Marshaller.Listener; import org.chess.Chess; import org.chess.ImageTool; import org.chess.RangeChecker; import sun.tools.jar.resources.jar; import com.sun.org.apache.bcel.internal.generic.NEW; public class Canvas extends JPanel { public static final int row=10;//棋盘行数 public static final int line=9;//棋盘列数 int[][] map = new int[row][line]; JLabel Icon; Image chessimage = null; Font font; public static final int BLACK = 1000; public static final int WHITE = 0; boolean isBlack = false; //当前是谁下子 int select_c = -1; int select_r = -1; public Canvas(){ //棋盘为10行9列,默认就好,不用改 //chessimage = new ImageIcon("黑车.gif").getImage(); font = new Font("宋体",Font.BOLD,30); initMap(); addMouseListener(new MouseAdapter(){ @Override public void mouseClicked(MouseEvent e){ //super.mouseClicked(e); //System.out.println(e.getButton()); if(e.getButton()==MouseEvent.BUTTON1){ int x = e.getX(); int y = e.getY(); //System.out.println(e.getX()+","+e.getY()+"["+x+","+y+"]"); int r = (y - 25) /58; int c = (x - 25) /58; //System.out.println("r = "+r+", c = "+c); //选子 if(select_c == -1&&map[r][c]!=0){ if(RangeChecker.selectInRange(map,r,c,isBlack)){ //isBlack 是 红方 select_c = c; select_r = r; repaint(); } else{ showFail("请选择己方棋子"); } return ;// 选子阶段结束 } boolean valid = RangeChecker.inRange(map, select_r,select_c,r, c, isBlack); if(!valid){ showFail("下子失败"); } Chess chess = manager.getTheChess(map[select_r][select_c]); valid = chess.check(map, select_r, select_c, r, c, isBlack); if(!valid||(map[select_r][select_c]1000&&map[r][c]!=0)){ showFail("下子失败,规则不允许"); select_c = -1; select_r = -1; repaint(); return ; } map[r][c] = map[select_r][select_c ]; map[select_r][select_c ] = 0; select_c = -1; select_r = -1; isBlack = !isBlack;//对方来下 repaint(); } } }); } protected void showFail(String msg) { System.out.println(msg); } ChessManager manager = new ChessManager(); private Image mainGif; public void initMap(){ int c=0; int i,k; map=new int [][]{ { 1000+'C',1000+'H',1000+'E',1000+'S',1000+'G',1000+'S',1000+'E',1000+'H',1000+'C'}, { 0,0,0,0,0,0,0,0,0,}, { 0,1000+'P',0,0,0,0,0,1000+'P',0},{ 1000+'A',0,1000+'A',0,1000+'A',0,1000+'A',0,1000+'A'}, { 0,0,0,0,0,0,0,0,0},{ 0,0,0,0,0,0,0,0,0}, { 'A',0,'A',0,'A',0,'A',0,'A'},{ 0,'P',0,0,0,0,0,'P',0}, { 0,0,0,0,0,0,0,0,0},{ 'C','H','E','S','G','S','E','H','C'}}; //System.out.println(map[9][4]); mainGif = ImageTool.loadImage("main.gif"); manager.loadAllImage(); } //内部类 public static class MyPoint{ public int r; public int c; public MyPoint(int r,int c) { this.r = r; this.c = c; } } int pw = 60; @Override public void paint(Graphics g){ super.paint(g); //System.out.println("paint called ----------------"); g.setFont(font); int w = this.getWidth(); int h = this.getHeight(); //System.out.println("宽"+w+" 高"+h); g.drawImage(mainGif, 0, 0,null); for(int r = 0;r


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3