摇摆游戏攻略网

关闭导航
首页 > 棋牌益智 > 游戏攻略2

我想用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编一个五子棋但是不会编电脑下棋的代码了请高手指

搜索算法实现描述 注意下面的核心的算法中的变量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) //这里goal(board)0表示已经可以分出胜负 return goal(board); else return evlation(board); } } 注意这里的goal(board)函数是用来判断当前盘面是否可以分出胜负,而evlation(board)是对当前的盘面从机器的角度进行打分。 下面是Select函数的说明,这个函数的主要目的是根据 PlayerMode情况,即是机器还是用户来返回节点的应有的值。 double Select(double a,double b,int mode) { if(a>b & mode==max)¦¦ (a

java怎样写一个15 15的五子棋界面

没写15x15的,不能让你直接拿过去用 但是你可以该代码,就改数据就好。好歹学一点。下面是源码(面向过程的方法):package XYY;import tasks.MyJPane;import javax.swing.*;import java.awt.*;public class MyMain { public static void main(String[] args) { JFrame jf = new JFrame("五子棋"); jf.setVisible(true); jf.setBounds(100,100,500,535); jf.setResizable(false); jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE); MyJPanel jp = new MyJPanel(); jp.setBackground(Color.white); jf.add(jp); } static class MyJPanel extends JPanel { private int y=-50; private int x=0; Override public void paint(Graphics g) { super.paint(g); g.setColor(Color.black); for (int i = 0; i

就是用java用划线的方法画出一个14 14的五子棋盘只用画格子就

代码如下:

package com.lijie.test;

import java.awt.Graphics;

import java.awt.Point;

import javax.swing.JFrame;

public class JFrameTestor extends JFrame {

public JFrameTestor() {

setSize(480, 320);

setLocation(new Point(400, 150));

setVisible(true);

setResizable(false);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args) {

new JFrameTestor();

}

public void paint(Graphics g) {

for(int i = 30; i <= 310; i += 20) {

g.drawLine(i, 30, i, 310);

}

for(int i = 10; i <= 310; i += 20) {

g.drawLine(30, i, 310, i);

}

}

}

五子棋Java代码旁边就注释让我看的清楚明白一些要详细的解释

import java.applet.*; import t.*; import t.event.*; import java.applet.Applet; import t.Color; //这一段import就不说了,下面要用到的就import进来public class wuziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener //继承Applet表明是个applet,后面的接口必须要实现每个接口的所有方法{ int color_Qizi=0;//旗子的颜色标识 0:白子 1:黑子 int intGame_Start=0;//游戏开始标志 0未开始 1游戏中 int intGame_Body[][]=new int[16][16]; //设置棋盘棋子状态 0 无子 1 白子 2 黑子...

以下为关联内容:

谁能帮我写一个JAVA人人对战的五子棋java五子棋人机:package com.java.demo1; import javax.swing.* ; import java.awt.*; import java.awt.event.*;/** * 自定义五子棋棋盘面板类 * */ public class Gobang ext...

助高手一个C语言五子棋的代码C语言简单的五子棋:/* 程序中用到的库函数所在头文件应用 #include 命令包含进来 */ #include#include#include#include#include/*****************************************...

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...

一个五子棋人机对战c语言算法主要是电脑不知道怎么下棋设计的用C语言在linux下编写一个五子棋程序!objectMainextendsApp{ varreverse_pairs = 0//逆序数 defmsort[T](cmp:(T, T) =>Boolean)(l:List[T]):List[T] = { defmerge(l1:List[T...

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...

推荐文章