用java编写国际象棋

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
  • 20
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
一个可以进行网络对战的国际象棋源码。这个程序可以换棋子和棋盘,还有聊天、以applet运行等功能,非常不错!!<br><br>一、用ant编译源码(所有源文件及目录结构请下载)<br><br>C:\cs>ant compile<br>Buildfile: build.xml<br><br>compile:<br>[mkdir] Created dir: C:\cs\build<br>[javac] Compiling 60 source files to C:\cs\build<br>[javac] Note: * uses or overrides a deprecated API.<br>[javac] Note: Recompile with -Xlint:deprecation for details.<br>[javac] Note: Some input files use unchecked or unsafe operations.<br>[javac] Note: Recompile with -Xlint:unchecked for details.<br><br>BUILD SUCCESSFUL<br>Total time: 14 seconds<br><br> <br><br>二、在命令行启动服务端<br><br>C:\cs>java com.borland.samples.chess.server.ChessServer<br>05-12-28 下午09时44分43秒 CST<br>Read 2 userId records from C:\cs\users.obj<br>Hello 8889<br>Address of the Server :microsof-0f0cfb/127.0.0.1<br>HelloThread: Waiting for someone to talk to me on port 8889<br><br>三、打开两个dos窗口,在命令行分别启动两个客户端程序,每一个客户端程序都会弹出登录对话框,请输入你的姓名和口令登录。如其中之一<br><br>C:\cs>java com.borland.samples.chess.client.ChessViewer<br>imageName = images/cmpieces.gif<br>imageName = images/owlpieces.gif<br>imageName = images/ibmpieces.gif<br>no file specified<br>ImageFactory.square size = 49 pieces=23671010<br>CV8889Received: 8890<br>ClientSender:Name with 2 parameters<br>ClientSender:List with 0 parameters<br>ClientSender:AdjuornedList with 0 parameters<br><br><br> <br>
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值