189 8069 5689

简易跳棋java代码 c语言跳棋

用C++解跳棋问题的代码

可以采用广度优先搜索,程序如下:

沂南网站建设公司创新互联,沂南网站设计制作,有大型网站制作公司丰富经验。已为沂南近1000家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的沂南做网站的公司定做!

#include iostream

#include string

#include algorithm

#include set

#include queue

using namespace std;

struct node{

string str, step;

node(){}

node(string str, string step = ""): str(str), step(step){}

};

int main(){

string start = "0111222", dest = "2221110";

node n;

queuenode Open;

setstring Close;

Open.push(node(start));

while(1){

n = Open.front();

Open.pop();

Close.insert(n.str);

if(n.str == dest)break;

int l = n.str.find("0");

for(int i=-3; i=3; i++){

if(!i || l+i0 || l+i=dest.size())

continue;

string s(n.str);

s[l] = s[l+i];

s[l+i] = '0';

if(Close.find(s) == Close.end())

Open.push(node(s, n.step + char('0'+l+i) + " "));

}

}

cout  n.step;

}

程序输出:

1 4 2 5 6 3 0 2 5 6

// 表示每一步移动哪个棋子,最开始棋子编号0

算法优化:可考虑使用A*算法进行启发式搜索

JAVA编写一个简单的跳棋游戏

import java.awt.*;

import javax.swing.JFrame;

public class JumpChess extends JFrame{

public JumpChess(){

setSize(800,800); setVisible(true);

setBackground(Color.pink);

}

public void paint(Graphics g){ g.setColor(Color.gray); int x=290; int y=140; int x1=330;

for(int row=1;row13;row++){ g.drawLine(x,y,x1,y);

x=x-20;

x1=x1+20;

y=y+30;

System.out.println(); }

int x2=110; int y2=230; int x3=90; int y3=260;

for(int row=1;row13;row++){ g.drawLine(x2,y2,x3,y3); x2=x2+40; x3=x3+20; y3=y3+30;

System.out.println();

}

int x4=510; int y4=230; int x5=530; int y5=260;

for(int row=1;row13;row++){ g.drawLine(x4,y4,x5,y5); x4=x4-40; x5=x5-20; y5=y5+30;

System.out.println();

}

int x6=510;

Java跳棋算法问题

这个其实和五子棋 象棋的寻址区别不大,都是最佳算法

其实主要看搜索深度的,我以前自己做过五子棋和象棋的java版本

有很多算法实现 你用alpha beta或者置换表都可以

验证做好的是最忧搜索+置换表+历史启发,现在不写那些了 代码不好找 你去网上搜索五子棋人工智能就应该有


本文标题:简易跳棋java代码 c语言跳棋
标题链接:http://cdxtjz.cn/article/hpsjhd.html

其他资讯