温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用java实现马踏棋盘游戏

发布时间:2022-02-14 14:34:57 来源:亿速云 阅读:171 作者:小新 栏目:开发技术

小编给大家分享一下如何使用java实现马踏棋盘游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

具体内容如下

在4399小游戏中有这样一个游戏

如何使用java实现马踏棋盘游戏

这是代码实现

package com.HorseChess; import java.awt.*; import java.util.ArrayList; import java.util.Comparator; import java.util.Scanner; public class HorseChess {     private static int X;     private static int Y;     private static boolean visited[];     private static boolean finished;     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         System.out.println("请输入行:");         X = sc.nextInt();         System.out.println("请输入列:");         Y = sc.nextInt();         System.out.println("请输入棋子所在行:");         int row = sc.nextInt();         System.out.println("请输入棋子所在列:");         int column = sc.nextInt();         int [][] chessboard = new int[X][Y];         visited = new boolean[X*Y];         traverchess(chessboard,row-1,column-1,1);         for(int[] rows : chessboard){             for (int step : rows){                 System.out.print(step + "\t");             }             System.out.println();         }     }     public static void traverchess(int[][] chessboard,int row,int column,int step){         chessboard[row][column] = step;         visited[row * X+column] = true;         ArrayList<Point> ps = next(new Point(column,row));         sort(ps);         while (!ps.isEmpty()){             Point p = ps.remove(0);             if(!visited[p.y*X+p.x]){                 traverchess(chessboard,p.y,p.x,step+1);             }         }         if(step<X*Y&&!finished){             chessboard[row][column] = 0;             visited[row * X + column] = false;         }         else {             finished = true;         }     }     //判断当前棋子下一个可以走的所有位置数组     public static ArrayList<Point> next(Point curpoint){         ArrayList<Point> ps = new ArrayList<Point>();         Point p1 = new Point();         if((p1.x = curpoint.x - 2)>=0&&(p1.y = curpoint.y - 1)>=0){             ps.add(new Point(p1));         }         if((p1.x = curpoint.x - 1)>=0&&(p1.y = curpoint.y - 2)>=0){             ps.add(new Point(p1));         }         if((p1.x = curpoint.x + 1)< X && (p1.y = curpoint.y - 2)>=0){             ps.add(new Point(p1));         }         if((p1.x = curpoint.x + 2)< X && (p1.y = curpoint.y - 1)>=0){             ps.add(new Point(p1));         }         if((p1.x = curpoint.x + 2)<X&&(p1.y = curpoint.y + 1)<Y){             ps.add(new Point(p1));         }         if((p1.x = curpoint.x + 1)<X&&(p1.y = curpoint.y + 2)<Y){             ps.add(new Point(p1));         }         if((p1.x = curpoint.x - 1)>=0&&(p1.y = curpoint.y + 2)<Y){             ps.add(new Point(p1));         }         if((p1.x = curpoint.x - 2)>=0&&(p1.y = curpoint.y + 1)<Y){             ps.add(new Point(p1));         }         return ps;     }     //使用贪心算法提高算法运行速度     public static void sort(ArrayList<Point> ps){         ps.sort(new Comparator<Point>() {             @Override             public int compare(Point o1, Point o2) {                 int count1 = next(o1).size();                 int count2 = next(o2).size();                 if(count1<count2){                     return  -1;                 }else if (count1 == count2){                     return 0;                 }                 else {                     return  1;                 }             }         });     } }

然后照着步骤一步一步下就可以了

如何使用java实现马踏棋盘游戏

以上是“如何使用java实现马踏棋盘游戏”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI