Hello!大家好!我又做出来了一个国际象棋游戏,跟之前的斗兽棋比起来国际象棋无异要更大众化一些,所以还是希望各位编程爱好者和国际象棋爱好者支持一下啊!
其实看过我之前写的五子棋和斗兽棋的朋友们应该已经了解到,写棋类游戏都是有一定的框架可以搭建的,只是在游戏的规则上有不同的复杂程度。而国际象棋在我看来时规则最复杂的棋类游戏之一了,我用java写了有足足一千多行的代码(当然,有可能是我的代码不够简便),这次分两次肯定是解释不清楚了,我打算分四次来写。第一步是设计棋盘以及实现基本的走棋功能;第二步是棋子的走法与吃法;第三步是加入将军的概念;第四步是判断输赢与和棋的方法,以及实现自定义棋盘的功能。
我们先进行第一步——设计棋盘以及基本的走棋功能。
在这一步我们将把国际象棋的棋盘呈现出来,并实现初步的走棋功能,之后我们再来介绍规则的写法。这一步的方法可以应用到各种棋类游戏上去。
这些是国际象棋需要的类库,跟五子棋和斗兽棋差不多。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
public class 国际象棋 extends JPanel{、、还是JPanel的子类
国际象棋里的变量是真的很多了,我在这一次要用到的变量后面会加上横线。
private static long serialVersionUID=1l;————
private static int rows=8,cols=8;————一共8行8列
private int BLOCKWIDTH=55,BLOCKHEIGHT=55;————
private int SMALLERWIDTH=15,SMALLERHEIGHT=15;————
private static int clickcount;————记录点击次数
private static MyIcon movingpiece;————要走的棋子
private static String sidetomove;————轮到哪一方走棋
private static boolean ischecking;
private static MyIcon capturedpiece;————上一步被吃掉的棋子(可以为空)
private static MyIcon capturedpiece2;
private static boolean justcastled;
private static MyLabel movinglabel;————要走的棋子所在的格子
private static Color[] colors= {Color.WHITE,Color.GRAY};————格子的背景颜色
private static ArrayList<MyLabel[]> recordedmove;————走过的棋进行记录
private Strin