㈠ 五子棋技巧图解
呵呵 网络搜的
那氏五子兵法:
中国现代五子棋的开拓者那威荣誉九段,多年钻研五子棋,潜心发掘五子棋的中国民间阵法,他总结了五子棋行棋的要领和临阵对局的经验,得出一套“ 秘诀 ” ,谓之《那氏五子兵法》:
先手要攻,后手要守,以攻为守,以守待攻。
攻守转换,慎思变化,先行争夺,地破天惊。
守取外势,攻聚内力,八卦易守,成角易攻。
阻断分隔,稳如泰山,不思争先,胜如登天。
初盘争二,终局抢三,留三不冲,变化万千。
多个先手,细算次先,五子要点,次序在前。
斜线为阴,直线为阳,阴阳结合,防不胜防。
连三连四,易见为明,跳三跳四,暗剑深藏。
己落一子,敌增一兵,攻其要点,守其必争。
势已形成,败即降临,五子精华,一子输赢。
还有去五子棋贴吧看看吧 里面有挺多的
有机会一起交流交流吧 呵呵
㈡ 求五子棋的背景图片(不要带方格的)谢谢
这张可以吗?
㈢ 谁能告诉我下五子棋和象棋的一些技巧······我是个初学者
发展与限制------五子棋
五子棋棋理初探
发展不是纯粹地发展,而是发展中寓意着限制;限制也并非单纯地限制,而是限制中
蕴含、积累着发展的能量,这就是五子棋的深奥之处。
五子棋起源于我国,并通过各种途径淬至世界各地。它集简单与复杂、浅显与深奥、
单一与多样于一身,深受人们的喜爱,并吸引着众多的爱好者对之进行深入的研究。
在我国,五子棋不仅有着悠久的历史,更有着广泛的群众基础。如果你随便问一个五
、六岁的孩子知道不知道五子棋,他肯定会说:“知道。”如果你再问他会不会下五子棋
,他十有八九会说:“会。”但却不忘补充一句:“但是下得不好!”而有的孩子却仰着
小脸蛋很神气地说:“我爸爸妈妈都下不过我!”真的,孩子没有撒谎,也不说明孩子的
父母不行,这恰恰说明五子棋是种非常特殊的棋,而下五子棋的思路又与别的棋有着较大
的反差。
若把五子棋也算作一大棋的话,那么,目前世界上就有四大棋,即围棋、中国象棋、
国际象棋及五子棋。我称它们为棋坛“四杂金花”。前三大棋(围棋、中国象棋、国际象棋
)有一个共同点,即在对弈的过程中,存在着你吃掉对方及被对方吃掉的可能。故下棋的思
路是:进攻时不忘防守,防守中伺机进攻。它们体现出一个共同的战略思想:进攻与防御
。
而五子棋则不存在吃与被吃的可能。所以,它所体现的是一种代表未来和平主流趋势
的思想:发展与限制。故我称五子棋为“和平的智慧”。
另外,五子棋与象棋还有个显著的区别:象棋越下子力越少,局面也大大简化;五子
棋则是子力逐渐增多,局面也更为复杂、精微,这一点与围棋颇为相似。
下面,我就从一些普遍的现象说起,并逐步过渡到比较高的五子棋棋理及技巧上去。
许多人在下五子棋时,输了后总是说:“只差一步,否则我赢了!”懊恼之余又来一
盘,又输了,也是只差一步;再来一盘,还是输,还是差一步。输的人百思不得其解,而
赢的人也道不出个所以然来。现在我要告诉大家,从某种程度上来说,五子棋是“只差一
步的艺术”:先一步者为胜,后一步者为负。
而具体反映在对弈过程中的表现是:先手意识----充分利用宝贵的先手机会,努力发
展,直到取胜。请记住,这是五子棋的一条极其重要的规律,这也是五子棋的独特性。先
手,就意味着有发展、取胜的权力;失去了先手,离取胜就更遥远。
所以,我视先手为五子棋的根本、灵魂、生命!我之所以要把它作为第一条规律提出
来,是因为我以后讲的所有善于五子棋的棋理及技巧、指导思想、甚至理论体系的建立,
都是围绕着“先手”这一中心而展开的。
先手如此重要,那黑白双方将会尽力争先。但请注意,一开局就抢到先手者,并非必
胜;一开始没抢到先手者,亦非必败。
这里,就有个如何正确理解先手、后手及其相互关系的总是。这样,才能在下棋中掌
握好分寸感,控制住棋局进展的节奏。
然而,抢先手却是每一位选手在落下第一颗子时就必须具备的最强烈的意识。
现在,我来谈一谈五子棋中比较浅显的道理。
许多人下五子棋,一开始就一味地冲四,冲完后很痛快。然而,问题也来了,他再也
摆不出活三了,冲四的机会也就不存在了。于是偏向了另一极端,一味地限制对方的棋,
被对方牵着走。结果子力很分散,没有章法,其结局是明显的:失败。
一般说来,五子棋中最后一步是冲四。但怎么个冲法,这不是我要关心的。然而,有
一点必须明确,无谓地冲四是一种挣扎,而非自信,我们并不需要。请记住,冲四的基础
是活三,而活三的基础是活二。
注意,想象力太丰富的人应就此赶紧收住,别再“活二的基础是活一”地往下想。为
什么到了活二就收住了?这里就有个分寸感的总是,更有个对五子棋棋理深刻理解的问题
。
在此,我不想说:真理再往前跨一步就变成了谬误。我想强调的重点是:分寸感。因
为这一点是从大量的实战经验中总结、提炼出来的,现在将其上升到理论的高度,作为下
棋的指导思想,可以避免“跟着感觉走”的误区。
我们知道,围棋在许多场合中,大飞与小飞、拆一与拆二、跳一与跳二等等就是不一
样。为什么?分寸感也,象棋中也有个分寸感的问题。
而五子棋中,不仅有分寸感的总是,还有个精确度的总是。所以,如何深刻理解五子
棋的棋理显得至关重要。
下面,我要特别谈一谈我为什么要强调活二、活三。
首先解决活三的问题。因为活三与先手这两个概念是紧紧地结合在一起的,死三尽管
也能冲四,但其先手意识差一些,发展能量也相对小些。
五子棋的中心就是先手,所有思路都必须围绕着先手运转,让每一颗子都发挥出最大
的能量。
另外,从某种程度上来说,活三是给对方出了道选择题。对方的应手是上是下、是左
是右,这不仅关系到双方对以后棋局的看法及把握程度,而这一切又都是围绕着先手而进
行的;
更为重要的是,活三还保留了一种韵味,将来是连冲还是跳冲,那就看你这棋盘上的
“酒”酿得如何了。
其次是关于活二。我视活二为五子棋中基本的要素,棋枰上的风起云涌都是因活二而
引发的。
所以,我称活二为:必要两点。但这样理解还不够,五子棋远非人们想象的那么简单
,五子棋的最终目的是冲四取胜,但无谓地冲四是一种挣扎。同理,无谓地活二亦是花架
子。
真正意义上的必要两点是:有着一定的发展后劲,并具有开阔的发展空间。
在我的理论体系中,我称之为:必要发展两点----既是必要的,又是能发展的。当然
,这仅是一个方面。
任何棋类的对弈都是一个运动过程。领先与落后、发展与限制、进攻与防御直至胜利
与失败,都是在运动过程中产生的。
当然,胜负分明了,一个运动过程也就结束了。而“必要发展两点”唯有在运动过程
中才显得富有生命力及令人赏心悦目的流畅感,并能使人真正感悟到五子棋的真谛。
基于这一层认识,我认为,“必要发展两点”在布局阶段(八手左右)是摆出来的,而
在子力分布达到一定程度后,则是依靠先手发展出来的,并进一步发展出活三。
至此,可以这样说,在高级别的选手间,谁能更为深刻、全面地理解“必要发展两点
”的含义,谁就能够牢牢地把握主动权。
如果谁能在更高的层次上将五子棋更为深遂的含义挖掘出来,并从全新的角度来阐释
它,那么,五子棋的另一个时代就将开始。
当然,所有的理论都是相对完美的。随着时间、环境等诸因素的变化,它必定会被充
实、修改,甚至还会朝着另一个方向发生演变,甚至还会被抛弃,而为一种全新的理论所
取代。
我在前面曾说过,五子棋与三大棋有一个最显著的区别,就是战略思想的不同。三大
棋的共同战略思想是:进攻与防御。而五子棋所体现的是代表未来和平主流趋势的思想:
发展与限制。
但反映在棋枰上的具体表现是:先手者发展,后手者限制。正确理解这一点极为重要
,因为以后的弈棋指导思想都是建立在这一基石上的。
发展与限制(即先手与后手)都是相对的,不仅可以互相转换,并且是相互包容的----
发展不是纯粹地发展,而是发展中寓意着限制;限制也并非单纯地限制,而是限制中蕴含
、积累着发展的能量。这就是五子棋的深奥之处。
下面,我就将讲到五子棋中一个比较高级的概念:反先。从目前的资料来看,尚无人
提及、论及这一概念。所以,我要特别详细地讨论、解析它。
反先----后手者努力争先的高级手段,同时也闪烁着最光辉的“先手意识”的思想。
许多人在下五子棋时,因一开始没抢到先手,而只能消极地限制对方,等对方气数殆
尽时,才慢慢地发展自己的势力。我不能对这一策略说三道四,许多低级别的选手在与高
级别的选手对弈时,往往是先限制对方,然后再发展自己。
也许是棋风的关系,也许是我比别人更多更主动的意识到把先在现代五子棋中的作用
及突出的实战效果。所以,我至少不会选择上述的那种方法,而无论与谁下棋。这或许是
男子特有的性格:输也要输得象样!
现在,我要具体地阐述反先。从表面看,反先有两种:直接反先与间接反先。下过围
棋、象棋的人都有这样的体会:围棋讲究手筋,象棋讲究弃子攻杀。若是这样的话,那么
五子棋就讲究一个想象力,我称五子棋为“想象之花”。
而“反先”本身就是一个极富想象力的概念。它不仅同时大大地丰富了发展与限制的
内涵,并且是努力争先的典范。由于它的出现,众对五子棋棋理的认识也更为深入、透彻
,其技巧性、趣味性、艺术性也提高了许多。
反先的运用还与某些特殊的概念有着密不可分的联系(主点、支架、延伸线、关节等等
)。在实战中,许多人较多地使用直接反先(例如“限二”)。由于它是比较直观的,所以许
多人在对方的延伸线上,抢在对方发展之前就予以直接限制,以取得最大的效果。
而间接反先则较为隐蔽,它并不是以预先限制为目的,而是在对方发展的延伸线上预
先打埋伏,巧借对方发展之力,达到抢先的目的。
注意,间接反先不是主动限制对方发展,而是期盼、促使对方发展后,再予以巧妙限
制。效果是双重的:既限制了对方,又抢到了先手。虽然围棋、象棋中也有“借势发巧劲
”的韵味,但五子棋中的“借劲”则表现得更为充分、精彩!尤其是间接反先,它隐蔽性
好,爆发,常令对手猝不及防;即使对手觉察到了,也不敢轻举妄动。在布局阶段,因子
力的量少,而缺乏反先的支点;当子力分布达到一定程度时,反先则表现得淋漓尽致。
“反先”是一种高级理论及技巧,其中蕴含着“四两拨千斤”的深刻哲理。这里,还
需请大家仔细体会,反复验证。当然,反先有假有真。反先的目的是:争到先手后,乘势
发展,并一举奠定胜局。而没有发展后劲的反先则是一种挣扎,我们并不需要。
在我刚才论及反先时,大家已注意到我使用了另一个概念:支点。支点有没有意义及
实战价值?关于支点的精确定义尚无,但它已包含了三层做含义:1)将要落下的子成为支
点;2)棋盘上原有的某一颗子将成为支点;3)在延伸线上的某一空点将成为支点(隐形支点
)。
㈣ 玩五子棋好但不玩和平精英的人是为什么
虽然都是游戏。但是但是两个游戏完全是不一个类型的。一个是益智类的,一个比较相对暴力,可能是这个原因。
㈤ java的背景图片设置问题:关于graphics问题 设置一个五子棋窗体,然后加入背景图片,但是效果却是透明的
package org.liky.game.frame;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
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 FiveChessFrame extends JFrame implements MouseListener, Runnable {
// 取得屏幕的宽度
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
// 取得屏幕的高度
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
// 背景图片
BufferedImage bgImage = null;
// 保存棋子的坐标
int x = 0;
int y = 0;
// 保存之前下过的全部棋子的坐标
// 其中数据内容 0: 表示这个点并没有棋子, 1: 表示这个点是黑子, 2:表示这个点是白子
int[][] allChess = new int[19][19];
// 标识当前应该黑棋还是白棋下下一步
boolean isBlack = true;
// 标识当前游戏是否可以继续
boolean canPlay = true;
// 保存显示的提示信息
String message = "黑方先行";
// 保存最多拥有多少时间(秒)
int maxTime = 0;
// 做倒计时的线程类
Thread t = new Thread(this);
// 保存黑方与白方的剩余时间
int blackTime = 0;
int whiteTime = 0;
// 保存双方剩余时间的显示信息
String blackMessage = "无限制";
String whiteMessage = "无限制";
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.addMouseListener(this);
// 将窗体显示出来
this.setVisible(true);
t.start();
t.suspend();
// 刷新屏幕,防止开始游戏时出现无法显示的情况.
this.repaint();
String imagePath = "" ;
try {
imagePath = System.getProperty("user.dir")+"/bin/image/background.jpg" ;
bgImage = ImageIO.read(new File(imagePath.replaceAll("\\\\", "/")));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void paint(Graphics g) {
// 双缓冲技术防止屏幕闪烁
BufferedImage bi = new BufferedImage(500, 500,
BufferedImage.TYPE_INT_RGB);
Graphics g2 = bi.createGraphics();
g2.setColor(Color.BLACK);
// 绘制背景
g2.drawImage(bgImage, 1, 20, this);
// 输出标题信息
g2.setFont(new Font("黑体", Font.BOLD, 20));
g2.drawString("游戏信息:" + message, 130, 60);
// 输出时间信息
g2.setFont(new Font("宋体", 0, 14));
g2.drawString("黑方时间:" + blackMessage, 30, 470);
g2.drawString("白方时间:" + whiteMessage, 260, 470);
// 绘制棋盘
for (int i = 0; i < 19; i++) {
g2.drawLine(10, 70 + 20 * i, 370, 70 + 20 * i);
g2.drawLine(10 + 20 * i, 70, 10 + 20 * i, 430);
}
// 标注点位
g2.fillOval(68, 128, 4, 4);
g2.fillOval(308, 128, 4, 4);
g2.fillOval(308, 368, 4, 4);
g2.fillOval(68, 368, 4, 4);
g2.fillOval(308, 248, 4, 4);
g2.fillOval(188, 128, 4, 4);
g2.fillOval(68, 248, 4, 4);
g2.fillOval(188, 368, 4, 4);
g2.fillOval(188, 248, 4, 4);
/*
* //绘制棋子 x = (x - 10) / 20 * 20 + 10 ; y = (y - 70) / 20 * 20 + 70 ;
* //黑子 g.fillOval(x - 7, y - 7, 14, 14); //白子 g.setColor(Color.WHITE) ;
* g.fillOval(x - 7, y - 7, 14, 14); g.setColor(Color.BLACK) ;
* g.drawOval(x - 7, y - 7, 14, 14);
*/
// 绘制全部棋子
for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
if (allChess[i][j] == 1) {
// 黑子
int tempX = i * 20 + 10;
int tempY = j * 20 + 70;
g2.fillOval(tempX - 7, tempY - 7, 14, 14);
}
if (allChess[i][j] == 2) {
// 白子
int tempX = i * 20 + 10;
int tempY = j * 20 + 70;
g2.setColor(Color.WHITE);
g2.fillOval(tempX - 7, tempY - 7, 14, 14);
g2.setColor(Color.BLACK);
g2.drawOval(tempX - 7, tempY - 7, 14, 14);
}
}
}
g.drawImage(bi, 0, 0, this);
}
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
/*
* System.out.println("X:"+e.getX()); System.out.println("Y:"+e.getY());
*/
if (canPlay == true) {
x = e.getX();
y = e.getY();
if (x >= 10 && x <= 370 && y >= 70 && y <= 430) {
x = (x - 10) / 20;
y = (y - 70) / 20;
if (allChess[x][y] == 0) {
// 判断当前要下的是什么颜色的棋子
if (isBlack == true) {
allChess[x][y] = 1;
isBlack = false;
message = "轮到白方";
} else {
allChess[x][y] = 2;
isBlack = true;
message = "轮到黑方";
}
// 判断这个棋子是否和其他的棋子连成5连,即判断游戏是否结束
boolean winFlag = this.checkWin();
if (winFlag == true) {
JOptionPane.showMessageDialog(this, "游戏结束,"
+ (allChess[x][y] == 1 ? "黑方" : "白方") + "获胜!");
canPlay = false;
}
} else {
JOptionPane.showMessageDialog(this, "当前位置已经有棋子,请重新落子!");
}
this.repaint();
}
}
/* System.out.println(e.getX() + " -- " + e.getY()); */
// 点击 开始游戏 按钮
if (e.getX() >= 400 && e.getX() <= 470 && e.getY() >= 70
&& e.getY() <= 100) {
int result = JOptionPane.showConfirmDialog(this, "是否重新开始游戏?");
if (result == 0) {
// 现在重新开始游戏
// 重新开始所要做的操作: 1)把棋盘清空,allChess这个数组中全部数据归0.
// 2) 将 游戏信息: 的显示改回到开始位置
// 3) 将下一步下棋的改为黑方
for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
allChess[i][j] = 0;
}
}
// 另一种方式 allChess = new int[19][19];
message = "黑方先行";
isBlack = true;
blackTime = maxTime;
whiteTime = maxTime;
if (maxTime > 0) {
blackMessage = maxTime / 3600 + ":"
+ (maxTime / 60 - maxTime / 3600 * 60) + ":"
+ (maxTime - maxTime / 60 * 60);
whiteMessage = maxTime / 3600 + ":"
+ (maxTime / 60 - maxTime / 3600 * 60) + ":"
+ (maxTime - maxTime / 60 * 60);
t.resume();
} else {
blackMessage = "无限制";
whiteMessage = "无限制";
}
this.canPlay = true;
this.repaint();
}
}
// 点击 游戏设置 按钮
if (e.getX() >= 400 && e.getX() <= 470 && e.getY() >= 120
&& e.getY() <= 150) {
String input = JOptionPane
.showInputDialog("请输入游戏的最大时间(单位:分钟),如果输入0,表示没有时间限制:");
try {
maxTime = Integer.parseInt(input) * 60;
if (maxTime < 0) {
JOptionPane.showMessageDialog(this, "请输入正确信息,不允许输入负数!");
}
if (maxTime == 0) {
int result = JOptionPane.showConfirmDialog(this,
"设置完成,是否重新开始游戏?");
if (result == 0) {
for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
allChess[i][j] = 0;
}
}
// 另一种方式 allChess = new int[19][19];
message = "黑方先行";
isBlack = true;
blackTime = maxTime;
whiteTime = maxTime;
blackMessage = "无限制";
whiteMessage = "无限制";
this.canPlay = true;
this.repaint();
}
}
if (maxTime > 0) {
int result = JOptionPane.showConfirmDialog(this,
"设置完成,是否重新开始游戏?");
if (result == 0) {
for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
allChess[i][j] = 0;
}
}
// 另一种方式 allChess = new int[19][19];
message = "黑方先行";
isBlack = true;
blackTime = maxTime;
whiteTime = maxTime;
blackMessage = maxTime / 3600 + ":"
+ (maxTime / 60 - maxTime / 3600 * 60) + ":"
+ (maxTime - maxTime / 60 * 60);
whiteMessage = maxTime / 3600 + ":"
+ (maxTime / 60 - maxTime / 3600 * 60) + ":"
+ (maxTime - maxTime / 60 * 60);
t.resume();
this.canPlay = true;
this.repaint();
}
}
} catch (NumberFormatException e1) {
// TODO Auto-generated catch block
JOptionPane.showMessageDialog(this, "请正确输入信息!");
}
}
// 点击 游戏说明 按钮
if (e.getX() >= 400 && e.getX() <= 470 && e.getY() >= 170
&& e.getY() <= 200) {
JOptionPane.showMessageDialog(this,
"这个一个五子棋游戏程序,黑白双方轮流下棋,当某一方连到五子时,游戏结束。");
}
// 点击 认输 按钮
if (e.getX() >= 400 && e.getX() <= 470 && e.getY() >= 270
&& e.getY() <= 300) {
int result = JOptionPane.showConfirmDialog(this, "是否确认认输?");
if (result == 0) {
if (isBlack) {
JOptionPane.showMessageDialog(this, "黑方已经认输,游戏结束!");
} else {
JOptionPane.showMessageDialog(this, "白方已经认输,游戏结束!");
}
canPlay = false;
}
}
// 点击 关于 按钮
if (e.getX() >= 400 && e.getX() <= 470 && e.getY() >= 320
&& e.getY() <= 350) {
JOptionPane.showMessageDialog(this,
"本游戏由MLDN制作,有相关问题可以访问");
}
// 点击 退出 按钮
if (e.getX() >= 400 && e.getX() <= 470 && e.getY() >= 370
&& e.getY() <= 400) {
JOptionPane.showMessageDialog(this, "游戏结束");
System.exit(0);
}
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
private boolean checkWin() {
boolean flag = false;
// 保存共有相同颜色多少棋子相连
int count = 1;
// 判断横向是否有5个棋子相连,特点 纵坐标 是相同, 即allChess[x][y]中y值是相同
int color = allChess[x][y];
/*
* if (color == allChess[x+1][y]) { count++; if (color ==
* allChess[x+2][y]) { count++; if (color == allChess[x+3][y]) {
* count++; } } }
*/
// 通过循环来做棋子相连的判断
/*
* int i = 1; while (color == allChess[x + i][y + 0])
* i = 1; while (color == allChess[x - i][y - 0]) if
* (count >= 5) // 纵向的判断 int i2 = 1 ; int count2 = 1 ;
* while (color == allChess[x + 0][y + i2]) i2 = 1;
* while (color == allChess[x - 0][y - i2]) if
* (count2 >= 5) // 斜方向的判断(右上 + 左下) int i3 = 1 ; int
* count3 = 1 ; while (color == allChess[x + i3][y - i3]) { count3++;
* i3++; } i3 = 1; while (color == allChess[x - i3][y + i3]) { count3++;
* i3++; } if (count3 >= 5) // 斜方向的判断(右下 + 左上) int i4 =
* 1 ; int count4 = 1 ; while (color == allChess[x + i4][y + i4]) {
* count4++; i4++; } i4 = 1; while (color == allChess[x - i4][y - i4]) {
* count4++; i4++; } if (count4 >= 5)
*/
// 判断横向
count = this.checkCount(1, 0, color);
if (count >= 5) {
flag = true;
} else {
// 判断纵向
count = this.checkCount(0, 1, color);
if (count >= 5) {
flag = true;
} else {
// 判断右上、左下
count = this.checkCount(1, -1, color);
if (count >= 5) {
flag = true;
} else {
// 判断右下、左上
count = this.checkCount(1, 1, color);
if (count >= 5) {
flag = true;
}
}
}
}
return flag;
}
// 判断棋子连接的数量
private int checkCount(int xChange, int yChange, int color) {
int count = 1;
int tempX = xChange;
int tempY = yChange;
while (x + xChange >= 0 && x + xChange <= 18 && y + yChange >= 0
&& y + yChange <= 18
&& color == allChess[x + xChange][y + yChange]) {
count++;
if (xChange != 0)
xChange++;
if (yChange != 0) {
if (yChange > 0)
yChange++;
else {
yChange--;
}
}
}
xChange = tempX;
yChange = tempY;
while (x - xChange >= 0 && x - xChange <= 18 && y - yChange >= 0
&& y - yChange <= 18
&& color == allChess[x - xChange][y - yChange]) {
count++;
if (xChange != 0)
xChange++;
if (yChange != 0) {
if (yChange > 0)
yChange++;
else {
yChange--;
}
}
}
return count;
}
public void run() {
// TODO Auto-generated method stub
// 判断是否有时间限制
if (maxTime > 0) {
while (true) {
if (isBlack) {
blackTime--;
if (blackTime == 0) {
JOptionPane.showMessageDialog(this, "黑方超时,游戏结束!");
}
} else {
whiteTime--;
if (whiteTime == 0) {
JOptionPane.showMessageDialog(this, "白方超时,游戏结束!");
}
}
blackMessage = blackTime / 3600 + ":"
+ (blackTime / 60 - blackTime / 3600 * 60) + ":"
+ (blackTime - blackTime / 60 * 60);
whiteMessage = whiteTime / 3600 + ":"
+ (whiteTime / 60 - whiteTime / 3600 * 60) + ":"
+ (whiteTime - whiteTime / 60 * 60);
this.repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(blackTime + " -- " + whiteTime);
}
}
}
}
㈥ 五子棋的评价
五子棋
一种两人对弈的棋类游戏。现代五子棋的日文称之为“连珠”,英译为“Renju”。
五子棋起源于中国,可能早在“尧造围棋”之前,民间就已有五子棋游戏。在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。”《辞海》中亦言:“五子棋中棋类游戏,棋具与围棋相同,两人对局,轮流下子,先将五子连成一行者为胜。”可见,五子棋颇有渊源。
再说说"连珠"的起源,连珠源于日本,是日本棋手对五子棋改良的结果。据日本史料文献介绍,中国古代的五子棋先由中国传到高丽(朝鲜),然后于公元1688年至1704年日本的元禄时代再从高丽传到日本,最初在皇宫和贵族大家庭中流行,到元禄末期,开始在民间盛行。1899年,经过公开征名,“连珠”这一名称才被正式确定下来。
从这之后,连珠这一活动经过不断改良,主要是规则的变化,例如1899年规定:禁止黑白双方走“双三”;1903年规定:只禁止黑方走“双三”,1912年规定:黑方被被迫走"双三"亦算输;1916年规定:黑方不许走“长连”;1918年规定:黑方也不许走“四、三、三”;1931年规定:黑方不许走“双四”,并规定将19×19的围棋盘改为15×15的五子棋专用棋盘。通过这一系列的规则变化最终使五子棋成为今天的职业连珠五子棋,同时也成为一种国际棋。
目前,职业连珠在国际发展迅速,1988年,国际连珠联盟(RIF) 在瑞典创立,成员国包括日本、俄罗斯、瑞典、亚美尼亚、阿塞拜疆、爱沙尼亚、法国、拉脱维亚、白俄罗斯等9个国家,总部设在瑞典的斯德哥尔摩。现在全世界已有数十个国家和地区成为国际连珠联盟的正式会员,我国于1996年正式加入。
就各国五子棋的整体水平而言,目前欧洲实力最强,特别是俄罗斯和爱沙尼亚,而日本是传统的连珠强国。我国的连珠水平则迅猛增长,特别是连珠研究与网络连珠水平天下无敌,但更能确证实力的要到正式的大赛中加以验证。
五子棋容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
玩法及术语简介:
棋盘如图所示,形状近于正方形,15×15大小,共有225个交点,邻近两个交点的距离纵线约为2.5厘米,横线约为2.4厘米。
棋盘正中一点为“天元”。棋盘两端的横线称端线。棋盘左右最外边的两条纵线称边线。从两条端线和两条边线向正中发展而纵横交叉在第四条线形成的四个点称为“星”。天元和星应在棋盘上用直径约为0.5厘米的实心小圆点标出。
棋子分黑、白两色,形状为扁圆形,有一面凸起,厚度不超过0.8厘米,直径为2.0~2.3厘米;棋子数量为黑色棋子113枚,白色棋子112枚。
一着:怎么算一着棋呢?在对局过程中,行棋方把棋子落在棋盘无子的交点上,不论落子的手是否脱离棋子,均被视为一着。在“五手两打”中黑棋落的两个棋子被视作同一着,在确定是否走满规定时限内的规定着数时,棋手最后一着棋,必须在行棋完毕又按了钟后才能视作完成。
回合:双方各走一着,称为一个回合。
黑方:执黑棋一方的简称。
白方:执白棋一方的简称。
轮走方:对局即将开始时的黑方或在对局过程中一方着法完毕后的另一方或在“三手可交换”中如果白方提出交换黑白棋后新的白方。
开局:由黑棋下二着,白棋下一着,在对局开始阶段形成的布局,职业连珠规则包括二十六种开局,详见第五讲。
胜局:有一方获胜的对局。
胜局的判定:最先在棋盘上形成“五连”的一方为胜;黑方在棋盘上己形成“五连”而未发现,未宣布自己获胜,待白方又下子后,黑方继续对局下子,之后,黑方使出禁手并让白方指出禁手点,尽管黑方一度形成“五连”,也判白方胜利;白方在棋盘上已形成五连或长连,未宣布自己获胜,待黑方又下子后,白方继续对局下子,之后,黑方出现胜利局面并宣胜,仍判黑方胜。
追下取胜:白棋利用抓黑棋禁手取胜。
追下取胜判定方法:
①黑方出现禁手,无论是自愿下或被迫下,均可判负,但白方须立即指出禁手点,判白方胜;
②如白方在黑方出现禁手后又落一白子,则黑方禁手不再成立。在此之后的对局过程中,白方又发现此禁手点,指出此禁手点无效;
③以上一条仅限于“三·三”和“四·四”禁手点,黑方走出的长连则不同,只要是在对局过程中,白方发现黑方出现长连,何时发现此点,何时可指出此点而宣胜,判白方胜;
④白方误把黑方长连禁手看成五连而认输双方停表后,白方悔之无效,仍判黑方胜;
⑤黑方误以为自己走出禁手点而认输,双方停表后,结果不可改变。判白方胜。
自由取胜:追下取胜以外的技术性取胜。
VCF胜:英文 Victory of Continuous Four 的字头缩写,是利用连续冲四取胜的技巧。
串珠战术:连珠的基本技术之一。即白方给黑方一个禁手点(多为长连禁手)留下,当盘终时,由于交点是单数必为黑落子,而造成盘终白胜的取胜战术。
一子双杀:一子落下同时形成两种取胜方法而对方无法同时防守的取胜技巧。
和局:分不出胜负的对局。
终局:对局结束。
阳线:棋盘上可见的横纵直线。
阴线:棋盘上无实线连接的隐形斜线。
连:在棋阳线和阴线的任意一条线上形成的有5个或5个以上的同色棋子不间隔地紧紧相连。
五连:在棋盘上形成的5个同色棋子的“连”。
长连:在棋盘上形成的6个或6个以上同色棋子的“连”。
四:包括“活四”和“冲四”。
活四:在棋盘某一条阳线或阴线上有同色4子不间隔地紧紧相连,且在此4子两端延长线上各有一个无子的交点与此4子紧密相连。
冲四:除“活四”外的,再下一着棋便可形成五连,并且存在五连的可能性的局面。
白棋再下一着可形成长连的局面也视为“四”。
三:指活三,包括“连三”和“跳三”。
连三:在棋盘某一条阳线或阴线上有同色三子相连,且在此三子两端延长线上有一端至少有一个,另一端至少有两个无子的交点与此三子紧密相连。
跳三:中间仅间隔一个无子交点的连三,但两端延长线均至少有一个无子的交点与此三子相连。
禁手:对局中禁止使用的着法。
黑棋禁手包括“三三”、“四四”和“长连”。
三三:由于黑方走一着在无子交点上同时形成二个或二个以上黑方“活三”的局面。
四四:由于黑方走一着在无子交点上同时形成二个或二个以上黑方“四”的局面。
白棋无禁手。
四三:指某一方同时具备两个先手,其中一个是“四”,一个是“活三”。
先手:对方必须应答的着法,其中“冲四”称为绝对先手。
指定打法:黑方下第一着后,白方须将一枚白子交与黑方,黑方按白2、黑3的顺序摆出某种开局,但此开局局面必须是职业连珠规则中规定的26种开局中的一种。
三手可交换:在黑3之后,白方在应白4之前,可选择用黑棋或白棋,如提出交换黑、白方,则黑方必须同意交换。
五手两打:黑方在下黑5时,必须在盘面上的两个空白交点上各放一个黑子,让白方任选一点。(由白方在此两子中拿走其中一个黑子)。
次场局:
团体赛中的同一轮两队之间完成的比赛称为“一次”比赛。
两名棋手之间完成的两局制或多局制的一次比赛称为“一场”比赛。
两名棋手之间完成的一盘比赛称为一“局”比赛。
一个比较集中的比赛单位时间称一“节”。(如一个上午或一个下午或一个晚上)。
参赛的各队(团体赛)或各名棋手(个人赛)普遍出场比赛一次(个别轮空者除外)称一“轮”。
简明职业连珠比赛规则:
1、执黑先行,白棋后行,第一颗子必须落在天元上,依次轮流落子。
2、最先在棋盘横向、竖向、斜向形成连续的相同色五个棋子的一方为胜。
3、黑棋禁手判负、白棋无禁手。黑棋禁手包括“三、三” “四、四” “长连”。黑方只能“四、三”胜。
4、如分不出胜负,则定为平局。
5、对局中拔子、中途退场均判为负。
6、五连与禁手同时形成,先五为胜。
7、黑方禁手形成时,白方应立即指出。若白方发现而续应子,不能判黑方负。
五子棋开局介绍共24种
直指布局(12种):
1、寒星
2、溪月
3、疏星
4、花月
5、残月
6、雨月
7、金星
8、松月
10、新月
11、瑞星
12、山月
斜指布局(12种):
13、长星
14、峡月
15、恒星
16、水月
17、流星
18、云月
19、浦月
20、岚月
21、银月
26、明星
25、斜月
24、明月
五子棋的开局:开局是指对局开始前三步(黑1、白2、黑3)群群组成的棋形,各种棋形都冠以“星”或“月”字命名,这样每种开局都有了很别致的标签。五子棋的开局是建立在“直止打法”和“斜止打法”两个体系之上,一共有24种(原来有26种,斜止的“彗星局”和直止的“游星局”因为对白棋太有利所以职业比赛中禁止使用)
㈦ 五子棋图片
http://image..com/i?ct=201326592&cl=2&lm=-1&tn=image&word=%CE%E5%D7%D3%C6%E5&z=0
㈧ 五子棋比赛规则
五子棋游戏规则
目前五子棋有如下几种规则
一:无禁手规则:(本游戏中心的就是这种规则,适用于初学者)
黑白双方依次落子,由黑先下,当棋盘上有三个子时(两黑一白),如果此时白方觉得开的局不利于自已可以提出交换,黑方无条件接受!也可以不交换,主动权在白方!然后继续下棋,任一方先在棋盘上形成横向、竖向、斜向的连续的相同颜色的五个(含五个以上)棋子的一方为胜。
二:禁手规则
禁手是针对黑棋而言的,禁手是指一手黑棋棋形成:双活三,双四,长连(五子以上)为输!这种方法限制了黑棋先行的优势!禁手对白棋无效!
三:RIF(国际连珠连盟)正式规则
1,第一位选手开局(指定的26种开局)
2,第二位选手默认执白,如果觉得第一位选手开局对黑有利可以交换(即三手交换)!并由执白者下第四手棋!
3,第五手黑棋要在棋盘上下两子(即五手两打)这两手不能对称(即两手棋的相对位置不能一样),然后由白方从这两手中拿掉一个对白不利,对黑优势最大的那个子后下第六手棋!
4,开始轮留下子,黑棋有禁手!任何一方如果不想落子,可以放弃一手!
四:“Yamaguchi”规则
- 第一位选手摆出26种开局之一,并且提出要求本局需几个第5子。
- 另一位选手有权交换。
- 执白者在棋盘上任意位置放第4子。
- 执黑者按前面提出的要求在棋盘上放若干个第5子。
- 执白者从这些第5子中选择一个,然后落第6子。
开局阶段结束后,按连珠规则正常继续进行。
五:“Tarannikov”规则
- 执黑者在天元放第1子。
- 另一位选手可以交换。
- 执白者在中央3×3区域内放第2子。
- 另一位选手可以交换。
- 执黑者在中央5×5区域内放第3子。
- 另一位选手可以交换。
- 执白者在中央7×7区域内放第4子。
- 另一位选手可以交换。
- 执黑者在中央9×9区域内放第5子。
- 另一位选手可以交换。
- 执白者在棋盘上任意位置放第6子。
开局阶段结束后,按连珠规则正常继续进行。
六:“Taraguchi”规则
- 执黑者在天元放第1子。
- 另一位选手可以交换。
- 执白者在中央3×3区域内放第2子。
- 另一位选手可以交换。
- 执黑者在中央5×5区域内放第3子。
- 另一位选手可以交换。
- 执白者在中央7×7区域内放第4子。
选择1(4手之后):
- 另一位选手可以交换。
- 执黑者在中央9×9区域内放第5子。
- 另一位选手可以交换。
- 执白者在棋盘上任意位置放第6子。
选择2(4手之后):
- 执黑者在棋盘上任意位置放5个第5子。
- 执白者选择这些5子之一,然后在棋盘上任意位置下第6子。
开局阶段结束后,按连珠规则正常继续进行。
七:“Jonsson”规则
- 第一位选手摆出26种开局之一。
- 另一位选手有权交换。
- 执白者在棋盘上任意位置放第4子,然后声明需要1、2或3个第5子。
- 另一位选手有权交换。
- 执黑者按前面提出的要求在棋盘上放若干个第5子。
- 执白者从这些第5子中选择一个,然后落第6子。
开局阶段结束后,按连珠规则正常继续进行。
八:“Yamaguchi”规则的52种开局扩展变化
- 第一位选手摆出52种开局之一(在中央7×7区域内),并声明需第5手的数量。
- 另一位选手有权交换。
- 执白者在棋盘上任意位置放第4子。
- 执黑者按前面的声明在棋盘上放若干个第5子。
- 执白者选择从这些5子中选择一个并下第6子。
开局阶段结束后,按连珠规则正常继续进行。
九:“Yamaguchi”规则的变化
- 执黑者在天元放第1子。
- 执白者在中央3×3区域内放第2子。
- 执黑者在中央7×7区域内放第3子,并且提出要求本局需几个第5子。
- 另一位选手有权交换。
- 执白者在棋盘上任意位置放第4子。
- 执黑者按前面提出的要求在棋盘上放若干个第5子。
- 执白者从这些第5子中选择一个,然后下第6子。
开局阶段结束后,按连珠规则正常继续进行。
十:“Soosrv”规则
- 第一位选手摆出26种开局之一。
- 另一位选手有权交换。
- 另一位选手在棋盘上任意位置下第4子,并提出本盘棋需1、2、3或4个第5子。
- 另一位选手有权交换。
- 执黑者按前面提出的要求在棋盘上放若干个第5子。
- 执白者从这些第5子中选择一个,然后下第6子。
开局阶段结束后,按连珠规则正常继续进行。
五子棋
五子棋是起源于中国古代的传统黑白棋种之一。亦有"连五子"、"五子连"、"串珠"、"五目"、"五目碰"、"五格"等多种称谓。
玩家根据自身等级和习惯,可以自由选择不同的游戏房间。其游戏规则也有所不同。详细分为三种棋室:普通棋室、国标棋室、职业棋室。其中普通棋室不受任何规则限制;国标棋室有禁手规则限制;而职业棋室则在国标棋室的基础上增加“三手交换”和“五手两打”两项规则。(三手交换:是指黑棋下盘面第3着棋后,白方在应白④之前,如感觉黑方棋形不利于己方,可提出交换,即执白棋一方变为执黑棋一方,而黑方不可以不换。五手两打:是指黑棋在下盘面上关键的第5手棋时,必须下两步棋,让白棋在这两步棋中任选一步,然后再继续对弈。)
国际比赛规则规定:对局中如黑方出现禁手,白方应立即指出禁手点,黑方即负。如白方在黑方出现禁手后,又落一步白子,黑棋禁手则不成立了。 所以在"有禁手"的房间里,如果黑方出现禁手,白方应立即按下"禁手"按钮。程序会判黑方负。如果这时白方又在棋盘上落一子,黑棋禁手则不成立了。为了简化用户对"禁手"按钮的使用,也有"走禁手就输"和"禁手不能落子"规则的房间,顾名思义不多介绍。虽然采取了禁手的限制,黑棋先行仍有优势,黑棋仍可以必胜。所以如果用户是高段位的棋手,或者想成为高手一定要选择国际上比赛选用的比赛标准,即“三手交换,五手两打”。
一、五子棋棋盘
棋盘正中一点为“天元”。棋盘两端的横线称端线。棋盘左右最外边的两条纵线称边线。从两条端线和两条边线向正中发展而纵横交叉在第四条线形成的四个点称为“星”。天元和星应在棋盘上用直径约为0.5厘米的实心小圆点标出。
以持黑方为准,棋盘上的纵轴线从左到右用英文字母A~O标记。横行线从近到远用阿拉伯数字1~15标记。纵横轴上的横纵线交叉点分别用横纵线标记的名称合写成。如“天元”H8,四个“星”分别为D4、D12、L12、L4等。
二、五子棋比赛规则
行棋顺序
黑先、白后,从天元开始相互顺序落子。
判断胜负
最先在棋盘横向、竖向、斜向形成连续的相同色五个棋子的一方为胜。
黑棋禁手判负(Lose),白棋无禁手。黑棋禁手包括“三、三”(Double Three)(包括“四、三、三”)、“四、四”(Double Four)(包括“四、四、三”)、“长连”(Overline)。黑棋只能以“四、三”取胜。
如分不出胜负,则定为平局(Draw)。
对局中中途退场判为负。
五连与禁手同时形成,先五为胜。
黑方禁手形成时,白方应立即指出。若白方未发现或发现后未指明而继续应子,则不能判黑方负。
具体细节及图请参见网站。
㈨ 五子棋规则
一.简明职业连珠五子棋比赛规则的解释
1 、五子棋是两个人之间进行的竞技活动,由于对黑方白方规则不同,黑棋必须先行。
2 、五子棋专用盘为 15×15 ,五连子的方向为横、竖、斜。
3 、禁手是对局中被判为负的行棋手段。白棋无禁手。
4 、在棋盘上以对局双方均不可能形成五连为和棋。
5 、在对局中,以在盘上落下的子又拿起来为拔子,判负。在对局中,一方自行终止比赛,判负。
6 、黑方在落下关键的第五子即形成五连的同时,又形成禁手。此时因黑方已成连五,故禁手失效,黑方胜。
7 、所谓黑方形成禁手,是指黑方一子落下同时形成两个或两个以上的活三、冲四及长连禁手。此时,白方应立即向黑方指出禁手,自然而胜。
二.特殊规定
职业连珠五子棋虽然对黑棋采取了种限制,但是黑棋先行的优势依然很大。因此,在高段位的职比赛中,又出现了三种特殊的规定。
① “ 指定打法 ” :是指比赛双方按照约定好的开局进行奔,由白棋先行。例如 “ 明星局 ” 、 “ 花月局 ” 等 ( 参看 “ 连珠五子棋的开局 ”) 。
② “ 三手可交换 ” :是指黑棋下第 2 手棋 ( 盘面第 3 着棋之后,白方在应白 2 之前,如感觉黑方棋形不利于己方,可出交换,即执白棋一方变为执黑棋一方 ( 此方法不适用指定局打法,而用于随意开局 ) 。
③ “ 五手两打法 ” :是指黑棋在下盘面上关键的第 5 手时,必须下两步棋,让白方在这两步棋中任选一步,然后再续下。
喜欢下五子棋的话 看看啦 多玩就会熟练啦
希望满意
㈩ java五子棋背景图片会覆盖棋盘
每次刷新界面的时候,先把背景画上去,然后再画棋子。为此,你的整个棋盘状况应该是储存起来的,代码大概要做到这样:游戏在电脑运行,显示给人看的部分跟整个游戏的运行没有关系,整个游戏可以随时以任意形式显示出来。
就像是程序在主机运行,你把显示器关了,程序还在跑,把显示器开了就能看到。
显示 与 逻辑 要分离