如何使用java实现马踏棋盘游戏
小编给大家分享一下如何使用java实现马踏棋盘游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
具体内容如下
在4399小游戏中有这样一个游戏
这是代码实现
packagecom.HorseChess;importjava.awt.*;importjava.util.ArrayList;importjava.util.Comparator;importjava.util.Scanner;publicclassHorseChess{privatestaticintX;privatestaticintY;privatestaticbooleanvisited[];privatestaticbooleanfinished;publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.println("请输入行:");X=sc.nextInt();System.out.println("请输入列:");Y=sc.nextInt();System.out.println("请输入棋子所在行:");introw=sc.nextInt();System.out.println("请输入棋子所在列:");intcolumn=sc.nextInt();int[][]chessboard=newint[X][Y];visited=newboolean[X*Y];traverchess(chessboard,row-1,column-1,1);for(int[]rows:chessboard){for(intstep:rows){System.out.print(step+"\t");}System.out.println();}}publicstaticvoidtraverchess(int[][]chessboard,introw,intcolumn,intstep){chessboard[row][column]=step;visited[row*X+column]=true;ArrayList<Point>ps=next(newPoint(column,row));sort(ps);while(!ps.isEmpty()){Pointp=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;}}//判断当前棋子下一个可以走的所有位置数组publicstaticArrayList<Point>next(Pointcurpoint){ArrayList<Point>ps=newArrayList<Point>();Pointp1=newPoint();if((p1.x=curpoint.x-2)>=0&&(p1.y=curpoint.y-1)>=0){ps.add(newPoint(p1));}if((p1.x=curpoint.x-1)>=0&&(p1.y=curpoint.y-2)>=0){ps.add(newPoint(p1));}if((p1.x=curpoint.x+1)<X&&(p1.y=curpoint.y-2)>=0){ps.add(newPoint(p1));}if((p1.x=curpoint.x+2)<X&&(p1.y=curpoint.y-1)>=0){ps.add(newPoint(p1));}if((p1.x=curpoint.x+2)<X&&(p1.y=curpoint.y+1)<Y){ps.add(newPoint(p1));}if((p1.x=curpoint.x+1)<X&&(p1.y=curpoint.y+2)<Y){ps.add(newPoint(p1));}if((p1.x=curpoint.x-1)>=0&&(p1.y=curpoint.y+2)<Y){ps.add(newPoint(p1));}if((p1.x=curpoint.x-2)>=0&&(p1.y=curpoint.y+1)<Y){ps.add(newPoint(p1));}returnps;}//使用贪心算法提高算法运行速度publicstaticvoidsort(ArrayList<Point>ps){ps.sort(newComparator<Point>(){@Overridepublicintcompare(Pointo1,Pointo2){intcount1=next(o1).size();intcount2=next(o2).size();if(count1<count2){return-1;}elseif(count1==count2){return0;}else{return1;}}});}}
然后照着步骤一步一步下就可以了
以上是“如何使用java实现马踏棋盘游戏”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。