围住神经猫-Java源码Word下载.doc
- 文档编号:13073789
- 上传时间:2022-10-04
- 格式:DOC
- 页数:10
- 大小:74KB
围住神经猫-Java源码Word下载.doc
《围住神经猫-Java源码Word下载.doc》由会员分享,可在线阅读,更多相关《围住神经猫-Java源码Word下载.doc(10页珍藏版)》请在冰豆网上搜索。
intstatus;
//记录这个点的状态
//三个表征圆点状态静态常量
publicstaticfinalintSTATUS_ON=1;
//已经开启路障的状态
publicstaticfinalintSTATUS_OFF=0;
//代表灰色可走路径
publicstaticfinalintSTATUS_IN=9;
//猫当前的位置
//三个数字不同即可,具体用哪个数字无所谓
//指定X,Y坐标
publicDot(intx,inty){
super();
this.x=x;
this.y=y;
status=STATUS_OFF;
//当前状态为STATUS_OFF
//指定geter和sette方法
publicintgetX(){
returnx;
publicvoidsetX(intx){
publicintgetY(){
returny;
publicvoidsetY(inty){
publicintgetStatus(){
returnstatus;
publicvoidsetStatus(intstatus){
this.status=status;
//同时设置X,Y坐标的方法
publicvoidsetXY(intx,inty){
/*每一个点都是一个抽象的对象,需要把每一个点抽象为一个类,然后让每一个圆圈继承于这个类,
或者直接把它实现为这个类的实例。
每个点有三个状态:
灰色-猫可走的路径;
红色-路障且状态
无法改变;
黄色-猫当前的位置。
*/
Playground
importjava.util.HashMap;
importjava.util.HashSet;
importjava.util.Map;
importjava.util.Vector;
importandroid.R.integer;
importandroid.content.Context;
importandroid.graphics.Canvas;
importandroid.graphics.Color;
importandroid.graphics.Paint;
importandroid.graphics.RectF;
importandroid.view.MotionEvent;
importandroid.view.SurfaceHolder;
importandroid.view.SurfaceHolder.Callback;
importandroid.view.SurfaceView;
importandroid.view.View;
importandroid.view.View.OnTouchListener;
importandroid.widget.Toast;
publicclassPlaygroundextendsSurfaceViewimplementsOnTouchListener{
//界面的响应和界面的绘制在SurfaceView完成,触摸事件的响应通过OnTouchListener接口实现
privatestaticintWIDTH=40;
//元素的
privatestaticfinalintROW=10;
//行高:
每行储存10个元素
privatestaticfinalintCOL=10;
//列宽:
每列储存10个元素
privatestaticfinalintBLOCKS=15;
//默认添加的路障数量
privateDotmatrix[][];
//声明二维数组来存放点元素
privateDotcat;
//声明猫这个点
publicPlayground(Contextcontext){
super(context);
//使用Context创建当前类构造函数
getHolder().addCallback(callback);
//将Callback对象指定给getholder
matrix=newDot[ROW][COL];
//将行高,列宽传递进去,指定数组大小
for(inti=0;
i<
ROW;
i++){//循环添加数据
for(intj=0;
j<
COL;
j++){
matrix[i][j]=newDot(j,i);
/*X,Y坐标值和行列值是相反的。
即通过查找列值获得X坐标,查找行值获得Y坐标*/
}
}
setOnTouchListener(this);
//设定为自己的触摸监听器
initGame();
//调用游戏初始化
//坐标反转:
封装一个getDot函数实现X,Y坐标反过来传递,所有的操作通过X,Y调用
privateDotgetDot(intx,inty){
returnmatrix[y][x];
//判断猫是否处于边界
privatebooleanisAtEdge(Dotd){
if(d.getX()*d.getY()==0||d.getX()+1==COL||d.getY()+1==ROW){
returntrue;
//当前点的坐标无论是x或y为0,或x或y值是定义的游戏场景最大值时都处于边界
returnfalse;
//为每个点实现获取相邻点的方法
privateDotgetNeighbour(Dotone,intdir){//每个点都有6个相邻点
switch(dir){
case1:
returngetDot(one.getX()-1,one.getY());
//获得中心点左边相邻点
case2:
if(one.getY()%2==0){
returngetDot(one.getX()-1,one.getY()-1);
//奇数行获得中心点左上相邻点:
x-1,y-1
}else{
returngetDot(one.getX(),one.getY()-1);
//偶数行获得中心点左上相邻点:
y-1
case3:
//奇数行获得中心点右上相邻点:
returngetDot(one.getX()+1,one.getY()-1);
//偶数行获得中心点右上相邻点:
x+1,y-1
case4:
returngetDot(one.getX()+1,one.getY());
//获得中心点右边相邻点
case5:
returngetDot(one.getX(),one.getY()+1);
//奇数行获得中心点右下相邻点:
y+1
returngetDot(one.getX()+1,one.getY()+1);
//偶数行获得中心点右下相邻点:
x+1,y+1
case6:
returngetDot(one.getX()-1,one.getY()+1);
//奇数行获得中心点左下相邻点:
x-1,y+1
//偶数行获得中心点左下相邻点:
default:
break;
returnnull;
//中心点6个方向距离的判断与获取。
路径结束点为路障用负数表示,为场景边缘用正数表示
privateintgetDistance(Dotone,intdir){
// System.out.println("
X:
"
+one.getX()+"
Y:
+one.getY()+"
Dir:
+dir);
intdistance=0;
if(isAtEdge(one)){
return1;
//如果下一个点已在屏幕边缘,无需再判断
Dotori=one,next;
//定义ori和next,ori指定为当前函数传入的one
while(true){
next=getNeighbour(ori,dir);
if(next.getStatus()==Dot.STATUS_ON){
returndistance*-1;
//下一个点为路障的话,直接返回距离0
if(isAtEdge(next)){
distance++;
returndistance;
//下一个点为场景边缘时,距离+1并返回
distance++;
ori=next;
//下一个点既不是路障也不是场景边缘,距离自加并把当前的下一个点赋值成参考点ori
//实现猫移动到下一个点
privatevoidMoveTo(Dotone){
one.setStatus(Dot.STATUS_IN);
//one的状态设置为猫所处的点
ge
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 围住 神经 Java 源码