Java写一条吃满屏幕的贪吃蛇(A*自动寻路算法和一些简单的策略) 一

这篇博客介绍了作者使用Java编写贪吃蛇游戏的过程,重点在于实现A*自动寻路算法和一些简单的策略。游戏逻辑包括蛇的动态移动、食物检测与刷新、碰撞检测。作者计划在后续篇章中展示图形化界面,并探讨贪婪算法和A*算法,以使贪吃蛇能够自动吃满屏幕。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    一个月没有写博客,中间其实学了不少东西,因为是自学,所以进度很慢,同时在看Java核心技术还有李刚的疯狂Java,这两本书讲的很详细,另外也学着看一点源代码。特别是IO流的部分,类太多让人比较晕,一连学了快一个星期,看了一点源代码,最后才缕清了思路。

    之前学到list,发现这个ArrayList真是一个好东西,不用像数组一样预先要声明空间大小,可以动态的增长和缩减,可以保存任意类型的引用数据类型,当然基本数据类型可以自动拆装箱,所以也很方便。那一天学着学着突然福至心灵(没错就是这样),随手写了一个贪吃蛇,因为那一天在看内部类,匿名内部类这些知识。

    最开始的版本,就是一个控制台程序,思路是创建一个贪吃蛇类,贪吃蛇类里面有一个节点内部类,模拟贪吃蛇是有很多节点组成的,然后有一个食物类,只要保存食物的坐标系就好了。游戏流程是:贪吃蛇在一个范围内游走寻找食物,“吃”到食物后就将自身增加一个节点,当贪吃蛇吃满屏幕或者撞到障碍物(蛇自己和墙壁)游戏结束。

    首先要实现蛇的运动,其实就是改变蛇的每一个节点的坐标,蛇头往某一个方向前进一步(上下左右),蛇头后面一个节点的坐标更新为原来蛇头的坐标,第三节坐标更新成第二节的,第n节坐标更新为n-1节的坐标,这样蛇就移动啦,当然你也可以改进这个思路,比如蛇前进就在蛇的头节点前面增加一个节点,尾巴减少一个节点,减少一点运算量,当初没有想到,就用了最野蛮的一种方法,看官老爷见谅。

    那么蛇怎么吃东西呢?也很简单,分为三部分:1.检测到食物 2.蛇吃食物 3.刷新食物坐标         具体的实验细节,检测食物其实就是当蛇头部坐标和食物坐标重合的时候,我们认为找到了食物; 而吃到食物就是蛇这个类内部增加一个节点类对象,具体来说就是ArrayList 里面添加一个 节点对象; 刷新食物坐标只要用到random类就好了,但是注意的点是食物不能刷新到蛇身上去。

    最后检测蛇有没有撞到自己那就要遍历蛇身每一个坐标了,检测蛇头坐标有没有和蛇身重合,如果有那就是游戏结束,如果

没有游戏继续。以上主要分析给第一次写贪吃蛇的看官老爷听,实现的代码如下:

1.蛇简化版本:

package com.ycs.LinkList;

import java.util.ArrayList;
import java.util.Scanner;

public class Snake {
	/**
	 * 成员变量
	 * x:当前头部 x 坐标
	 * y:当前头部 y 坐标
	 * length:蛇的长度
	 * len:蛇能活动的区域长度
	 * width:蛇能够活动的区域宽度
	 * pace:蛇每一次前进的长度
	 * snake:模拟一条蛇
	 */
	private int x;
	private int y;
	private int length;
	private int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值