-
图文榜单
- 1.
甄子丹古天乐郑中基黄百鸣一起打麻将是哪部电影
- 2.
如何下西洋象棋
- 3.
怎样邀请好友下五子棋
- 4.
五子棋有多少个格子
- 5.
象棋的走法口诀
- 6.
象棋的子怎么走
- 7.
五子棋教程哪有
- 8.
五子棋开局怎么玩
急五子棋java程序最好能直接给我个工程
整理:yaobaiwang.com 时间:07月07日
[JAVA设计的五子棋源程序]java编写五子棋程序:import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.*; import java.util.*; class PaintPanel extends JPanel...+阅读
急五子棋java程序最好能直接给我个工程。能玩儿的
就是这个程序 把他变成五子棋程序 import java.awt.*;import java.awt.event.*;//创建棋盘的类class ChessPad extends Panel implements MouseListener,ActionListener{ int x=-1,y=-1,棋子颜色=-1; Button button=new Button("重新开局"); TextField text_1=new TextField("请黑棋下子"); TextField text_2=new TextField(); ChessPad() { setSize(440,440); setLayout(null); setBackground(Color.orange); addMouseListener(this); add(button);button.setBounds(10,5,60,26); button.addActionListener(this); add(text_1);text_1.setBounds(90,5,90,24); add(text_2);text_2.setBounds(290,5,90,24); text_1.setEditable(false);text_2.setEditable(false); } public void paint(Graphics g)//绘制棋盘外观 { for(int i=40;i=2) chesspad.remove(this); } } public class Chess extends Frame//添加棋盘窗口 { ChessPad chesspad=new ChessPad(); Chess() { setVisible(true); setLayout(null); Label label=new Label("单击左键下棋子,双击吃棋子,用右键单击棋子悔棋",Label.CENTER); add(label);label.setBounds(70,55,440,26); add(chesspad);chesspad.setBounds(70,90,440,440); addWindowListener(new WindowAdapter() { public void windowClosing (WindowEvent e){ System.exit...
高分五子棋源代码
/ 以及该行棋方向沿水平方向,垂直方向的步长。 / pos; pos.y -- 起点棋位(逆向数(不含当前棋子)的第4个棋位)的坐标y // + + + + + 1 + + + // 从当前棋子在行棋方向上起点棋位;testnum*2+1;/ Order -- 表示当前玩家的棋子标记。 int JudgeWinLine(int Order.y=-1; break; case 3;/ (testnum-1)*2+1 = testnum*2-1;i++)/*?。 if(count>,struct point Cursor.x>=0&pos.x
//.x-(testnum-1); /.y=1;/ direction -- 方向 // 如果棋位上没有该玩家棋子,既出现空位或对家棋子.x?i switch(direction) { case 0; pos:/*在左下至右上的斜方向*/.y=Cursor.y-(testnum-1); dpos; + + + + * + + + + / + + + + + + 2 + + /??:/*在水平方向*/ pos.x=Cursor;/ 所以,加上当前棋子;/ pos。循环次数应该为 testnum*2-1; Cursor -- 当前棋位坐标 /.x=0,按步长计算一次行棋方向上的新棋位坐标。
pos.x+=dpos.x; pos.y+=dpos.y; } return FALSE; } //.x -- 起点棋位(逆向数(不含当前棋子)的第4个棋位)的坐标x // { pos.x=Cursor,则连续棋子数清零。 } // } count=0; /// + + + + + + + 3 + //。 int count; 如果棋位上有该玩家棋子,则连续棋子数加一; break.x-(testnum-1).x=0.x=1:/*在垂直方向*/ pos.x=Cursor.x.x=Cursor.x-(testnum-1); pos.y=Cursor.y=Cursor.y-(testnum-1); dpos; 棋盘边界越界判断 { if(gChessBoard[pos.x][pos,需要判断的棋子次数等于 /,既逆向数(不含当前棋子)的第4个棋子)的坐标, /=18&pos.y>因为需要计算判断的范围是;*在垂直方向*/.y
用C语言在linux下编写一个五子棋程序!
五子棋的核心算法 五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置。说明五子棋程序的数据结构、评分规则、胜负判断方法和搜索算法过程。
一、相关的数据结构 关于盘面情况的表示,以链表形式表示当前盘面的情况,目的是可以允许用户进行悔棋、回退等操作。 CList StepList; 其中Step结构的表示为: struct Step { int m; //m,n表示两个坐标值 int n; char side; //side表示下子方 }; 以数组形式保存当前盘面的情况, 目的是为了在显示当前盘面情况时使用: char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE]; 其中FIVE_MAX_LINE表示盘面最大的行数。 同时由于需要在递归搜索的过程中考虑时间和空间有效性,只找出就当前情况来说相对比较好的几个盘面,而不是对所有的可下子的位置都进行搜索,这里用变量CountList来表示当前搜索中可以选择的所有新的盘面情况对象的集合: CList CountList; 其中类CBoardSituiton为: class CBoardSituation { CList StepList; //每一步的列表 char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE]; struct Step machineStep; //机器所下的那一步 double value; //该种盘面状态所得到的分数 }
二、评分规则 对于下子的重要性评分,需要从六个位置来考虑当前棋局的情况,分别为:-,¦,/,\,//,\\ 实际上需要考虑在这六个位置上某一方所形成的子的布局的情况,对于在还没有子的地方落子以后的当前局面的评分,主要是为了说明在这个地方下子的重要性程度,设定了一个简单的规则来表示当前棋面对机器方的分数。 基本的规则如下: 判断是否能成5, 如果是机器方的话给予100000分,如果是人方的话给予-100000 分; 判断是否能成活4或者是双死4或者是死4活3,如果是机器方的话给予10000分,如果是人方的话给予-10000分; 判断是否已成双活3,如果是机器方的话给予5000分,如果是人方的话给予-5000 分; 判断是否成死3活3,如果是机器方的话给予1000分,如果是人方的话给予-1000 分; 判断是否能成死4,如果是机器方的话给予500分,如果是人方的话给予-500分; 判断是否能成单活3,如果是机器方的话给予200分,如果是人方的话给予-200分; 判断是否已成双活2,如果是机器方的话给予100分,如果是人方的话给予-100分; 判断是否能成死3,如果是机器方的话给予50分,如果是人方的话给予-50分; 判断是否能成双活2,如果是机器方的话给予10分,如果是人方的话给予-10分; 判断是否能成活2,如果是机器方的话给予5分,如果是人方的话给予-5分; 判断是否能成死2,如果是机器方的话给予3分,如果是人方的话给予-3分。 实际上对当前的局面按照上面的规则的顺序进行比较,如果满足某一条规则的话,就给该局面打分并保存,然后退出规则的匹配。注意这里的规则是根据一般的下棋规律的一个总结,在实际运行的时候,用户可以添加规则和对评分机制加以修正。
三、胜负判断 实际上,是根据当前最后一个落子的情况来判断胜负的。实际上需要从四个位置判断,以该子为出发点的水平,竖直和两条分别为 45度角和135度角的线,目的是看在这四个方向是否最后落子的一方构成连续五个的棋子,如果是的话,就表示该盘棋局已经分出胜负。具体见下面的图示:
四、搜索算法实现描述 注意下面的核心的算法中的变量currentBoardSituation,表示当前机器最新的盘面情况, CountList表示第一层子节点可以选择的较好的盘面的集合。核心的算法如下: void MainDealFunction() { value=-MAXINT; //对初始根节点的value赋值 CalSeveralGoodPlace(currentBoardSituation,CountList); //该函数是根据当前的盘面情况来比较得到比较好的可以考虑的几个盘面的情况,可以根据实际的得分情况选取分数比较高的几个盘面,也就是说在第一层节点选择的时候采用贪婪算法,直接找出相对分数比较高的几个形成第一层节点,目的是为了提高搜索速度和防止堆栈溢出。 pos=CountList.GetHeadPosition(); CBoardSituation* pBoard; for(i=0;ivalue=Search(pBoard,min,value,0); Value=Select(value,pBoard->value,max); //取value和pBoard->value中大的赋给根节点 } for(i=0;ivalue) //找出那一个得到最高分的盘面 { currentBoardSituation=pBoard; PlayerMode=min; //当前下子方改为人 Break; } } 其中对于Search函数的表示如下:实际上核心的算法是一个剪枝过程,其中在这个搜索过程中相关的四个参数为:
(1)当前棋局情况;
(2)当前的下子方,可以是机器(max)或者是人(min);(3)父节点的值oldValue;(4)当前的搜索深度depth。 double Search(CBoardSituation& board,int mode,double oldvalue,int depth) { CList m_DeepList; if(deptholdvalue))== TRUE) { if(mode==max) value=select(value,search(successor Board,min,value,depth+1),max); else value=select(value,search(successor Board,max,value,depth+1),min); } return value; } else { if ( goal(board)<>0) //...
以下为关联内容:
谁能帮我写一个JAVA人人对战的五子棋java五子棋人机:package com.java.demo1; import javax.swing.* ; import java.awt.*; import java.awt.event.*;/** * 自定义五子棋棋盘面板类 * */ public class Gobang ext...
JAVA五子棋java五子棋程序解释:你好!这里有段五子棋程序的代码,希望对你有帮助! //wuziqi.java import java.applet.*; import java.awt.*; import java.awt.event.*; import java.applet....
五子棋JAVA怎么实现java编写五子棋程序:import java.io.*; public class Gobang{ //定义一个二维数组来充当棋盘 private String[][] board; //定义棋盘的大小 private static int BOARD_SIZE =...
漂亮的JAVA水晶五子棋java中的五子棋:import java.awt.*; import java.awt.event.*; class ChessPad extends Panel implements MouseListener,ActionListener { int x = -1, y = -1, chessColor...
java五子棋程序构想请帮修改下请帮修改下只要设计构想不爱java中的五子棋:之前跟楼主讨论过这个设计思路的问题,不过貌似楼主还是不太明白。对于楼主写的东西不能叫设计思路,仅仅是部分细节的半伪代码而已。一个设计思路最起码需要体现...
java五子棋java五子棋怎么判断输赢:我有82237475import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.util.*; class clientThread extend...
JAVA五子棋用到的知识点以及方法类有哪些java五子棋怎么判断输赢:我是把棋子放到2维数组里,1表示白旗,2表示黑棋,0表示空。判断输赢的话,只要判断数组有5个连续的数就行了,分为从上到下,从左到右,从左上到右下,从右上到左下...
一个五子棋游戏的java程序跪JAVA五子棋源代码:import java.awt.*; import java.awt.event.*; class ChessPad extends Panel implements MouseListener,ActionListener { int x = -1, y = -1, chessCo...
用简单的java语言编写五子棋有关五子棋的程序设计问题好的追加:import java.applet.*; import java.awt.*; import java.awt.event.*; import java.applet.applet; import java.awt.color; public class...