1、对局中拔子、中途退场均判为负。2.1.5 五连与禁手同时形成,判胜。2.2比赛中的规定和特例 2.2.1对局开始前,双方猜子,大数减小数,单数交换,偶数不换。2.2.2白棋第一手(即盘面第二着棋)应在天元为界自己一侧布子,主要以示尊重对方,之后双方可任意行子。2.2.3 对局中双方应遵守“职业连珠五子棋规则”,如出现争议,应由裁判判定。2.2.4 对局中掉子(棋子掉落在棋盘上)的一方判负。如遇推子或蹭子,以盘面第一落点为准。用手将棋子扶正不算违规。2.2.5对局中应礼貌行棋,防止不正常声音、动作影响对方思考。2.2.6比赛结束后,双方应将各自棋子放回原处。2.2.7对局中如黑方出现禁手,白方应
2、立即指出禁手点,黑方即负。如白方在黑方出现禁手后,又下一步白子,黑棋禁手则不成立了。2.2.8比赛对局时间,双方分别为15分钟、1小时、2小时、5小时四个等级标准,超时判负。2.3特殊规定 职业五子棋虽然对黑棋采取了种种限制,但黑子先行的优势依然很大。因此,在高段位的职业比赛中,又出现了三种特殊的规定。2.3.1指定打法:是指比赛双方按照约定好的开局进行对弈,由白棋先行。2.3.2 三手可交换:是指黑棋下盘面第3手棋后,白方在下第四手之前,如感觉黑方棋形不利于己方,可提出交换,即执白棋一方变为执黑棋一方,而黑方不可以不换。2.3.3五手两打法:是指黑棋在下盘面上关键的第5手棋时,必须下两步棋,
3、让白棋在这两步棋中拿掉一粒棋子,然后再继续对弈。一般说来,白棋肯定拿掉对白方不利的一点,而保留对黑方较为不利的那点让黑方行棋。3、实验要求编写一个五子棋程序。 程序主要实现以下功能:实现五子棋界面,要求人性化界面简洁美观; 2实现黑白色轮流下棋功能,能提示下棋方; 3实现连成五子自动判断功能; 4实现时间设置功能,认输功能;四、实验步骤 头部文件import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Toolkit;import java.awt.event.KeyAdapter;i
4、mport java.awt.event.KeyEvent;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JFrame; import javax.swing.JOptionPane;第一步:设计界面代码如下:public class FiveC
5、hessFrame extends JFrame implements MouseListener, Runnable int width = Toolkit.getDefaultToolkit().getScreenSize().width; int height = Toolkit.getDefaultToolkit().getScreenSize().height; BufferedImage bgImage = null; int x, y; / 保存棋盘,0表示棋盘该点无棋子,表示黑子,表示白子 int allChess = new int1515; / 保存当前下子是黑子还是白字,
6、true是黑子,false是白子 Boolean isBlack = true; / 标识当前游戏是否结束 Boolean canPlay = true; String message = 黑方先行; / 保存棋谱 int chessX = new int255; int chessY = new int255; int countX, countY; / 保存最大时间 int maxTime = 0; / 游戏时间设置的信息 String blackMessage = 无限制 String whiteMessage = / 保存黑白方所剩余的时间 int blackTime = 0; int
7、 whiteTime = 0; / 游戏倒计时线程 Thread timer = new Thread(this); public FiveChessFrame() this.setTitle(五子棋游戏); this.setSize(500, 500); this.setLocation(width - 500) / 2, (height - 500) / 2); this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); this.repaint(
8、); this.addMouseListener(this); timer.start(); timer.suspend(); public void paint(Graphics g) try bgImage = ImageIO.read(new File(src/wzq/五子棋棋盘.jpg); catch (IOException e) e.printStackTrace(); / 双缓冲 BufferedImage bi = new BufferedImage(500, 500, BufferedImage.TYPE_INT_RGB); Graphics g2 = bi.createGr
9、aphics(); g2.drawImage(bgImage, 43, 60, 375, 375, this); g2.setColor(new Color(0, 169, 158); g2.fill3DRect(43, 60, 375, 375, true); for(int i = 0; i = 15; i+) g2.setColor(Color.WHITE); g2.drawLine(43, i * 25 + 60, 375 + 43, 60 + i * 25); g2.drawLine(i * 25 + 43, 60, 43 + i * 25, 375 + 60); g2.setFon
10、t(new Font(黑体, Font.BOLD, 20); g2.drawString(游戏信息: + message, 50, 50); g2.drawRect(30, 440, 180, 40); g2.drawRect(250, 440, 180, 40); g2.setFont(new Font(宋体, 0, 12);黑方时间: + blackMessage, 40, 465);白方时间: + whiteMessage, 260, 465); / 重新开始按钮 g2.drawRect(428, 66, 54, 20);重新开始, 432, 80); / 游戏设置按钮 g2.drawR
11、ect(428, 106, 54, 20);游戏设置, 432, 120); / 游戏说明按钮 g2.drawRect(428, 146, 54, 20);游戏说明, 432, 160); / 退出游戏按钮 g2.drawRect(428, 186, 54, 20);退出游戏, 432, 200); / 悔棋 g2.drawRect(428, 246, 54, 20); g2.drawString(悔棋, 442, 260); / 认输 g2.drawRect(428, 286, 54, 20);认输, 442, 300); for (int i = 0; 15; i+) for (int j
12、 = 0; j j+) / 黑子 if (allChessij = 1) int tempX = i * 25 + 55; int tempY = j * 25 + 72; g2.setColor(Color.BLACK); g2.fillOval(tempX - 8, tempY - 8, 16, 16); / 白子 if (allChessij = 2) int tempX = i * 25 + 55; g2.setColor(Color.WHITE); g2.drawOval(tempX - 8, tempY - 8, 16, 16); g.drawImage(bi, 0, 0, this);第二步:增加对mouse的点击和移动的处理,可以用来下。 Override public void mouseClicked(MouseEvent arg0) / TODO Auto-generated method stub Override public void mouseEntered(MouseEv