求空间五子棋的代码。把abaqus二维裂缝扩展扩展到三维,斜线如(1,1,1)(2,2,2)这种线上也不能有连到一起,

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
五子棋本科毕业设计.doc47页
本文档一共被下载:
次 ,本文档已强制全文免费阅读,若需下载请自行甄别文档质量。
文档加载中...广告还剩秒
需要金币:200 &&
你可能关注的文档:
··········
··········
第一章 绪论
1.1开发背景:
游戏软件是当今世界发展最迅速,最有影响力,最有潜力与活力的领域之一?游戏软件深受广大青年人喜爱,而且在发达国家中老年人也有大部分喜欢游戏的,因此游戏软件在很大程度上给予绝大部分人精神上的娱乐?第二次世界大战以后,电子计算机技术得到了突飞猛进的发展?先是由晶体管代替了笨重的真空管,后来出现了集成电路和大规模集成电路,使电子子计算机一代一代实现更新,同时软件技术也发展迅速?在美国,集中了许多计算机软件的设计人才,他们工作之余,时常喜爱编一种能与人斗智的“游戏”,以此来锻炼编程的能力?这种“游戏”花样繁多,但其特点都是利用计算机软件事先设计好的“分析”?“判断”能力反过来与人较量?由于不断修改更新,使计算机的“智力”水平与人难分高低?到了90年代,游戏软件已经为世界各国的人使用,BLACKISLAND和Blizzard.这两个强大的游戏制作组起到了巨大的带动作用,还有中国的洛河工作室在国内也起到了巨大作用,他们让很多很多人喜欢上了游戏软件,打开了这个市场。如今游戏软件产业已经受到了广泛的关注,它年轻有潜力而且吸引人,让人们日益丰富的生活需求得以满足。
五子棋游戏更是吸引着不同年龄段的人群,无论男女老少都可以玩,都喜欢玩,而当前微型计算机已经是在广大人群中流行着,用电脑来下五子棋更是一种时尚。五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山
正在加载中,请稍后...> 五子棋开发(1)-P2P对战
五子棋开发(1)-P2P对战
sasajay & &
发布时间: & &
浏览:1 & &
回复:0 & &
悬赏:0.0希赛币
五子棋开发(一)---------P2P对战
  专门学习java已经有一个月了,舍友说:“对女生来说,学技术是条不归路啊!”做画图板时不这么觉得,但做五子棋时就感受深刻了,不是因为难学,是因为坎坷,很容易放弃……尤其是在做P2C(人机对战)的时候,纠结于算法好久,单单是用最笨的权值法,我就在分类、赋值的时候,从不同的角度考虑了各种方法。之前写了一个版本,我称之为智商为负。后来,考虑了很久,这样的赋值方法很欠缺考虑,以后P2C完成时的总结时会,共享给大家见笑见笑。总之,P2C的算法,我还没有纠结出来,所以,先对P2P对战总结一下。
  五子棋的开发,之前自己在做,基本实现了可以相互交换放棋子,和判断输赢。但代码结构十分的混乱,排错也比较困难,需要重头梳理一遍思路。龙哥后来给我们梳理了一下各个类之间的关系,令我茅塞顿开啊。原来,每一个项目的不能着急开始,都需要整体的规划。
  混乱版的就不拿出来献丑了,就总结一下整理后的版本。
  一、面板的制作。
  用三块面板将窗体分为控制区、游戏区、菜单栏。
  代码如下:
  1、面板类
  // 初始化窗体Ailse五子棋 public void init(javax.swing.JFrame fccp) {
// 设置窗体相关信息
this.setTitle("Ailse五子棋");
this.setSize(750, 633);
this.setResizable(false);
this.setDefaultCloseOperation(3);
//creat layut-fl(flowlayout)
java.awt.BorderLayout fl=new java.awt.BorderLayout();
this.setLayout(fl);
// 创建并定义一个菜单栏
javax.swing.JMenuBar menubar= new FCChessmenubar();
this.add(menubar);
//creat a jpanel-playfield
FCChessplayfield playfield=new FCChessplayfield();
this.add(playfield);
//creat a jpanel-playcontrl
JPanel playcontrl=new FCChesscontrlfield(playfield,fccp);
this.add(playcontrl);
  2、控制面板
  public FCChesscontrlfield(FCChessplayfield playfield,JFrame fccp){
this.setSize( 150, 600);//(150,600);
this.setBackground(Color.GRAY);
this.setLayout(null);
//creat some button to playcontrl
javax.swing.JButton undo=new javax.swing.JButton("悔棋");
undo.setBounds(650, 200, 60, 25);
this.add(undo);
undo.setActionCommand("undo");
javax.swing.JButton giveup=new javax.swing.JButton("认输");
giveup.setBounds(650, 300, 60, 25);
this.add(giveup);
giveup.setActionCommand("giveup");
javax.swing.JButton rebegin=new javax.swing.JButton("重玩");
rebegin.setBounds(650, 400, 60, 25);
this.add(rebegin);
rebegin.setActionCommand("rebegin");
//创建一个鼠标监听器,监听控制面板
FCChesscontrlfieldListener rbml=new FCChesscontrlfieldListener(playfield,fccp,p);
giveup.addMouseListener(rbml);
undo.addMouseListener(rbml);
rebegin.addMouseListener(rbml);
  3、游戏面板
  public class FCChessplayfield extends JPanel implements FCCconfig{
public FCChessplayfield(){
this.setBounds(0, 25, 600, 600);
this.setBackground(Color.LIGHT_GRAY);
this.setLayout(null);}
// 屏幕重绘
public void paint(Graphics g) {
super.paint(g);
System.out.println("jpanel重绘了");
// 在屏幕重绘时重绘棋盘网格
drawchess(g);
// 在屏幕重绘时,重绘棋子
redrawp(g);
// 绘制棋盘
public void drawchess(Graphics g) {
System.out.println("网格重绘了");
g.setColor(Color.black);
for (int i = 0; i & 11; i++) {
g.drawLine(FCCconfig.x0, FCCconfig.gsize * (i + 1), FCCconfig.xe,
FCCconfig.gsize * (i + 1));
for (int j = 0; j & 11; j++) {
g.drawLine(FCCconfig.gsize * (j + 1), FCCconfig.y0, FCCconfig.gsize
* (j + 1), FCCconfig.ye);
// 遍历二维数组,为棋盘所有点标记为0
public void remark() {
System.out.println("标记恢复为0了");
for (int i = 0; i & FCCconfig. i++) {
for (int j = 0; j & FCCconfig. j++) {
CCmark[i][j] = 0;
// 棋子的重绘
public void redrawp(Graphics g) {
System.out.println("棋子重绘了!");
for (int i = 0; i & FCCconfig. i++) {
for (int j = 0; j & FCCconfig. j++) {
System.out.print(CCmark[i][j] + "\t");
if (CCmark[i][j] != 0) {
if (CCmark[i][j] == 1) {
g.setColor(Color.BLACK);
} else if (CCmark[i][j] == -1) {
g.setColor(Color.BLUE);
g.fillOval((i + 1) * FCCconfig.gsize - FCCconfig.CCPsize
/ 2, (j + 1) * FCCconfig.gsize - FCCconfig.CCPsize
/ 2, 40, 40);
System.out.println();
  4、菜单面板
  public FCChessmenubar(){
this.setBounds(0, 0, 750, 25);
//为菜单栏加布局
java.awt.FlowLayout menubarfl=new java.awt.FlowLayout(0);
this.setLayout(menubarfl);
// add menu to menubar
javax.swing.JMenu File = new javax.swing.JMenu("File");
File.setPreferredSize(new Dimension(100, 25));
this.add(File);
// add menuitem to menu-File
javax.swing.JMenuItem open = new javax.swing.JMenuItem("open");
open.setSize(100, 25);
javax.swing.JMenuItem save = new javax.swing.JMenuItem("save");
save.setSize(100, 25);
javax.swing.JMenuItem exit = new javax.swing.JMenuItem("exit");
exit.setSize(100, 25);
File.add(open);
File.add(save);
File.add(exit);
//System.out.println("FILE按钮添加了");
javax.swing.JMenu about = new javax.swing.JMenu("about");
about.setPreferredSize(new Dimension(100, 25));
this.add(about);
//add menuitem to menu-about
javax.swing.JMenuItem aboutgame = new javax.swing.JMenuItem("aboutgame");
aboutgame.setSize(100, 25);
javax.swing.JMenuItem abouteditor= new javax.swing.JMenuItem("abouteditor");
abouteditor.setSize(100, 25);
about.add(aboutgame);
about.add(abouteditor);
//创建动作监听器,监听按钮aboutgame
ActionListener alis = new ActionListener(){
public void
actionPerformed(ActionEvent e){
javax.swing.JFrame aboutgame=new javax.swing.JFrame("about game");
aboutgame.setSize(300, 300);
aboutgame.setBackground(Color.blue);
javax.swing.JLabel jlab1=new javax.swing.JLabel("made by Ailse");
jlab1.setBounds(25, 25, 200,200 );
aboutgame.add(jlab1);
aboutgame.setVisible(true);
aboutgame.addActionListener(alis);
  效果图:
  二、监听
  监听时相应的,分为三个部分,和三块面板对应。如上图示。
  但是游戏面板的监听却放在了窗体类里了。
  // 创建并鼠标监听器,通过鼠标监听棋盘面板
FCChessplayfieldListener pillms = new
FCChessplayfieldListener(g, fccp,CCmark);
playfield.addMouseListener(pillms);
  这是因为,鼠标监听器需要画布,但画布的定义要在窗体可见后,而游戏面板却要在窗体定义时就要定义。所以只能放在窗体类中定义监听器。同样的问题出现在了窗体重绘时,这时调用了超父类的paint()方法-----super.paint();
  1、控制面板监听
  public void mousePressed(MouseEvent e) {
JButton btn = (JButton)e.getSource();
String command=btn.getActionCommand();
if(command=="rebegin"){
cp.remark();
cp.repaint();
if(command=="giveup"){
javax.swing.JOptionPane.showMessageDialog(jf2, "你太厉害了,甘拜下风啊!");
if(command=="undo"){
javax.swing.JOptionPane.showMessageDialog(jf2, "呵呵呵!下错位置了,我要悔棋!");
int x=0, y=0;
if(list.size()-1&1){
javax.swing.JOptionPane.showMessageDialog(jf2, "请按重玩按钮!!");
System.out.println(x+","+y+","+CCmark[x][y]);
//System.out.println("棋子数目:"+list.size());
System.out.println("重新标记棋盘了");
p=list.get(list.size()-1);
x=p.getx();
y=p.gety();
CCmark[x][y]=0;
list.delect(list.size()-1);
p=list.get(list.size()-1);
x=p.getx();
y=p.gety();
CCmark[x][y]=0;
list.delect(list.size()-1);
cp.repaint();
  对于重玩的实现,还是比较费力的。要想悔棋,就要让我们的计算机记得下棋的顺序和下的棋子的颜色。我用了一个棋子类将每放的一颗棋子的坐标和棋子颜色记录,然后用队列(大小可变数组)顺序存放这些棋子类的棋子对象。
  public class pill {
public pill(int x, int y, int color){
this.color=
public int getx(){
public int gety(){
  2、游戏面板监听
  public void mouseReleased(MouseEvent e) {
// 定义一个变量用于控制放置黑棋和白棋交替放置
// count为奇数时,黑棋下;count为偶数时,蓝棋下
x1 = e.getX();
y1 = e.getY();
// 通过count,判断黑棋行还是白棋行
if (count % 2 == 1) {
g.setColor(Color.BLACK);
} else if (count % 2 == 0) {
g.setColor(Color.blue);
// 判断点击位置是否在棋盘上
if ((x1 & 50 && x1 & 550) && (y1 & 50 && y1 & 550)) {
// 判断点击位置,并在离的最近的交叉点放置棋子
// FCCconfig.gsize:格宽;FCCconfig.CCPsize/2:棋半径;FCCconfig.gsize/2:格中间的位置
// x1,y1为鼠标按下处点的坐标
// x2,y2为离按下处最近的交叉点的坐标
if ((x1 % FCCconfig.gsize) & FCCconfig.gsize / 2) {
x2 = x1 - (x1 % FCCconfig.gsize) - FCCconfig.CCPsize / 2;
} else if ((x1 % FCCconfig.gsize) &= FCCconfig.gsize / 2) {
x2 = x1 + (FCCconfig.gsize - (x1 % FCCconfig.gsize))
- FCCconfig.CCPsize / 2;
if ((y1 % FCCconfig.gsize) & FCCconfig.gsize / 2) {
y2 = y1 - (y1 % FCCconfig.gsize) - FCCconfig.CCPsize / 2;
} else if ((y1 % FCCconfig.gsize) &= FCCconfig.gsize / 2) {
y2 = y1 + (FCCconfig.gsize - (y1 % FCCconfig.gsize))
- FCCconfig.CCPsize / 2;
i = x2 / FCCconfig.
j = y2 / FCCconfig.
if (CCmark[i][j] == 0) {
// 绘制棋子
g.fillOval(x2, y2, FCCconfig.CCPsize, FCCconfig.CCPsize);
CCmark[i][j] =
pill pill = new pill(i,j,t);
list.add(pill);
  棋子是通过在对应点画圆实现的。但是画圆时需要的参数是(x1,y1,height,wide),且x1,y1是圆外切矩形的左上顶点。而鼠标监听只能获得按下的点,且我们不是总能恰好按到那个点。于是我们就要得到棋盘上纵横线的交点。我选取了比较笨的方法,就是用小学数学加减乘除法,将点击时获取的点换算到我们需要的离其最近的交叉点。
  3、菜单栏监听
  操作较少,暂不赘述。
  三、判断输赢
  判断输赢放在了游戏面板监听器中。
  // 判断是否获胜
successcheck check=new successcheck( i, j, CCmark);
if (check.checkrow() &= 5 || check.checkrank() &=5
|| check.checkl() &= 5 || check.checkr() &= 5) {
if(CCmark[i][j]==1){
javax.swing.JOptionPane.showMessageDialog(jf, "黑方获胜了!!");
if(CCmark[i][j]==-1){
javax.swing.JOptionPane.showMessageDialog(jf, "蓝方获胜了!!");
  而判断方法则单另写了一个类,方便超找排错。而且分为了横、竖、左斜和右斜四个方法。以方便调用。
* 用于检验行
public int checkrow() {
int pcount = 1;// 定义一个棋子个数计数器
for (int i = x + 1; i &= CCmark. i++) {// 向右
if (i & 11 && CCmark[i][y] == CCmark[x][y]) {
for (int i = x - 1; i &= 0; i--) {// 向左
if (i & 11 && CCmark[i][y] == CCmark[x][y]) {
* 用于检验列
public int checkrank() {
int pcount = 1;// 定义一个棋子个数计数器
for (int i = y + 1; i &= CCmark. i++) {// 向下
if (i & 11 && CCmark[x][i] == CCmark[x][y]) {
for (int i = y - 1; i &= 0; i--) {// 向上
if (i & 11 && CCmark[x][i] == CCmark[x][y]) {
* 用于检验左斜线方向
public int checkl() {
int pcount = 1;// 定义一个棋子个数计数器
for (int i = x - 1, j = y - 1; i &= 0 && j &= 0; i--, j--) {// 向左上
if (CCmark[i][j] == CCmark[x][y]) {
// System.out.println(pcount);
for (int i = x + 1, j = y + 1; i & 11 && i & CCmark.length && j & 11
&& j & CCmark. i++, j++) {// 向右下
if (CCmark[i][j] == CCmark[x][y]) {
// System.out.println(pcount);
* 用于检验右斜线方向
public int checkr() {
int pcount = 1;// 定义一个棋子个数计数器
for (int i = x + 1, j = y - 1; i & 11 && i & CCmark.length && j &= 0; i++, j--) {// 向右上
if (CCmark[i][j] == CCmark[x][y]) {
// System.out.println(pcount);
for (int i = x - 1, j = y + 1; i &= 0 && j & 11 && j & CCmark. i--, j++) {// 向左下
if (CCmark[i][j] == CCmark[x][y]) {
// System.out.println(pcount);
  想要判断输赢,就要计算机可以记得棋盘上棋子的位置和颜色。所以,我选择了用二维数组存储这些信息,刚好下标可以存交叉点坐标,而数组的值也可以存棋子颜色,个人认为利用率比较高,比起用队列存,应该要方便些。
  四、配置类。
  经常玩游戏,知道可以设置许多的配置,原来,这就算配置类的图形化。这样在人性化和可移植性都比较好,所以也学来:
  public interface FCCconfig {
public final static int row = 11;// 棋盘的行
public final static int rank = 11;// 棋盘的列
public final static int CCPsize = 40;// 棋子直径
public final static int gsize = 50;// 格间距
public final static int x0 = 50;// 棋盘左边缘x坐标
public final static int y0 = 50;// 棋盘上边缘y坐标
public final static int ye = 550;// 棋盘下边缘y坐标
public final static int xe = 550;// 棋盘右边缘x坐标
// 定义一个二维数组用来标记下过棋的位置
public final static int[][] CCmark = new int[FCCconfig.row][FCCconfig.rank];
//定义一个队列用来记录棋子的情况
ListImp&pill& list=new ListImp&pill&();
  定义为接口确实调用也方便,修改也方便。
  我的收获:
  1、果然,好的框架结构,会为后面的开发提供莫大的方便。
  2、要充分理解各个类之间的结构,这样可以避免混乱和代码的重复。
  3、学会利用接口,和很有实际意义的Config类。
  4、数据结构这门课真是大有用处啊!好的结构不仅可以省下不少代码,还可以提高运行效率。
  5、罗马不是一天建成的。浮躁是我的弊病,只有一步一步的走才能爬上山,不要期望自己可以瞬间漂移到山顶,这只会是神话。空想主义者并不会比实干家过的好多少!
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
《PvP五子棋游戏的设计与开发毕业设计(论文)word格式》.doc 47页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:250 &&
《PvP五子棋游戏的设计与开发毕业设计(论文)word格式》
你可能关注的文档:
··········
··········
毕业设计论文题目:PvP五子棋游戏的设计与开发系部信息工程系专业09软件技术姓名学号xxxxxxx指导教师:XXXX2012年月日PVP五子棋游戏的设计与开发摘要五子棋作为一个棋类竞技运动,在民间十分流行,Java开发Socket编程应用,客户端和服务器端的交互用ClassMessage定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中来提高电脑棋手的智能估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高AI方案,如关键词:深度搜索估值AI;五子棋GobangJava-basedgamesdesignAbstractAsasport,gobangisverypopularincivil,inordertobecomefamiliarwithgobangrulesandtechniques,andthestudyofsimpleartificialintelligence,IdecidetousetheJavatodevelopegobanggamesandcompletethetwofunctionsincludingman-machinewarandman-manwar.NetworkConnectionisSocketProgrammingforsomeapplications,clientandserverinteractionisdefinitedbyClassMessage,whichisaverygoodscalability,Clientinterfaceisresponsibleforthecollectionandmaintenanceofuserinputinformation,anderrorhandling.Serverusersmaintainonlinebasicinformationandarbitrarytwo-timeusersofthechessboardofinformation,dynamicmaintenanceuserlist.Duringtheman-machineplayers,itimprovesintelligenceofthecomputerplayersthroughdepthsearchandvaluationmodule.AnalyzesModulevaluationofthepreciseelements,aswellasanumberofincreasedprecision,andcomparestheirsearchfornodes,whichraisessomecomputerAIprogramsonthebasisofanalysis,suchasrecursivealgorithm,computerlearning.Algorithmofprocedurescontributetotheunderstandingofthestructure,logicalthinkingability,Inotherareasofartificialintelligencehasgreatreferences.Keywords:SVComputerAI;GAlgorithm目录 第一章绪论 11.1 选题背景 11.2 本课题研究的意义 11.3 本课题的研究方法 2第二章课题相关基础 22.1 五子棋 22.1.1 棋盘和棋子 22.1.2 规则及解释 32.1.3 五子棋常用术语 42.1.4 五子棋攻防 6第三章Java 73.1 Java简介 73.2 Java开发环境 9第四章课题详细研究方法 104.1 程序结构说明 104.2 棋盘及棋子的类 104.2.1 棋盘 104.2.2 棋子 124.3 胜负判断条件 124.4 网络对战 144.5 电脑AI 16结论 21附录 22参考文献 40致谢 41 第一章绪论1.1选题背景五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英译为Renju,英文称之为Gobang或FIRFiveinaRow的缩写,亦有连五子、五子连、串珠、五目、五目碰、五格等多种称谓。五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终
正在加载中,请稍后...扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
C语言五子棋判断胜负。给个具体思路也行。我知道是要5个子同一列或同一行或同一斜线。。第1行输入两个数n和m,用空格分开,n为棋盘横纵坐标的最大值,m为步数:1
扫二维码下载作业帮
1.75亿学生的选择
给个思路吧:对每一条输入进行判断是否构成五连珠,也就是对每一条输入去搜索它的横竖斜三个方向去检查是否存在五个连续点。存储的数据结构使用二维数组即可,注意要区分双方的不同(可以奇数步使用0,偶数步使用1标记)。横方向即x不变,y增减;竖方向即y不变,x增减;斜方向有两个,一个是x,y同增减,另一个是xy增减相反。...
public static final boolean check(int []p1,int []p2) {
if (p1[0] == p2[0] || p1[1] == p2[1])
// 两个点的x坐标相同,则是一条垂直线
// 两个点的y坐标相同,则是一条水平线
对每一条输入进行判断是否构成五连珠,也就是对每一条输入去搜索它的横竖斜三个方向去检查是否存在五个连续点。存储的数据结构使用2维数组即可,先对于一个矩阵,将给出的点全部计入矩阵,每个点有3种情况(0为没用到,1为黑,2为白,,,就是开个map【x】【y】,对于每个点x,y给矩阵上的点赋值,初始为0),每记入一个点执行多方向搜索,搜到5个点停止执行输出,没找到就继续读入。...
为您推荐:
扫描下载二维码当前位置:
五子棋大师
更新时间:
软件大小:3.20MB
软件类型:国产软件
软件分类:
软件语言:简体
软件授权:免费软件
支持系统:
精品软件推荐
下载周排行
下载总排行
官方版v4.1.7.7116
官方最新v2.5.3.4138
官方客户端
官方最新版v3.7.0
v3.0官方最新版
2015正式版
v1.0.0.0 官方最新版
热门关键词
热门专题合集
  软件介绍:
  五子棋大师电脑版,计有世界比赛和区域比赛两种形态。无论何种比赛形态,玩家均必须和电脑控制的几位对手进行比赛,求取最佳名次,以打入排行榜。电脑控制的对手棋力和棋风各有不同,但整体而言,电脑对手的棋力均不低,适合喜欢五子棋游戏的玩家来玩
  游戏介绍
  五子棋之五子棋大师,精巧的单机版五子棋小游戏,是五子棋爱好者们感受五子棋乐趣的最佳选择。采用最先进的智能算法,具有相当的对弈水平。另有多种难度和让子设置,可增加对弈的趣味性。本版本包含了五子棋大师、人机对战五子棋2款最好玩的五子棋单机版游戏作品,更方便您在PC电脑上,在不需要联网的情况下体验五子棋的无限乐趣!
  五子棋单机版之人机对战五子棋,小巧精美的五子棋游戏,无需连网,无需安装.解压即可运行.绝对没有任何插件广告,病毒之类的,本人也是非常鄙视此类唯利是图的小人.我的这个小游戏采用C#.NET3.5开发.(所以要安装【.NET Framework3.5简体中文版】才能运行),本游戏介面美观大方,运行速度极快,使用简单,多种精美效果等你挖掘哦。还支持无限次反悔功能,可别小瞧它啊,电脑的棋力可不低哟...
  游戏截图
  禁手点
  五子棋一定要熟悉禁手点,这才是正解的,看完下面的应该是会了。
  一、禁手的定义:
  五子棋禁手----是指黑棋一子落下,同时形成三三、四四、长连,且没有形成五连,那么这个点就是禁手点,黑棋判负。而白棋是没有禁手的。
  二、从禁手的定义可以明确:
  1、只有黑棋才有禁手,白棋没有禁手。
  2、只要黑棋落子禁手点,不论是黑棋无意走出还是被迫走出,都会被判负。
  3、形成禁手的同时形成五连,则判五连为胜,不判为禁手。
  4、禁手包括三类:三三、四四和长连。
  三、禁手的注意事项:
  1、三三禁手中的&三&,是指&活三&。即至少要同时形成两个活三,如果同时形成两个以上的,也归在三三禁手这一类。
  2、四四禁手中的&四&,是指&能成五的四&,包括冲四和活四。即至少要同时形成两个&能成五的四&,如果同时形成两个以上的,也归在四四禁手这一类。
  3、长连禁手是禁手的一种,是指黑棋一子落下,形成六个或者六个以上的同色连续棋子,且没有形成五连。从理论上讲,长连禁手包括六长连,七长连,八长连和九长连四种。最长的长连是九长连,十长连是无法形成的。
  五子棋禁手判断练习题
  A:0个 B:1个 C:2个 D:3个
  A:0个 B:1个 C:2个 D:3个
  A:0个 B:1个 C:2个 D:3个
  A:0个 B:1个 C:2个 D:3个
  A:0个 B:1个 C:2个 D:3个
  A:0个 B:1个 C:2个 D:3个 E:4个
  规则:
  1、答题者请于本贴回复作答。只须写出题号及相应选择项即可。如: 01:A
  2、相关禁手的定义和类型附于题前,不明白的可以先看定义再做题。提醒大家做题时注意棋盘的边角问题。
  3、习题奖励:每回答对一题奖励中游币1000。
  4、习题答案于一周内公布于本贴1楼沙发,请注意查看。
  01. 1个,B点同时形成两个冲四,A、C点不是
  那么为什么A点C点不是禁手呢?
  我们先来看看A点。在A点的竖线方向形成了一个活四,也就是说下一步白棋无论档上还是档下都不能阻止黑棋成五。而在A点的横线方向黑棋也连成了四。但这个四是不能够成五取得胜利的。因为左端隔位的一颗黑棋注定了下一步只能形成六连禁手。根据禁手定义,不能成五的四不是真正意义上的四。所以A点的四四禁手是不成立的。
  同理,在C点竖线方向形成的四是一个上下端封闭的死四,也一样不能形成五连。所以C点的禁手也不成立。
  02. 1个,C点是三三,A、B点不是
  先说C点。C点同时形成了两个比较典型的活连三所以是禁手。可能有朋友会问C点横线右侧也有一黑子,会不会形成第一题那样的长连呢?其实仔细看一下就知道这个和第一题的B点不同,这个黑子是隔了两位,而且两端都没有白子。只要下一步黑棋走在左端不要走到A点上,就完全可以避开长连。所以这个三也是一个真正意义上的活三。
  再看A点。A点竖线上的活三没什么争议,但横线上的跳三就不同了。因为右方隔位黑棋的存在,这个跳三再走下去就会有长连的危险而不能形成五连,所以这个三并不是活三。因此A点不是三三禁点。
  再看B点。B点竖线上的跳三也是活三的形态之一,但在斜线上的连三就不同了。因为右端边线上白子的存在,加上上端黑棋也快到端线,两边端线使得这个三变成了眠三而不是活三,所以B点的禁手也不成立。
  03. 1个,C点是三三,A、B点不是
  我们来看看这一题。乍一看A、B、C点都同时形成了两个活三,那为什么只有C点是禁手点而A、B不是呢?
  先看A点。A点的竖线方向是一个活三,而横线方向形成的跳三因为C点的存在而变得复杂。因为这个C点同时也形成了两个活三,它也是一个禁手点。也就是说当A点在横线方向形成跳三时,因为C点是个禁点,所以这个跳三下一步不能够在C点形成连四。所以,横线方向的跳三是个假活三。根据禁手定义,三三禁手点的条件是形成两个或以上的活三。因此A点的禁手不成立。
  B点同理。
  再看C点。C点同时形成两个活三是显而易见的,且下一步无论是A点连四还是B点连四都没有禁手的困扰,所以C点的三三禁手是成立的。
  04. 1个,C点是三三,A、B点不是
  本题C点形成四三三,即一个斜线上的跳冲四和两个跳活三。根据禁手定义,只要形成两个活三就是禁手,所以C点是三三禁手点。
  来看A点。A点同时形成一个跳三和一个连三。连三没什么问题,但是这个横线上的跳三就有点问题了。因为下一步将会在C点形成两个四四,也是一个禁手点。和第三题一样,这个跳三不能形成连五的四,仍是一个假活三。所以反推过来,A点的禁不成立。
  B点与A点同理。
  05. 1个,B点既是三三又是长连,A、C点不是
  这道题有点意思,B点是个长连禁手点同时又是三三禁手点。根据禁手定义,只要同时形成两个活三或是两个可以成五的四或是长连的,都是禁手。所以B点毫无疑问是禁手。
  而对于A、C两点形成的表面三三而言,正因为B点的长连,使得竖线上的三都成了假活三,因此A、C点的禁手均不成立。
  06. 1个,C点是三三,其它不是
  应该说这道题是一道比较有争议的题,主要是针对成五与禁手的关系认定。
  根据禁手定义,成五最大。即当棋子连成五时,所有的禁手消失,棋局结束。因此,当A点成五,A点的三三禁手就不成立。
  B点的禁手确认是这道题的争议所在。B点同时在斜线与竖线方向形成两个三。其中斜线上的活三没有争议,竖线上的三到底是活三还是假活三呢?参考了一些老师关于类似问题的解答,这个活三不成立。为什么呢?因为当棋子落在A点时,横线上形成了五连,棋局结束,所以竖线上的四是没有机会成五的。因此这个三并不是真正意义上的活三。反推过来,B点的禁也就不成立了。
  C点是一个典型的三三禁手点,也是本题唯一的禁点。
  D点同时形成两个三。其中竖线上的跳三是活三。而斜线上的三因为右下端白棋的存在又变成了端线问题,与第二题B点同理。
  游戏术语
  对局相关术语
  〖黑方〗执黑棋一方的简称。
  〖白方〗执白棋一方的简称。
  〖胜局〗有一方获胜的对局。
  〖和局〗分不出胜负的对局。
  〖终局〗对局结束。
  〖复盘〗对局双方将本盘对局全过程的再现。
  行棋相关术语
  〖阳线〗即:直线,棋盘上可见的横纵直线。
  〖交叉点〗阳线垂直相交的点,简称&点&。
  〖阴线〗即:斜线,由交叉点构成的与阳线成45&夹角的隐形斜线。
  〖落子〗棋子直接落于棋盘的空白交叉点上。
  〖轮走方〗即&行棋方&,有权利落子的黑方或白方。
  〖着〗在对局过程中,行棋方把棋子落在棋盘无子的点上,不论落子的手是否脱离棋子,均被视为一着。
  〖回合〗双方各走一着,称为一个回合。
  〖开局〗在对局开始阶段形成的布局。
  〖连〗同色棋子在一条阳线或阴线上相邻成一排。
  〖长连〗五枚以上同色棋子在一条阳线或阴线上相邻成一排。
  〖五连〗只有五枚同色棋子在一条阳线或阴线上相邻成一排。
  〖成五〗含有五枚同色棋子所形成的连,包括五连和长连。
  〖四〗在一条阳线或阴线上连续相邻的5个点上只有四枚同色棋子的棋型。
  〖活四〗有两个点可以成五的四。
  〖冲四〗只有一个点可以成五的四。
  〖死四〗不能成五的四。
  〖三〗在一条阳线或阴线上连续相邻的5个点上只有三枚同色棋子的棋型。
  〖活三〗再走一着可以形成活四的三。
  〖连活三〗即:连的活三(同色棋子在一条阳线或阴线上相邻成一排的活三)。简称&连三&。
  〖跳活三〗中间隔有一个空点的活三。简称&跳三&。
  〖眠三〗再走一着可以形成冲四的三。
  〖死三〗不能成五的三。
  〖二〗在一条阳线或阴线上连续相邻的5个点上只有两枚同色棋子的棋型。
  〖活二〗再走一着可以形成活三的二。
  〖连活二〗即:连的活二(同色棋子在一条阳线或阴线上相邻成一排的活二)。简称&连二&。
  〖跳活二〗中间隔有一个空点的活二。简称&跳二&。
  〖大跳活二〗中间隔有两个空点的活二。简称&大跳二&。
  〖眠二〗再走一着可以形成眠三的二。
  〖死二〗不能成五的二。
  〖先手〗对方必须应答的着法,相对于先手而言,冲四称为&绝对先手&。
  〖三三〗一子落下同时形成两个活三。也称&双三&。
  〖四四〗一子落下同时形成两个冲四。也称&双四&。
  〖四三〗一子落下同时形成一个冲四和一个活三。
  战术相关术语
  〖风车轮〗指在一定区域内来回地绕着连续进攻的战术或技巧,就像一个风车轮一直在转着似的,这样的取胜方法也称之为&风车胜&。
  〖二头蛇〗指某一方以活三进攻时,无论对方防守于哪一头都难免被蛇头咬伤,因为此时的活三如同二头蛇一样,两头都有厉害的杀着。也称&两头蛇&。
  〖一子双杀〗一子落下同时形成两种取胜方法而对方无法同时防守的取胜技巧。
  〖一子多杀〗一子落下同时形成两种以上取胜方法而对方无法同时防守的取胜技巧。
  〖一子双防〗一子落下同时形成防守两种取胜方法的防守技巧。
  〖八卦阵〗以&日&字的一组对角点为棋型,互为马步的防守阵型。构成五子棋八卦阵。
  〖VCF〗英文 Victory of Continuous Four 的字头缩写,是利用连续不断地冲四这种绝对先手,直至最终取得胜利的战术技巧。
  〖VCT〗英文 Victory of Continuous Threat 的字头缩写,是利用连续不断地活三、冲四、做杀等先手,直至最终取得胜利的战术技巧。
  比赛相关术语
  〖个人赛〗计算个人成绩的比赛。
  〖团体赛〗计算运动队团体成绩的比赛。
  〖轮空〗赛制中部分选手直接从中间某轮开始参加比赛,某轮未比赛的安排就叫轮空。
  〖节〗一个比较集中的比赛单位时间(如一个上午或一个下午或一个晚上)称一&节&。
  〖轮〗参赛的各队(团体赛)或各名棋手(个人赛)普遍出场比赛一次(个别轮空者除外)称一&轮&。
  〖次〗团体赛中的同一轮两队之间完成的比赛称为一&次&比赛。
  〖场〗两名棋手之间完成的两局制或多局制的一次比赛称为一&场&比赛。
  〖局〗两名棋手之间完成的一盘比赛称为一&局&比赛。
  攻防攻略
  五子棋源于中国,后传入日本名为&连珠&。学从中国,传至中国。
  下五子棋须得法,法中变化有莫测;五子之变如水势,因势避高而趋下。战不过攻守,法不过奇正,奇正之法:往复循环,&不竭如江海,无穷如天地&。
  其祥法如下 :围、击虚、就实、寡众
  (围)由于五子棋源于围棋,故下五子棋若想立于不败之地,须以围棋之法行棋,说白了就是&包饺子&,试想:如果对方的棋子被围住了,左冲右突都不行,前闯后退更不见效,此时他心理极度郁闷,已无斗志,棋还能下好吗?只能是输的份了!!!此招用于防守。
  (击虚)兵法有云:&避实击虚&,下五子棋之精髓也在其理。不过此举贵在进攻,进攻若能攻其空虚之处,且得法,将会以迅雷不及掩耳之势而破竹将对手击败。此招用于进攻。
  (就实)老子《道德经》中讲了万物正反两个方面及消长之理,攻守亦不过如此,故有&避实击虚&则就有&就实让虚&。&就实让虚&就是对方往哪里走棋,咱就往哪里走棋,好比随形附影一般。这招要把握好火候,不能过度也不能失度,因为下棋很容易攻守易势(攻之极乃守时,守之极乃攻时;攻中生守,守中生攻),此招用于防守。 (寡众)《孙子●虚实》中曰:&&&。。。。。备前则后寡,备后则前寡,备左则右寡,备右则左寡,无所不备,则无所不寡&&。。。。。&此招用在五子棋中则反其道而行,则会收到意想不到的效果,具体招法是&堵了前面则堵后面,堵了后面则堵前面,堵了左边则堵右边,堵了右边则堵左边&,前后左右四面八方都堵,则对方则无路可逃,无棋可下!此招和(围)连用。无所不胜,用在防守。
  另外,有时在有计算的前提下,连续冲三、冲四(vct、vcf)有可能创造新的进攻机会;反之,一味的VC,只能迟滞败亡的步伐,反而使自己被&围&陷入铁桶阵(一般叫马桶阵)中。除了这些外,八卦阵是防守的无二秘宝,只是明八卦太过明显,因此暗八卦(用部分八卦点做主力,少量杂子作障眼)的功底就成了衡量技术的重要指标。
  残局技巧
  从取胜的途径来分类,五子棋的残局技巧可分为两类:四三取胜和抓禁手取胜。由这两类技巧又可派生出一子双杀,一子多杀,一子杀禁,VCF,VCT等等精妙的入局方式。
  一子双杀
  所谓&一子双杀&是指对局中出现一方有两个叫杀点(一般是有两个冲四活三点),而对方无法同时防守的情形。对局中,人们往往发现,并非每一步棋都必须是先手(特指活三或冲四)才能赢棋。有时候,某一步棋本身并不是先手,但是,有了这步棋,就出现了两个胜点或两种获胜着法,迫使对方来不及防守或无法防守而获胜,这就是&一子双杀&。可以说,&一子双杀&的技巧是五子棋技术的一层新阶梯,如果掌握了这种技巧,就表明了你的五子棋技术已经有一定的水平。
  一子双禁
  所谓&一子双禁&是指白方利用禁手的规则,通过一着妙棋使黑方陷入同时面临两个禁手点的困境,黑方将无法同时避免两个禁手点的情形。从另一种意义上说,这是白棋的一子双杀。
  一杀一禁
  所谓&一杀一禁&是指对局中出现白方有两个取胜点,其中一个为冲四活三叫杀,另一个为抓禁手取胜的棋形。
  一子多杀
  所谓&一子多杀&是指对局中出现一方有两个以上(如三个,四个或五个)的叫杀点,而对方无法同时防守的情形,其实质也是一子双杀。
  所谓必胜 &必胜&是指某一方行至某一手后,针对对方以后的每一个防点都有一套或一套以上的胜法的着,比一子多杀的范围广。
  所谓必败&必败&是指某一方行至某一手后,对方针对这一手拥有一套或一套以上的胜法的着。(本来不该录在这一段,但作为术语还是介绍一下)
  所谓VCT 英文Victory by Continuous Threat的缩写,不断利用冲四、活三、做杀等先手进攻最后取得胜利。
  所谓VCF是英文Victory of Continuous Four的缩写,亦称追四,即以连续不断的冲四取得胜利。VCF是五子棋残局和各种排局中一个非常重要的取胜技术。所以,学习并掌握VCF技术是对于提高五子棋爱好者的棋艺水平来说是十分重要的。五子棋排局是人为排列出来的局面习题。
  它虽然不是实战对局的产物,但是,其主题的构思往往接近于实战残局;而且,绝大多数是由字,数,形等图案构成的VCF练习题,给人以美的享受及解谜的魅力。精彩的排局和字谜往往构思精到深奥,变化引人入胜。拟制排局和拆解排局有助于锻炼全局观念和残局中攻击点的选择,培养思考和想像能力,有助于提高棋艺水平。
  自由取胜
  自由取胜,也就是复合取胜或混合取胜,利用一切手段,无论是活三,冲四,还是做杀,抓禁手等等方法,自由取得最后胜利的技术。最常见的自由取胜包括&风车轮&,&二头蛇&等等。
  所谓&风车轮&是指一种绕着进攻的战术或技巧,就像一个风车轮一直在转着似的,也有人称之为&风车胜&。
  所谓&二头蛇&是指某一方以活三进攻时
五子棋大师下载地址
Windows版下载
五子棋大师相关版本
下载之家是国内最值得信赖的官方软件下载资源提供商,提供安全无毒的绿色软件下载、手机软件下载、游戏下载等。高速安全的软件下载尽在下载之家!
Copyright &
下载之家 (). All Rights Reserved.

我要回帖

更多关于 黑白五子棋比赛 的文章

 

随机推荐