贪吃蛇

/*蛇:
    属性:节点,长度,运动的方向,生长的标记;
    方法:构造一条蛇,移动,改变方向
食物:
    属性:颜色,横坐标,纵坐标;
    方法:初始化食物
网格:
    属性:行,列,格子大小,背景的颜色;
    方法:初始化;
游戏:
    属性:蛇,食物,网格,蛇的移动速度,串口,画布,绘画对象

    方法:判断是否能吃到自己   ,判断是否撞到墙,化蛇,画食物,画网格

    节点:行,列

Rows =6,cols=5,color:yellow;

   随机出现,不能与蛇重叠。

 

蛇的初始化:direction = down;

 

    [{row=3,cols=5},{row=3,cols=4},{row=3,cols=3}]

Color:green

蛇的移动:改变移动方向,生长。

网格的初始化:row=25,cols=30,color=black;

 

游戏的初始化:

       移动蛇,改变蛇的移动方向,初始化蛇,初始化事物,初始化网格,回执,蛇,事物,网格。开始游戏

 

作业:画边框

 

比较两个点,只需输入一个参数。

This,可作为另一个参数。

举例:public booleanmeetGrid(Node node){
    return  node.row < 0 || node.row > 23 ||
            node.col < 0 ||node.col> 23;
}

说明,判断出来是真返回真,不是直接可以返回判断的那个条件。

 

 

 

 

Question:按顺(逆)时针连按3个,就直接咔嚓了

/**
 * 判断蛇头能不能碰到自己
 * @param node舌头节点
 * @return true-碰到了   false- 没碰到
 */

public  boolean Eatself(Nodenode) {
   
for (int i= 1; i < body.size(); i++){
       
if (body.get(i).row ==node.row && body.get(i).col ==node.col)
           
return true;
   
}
   
return false;
}

解决思路:

在键盘监听的switch里输出每次按键后的头结点。看看是不是头结点或者body发生了变化。

发现原因:解释如下:

       蛇头改变方向的监听如下:

case 39:if(snake.getDirection()!= Snake.LEFT)
           
snake.setDirection(Snake.RIGHT);
    System.out.println("链表的第一个元素是 : " + snake.getBody().getFirst().row+","
           
+snake.getBody().getFirst().col);
break;

 

我只设置了不能直接从left->right,但是如果

先按up,再按right,就实现了从left方向到right方向

 

此时,蛇的下一个节点与蛇身碰到一起,因而游戏结束。

解决办法:

Public 1

定义一个新方向direction1为空,每次键盘键入就给新方向赋值。

在线程里将direction1赋值给direction.direction1设置为空。

用方向的十进制值进行判断。

增加: 积分,蛇头,加速。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值