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

VIPJava写一条吃满屏幕的贪吃蛇(A*自动寻路算法和一些简单的策略) 二
上一篇文章介绍了一条贪吃蛇的简单实现,这一篇介绍贪吃蛇的自动寻路算法 ,说是自动寻路其实也就是一种遍历地图的算法,如果玩过游戏肯定知道游戏里面一般会有自动寻路功能,贪吃蛇的自动寻路算法也就是实现这个功能。下面慢慢介绍这种算法吧。    最开始,我没有在网上找资料的时候,我对于设计寻路算法的看法是遍历整个地图,将障碍物做上标记,然后找一条能够到达目的地的线路就可以了。所以最开始我用了特别暴力的方式来...
开通可读全文 ·3.6k 人阅读
最低0.47元/天 解锁文章

上一篇文章介绍了一条贪吃蛇的简单实现,这一篇介绍贪吃蛇的自动寻路算法 ,说是自动寻路其实也就是一种遍历地图的算法,如果玩过游戏肯定知道游戏里面一般会有自动寻路功能,贪吃蛇的自动寻路算法也就是实现这个功能。下面慢慢介绍这种算法吧。

    最开始,我没有在网上找资料的时候,我对于设计寻路算法的看法是遍历整个地图,将障碍物做上标记,然后找一条能够到达目的地的线路就可以了。所以最开始我用了特别暴力的方式来寻找路径--广度优先算法。简单的来说,所谓地图就是一个二维数组,行和列分别表示x,y轴,我们知道当我们新建一个对象的时候,系统会在堆内存开辟空间,并且赋予初始值,如果我们使用一个整形二维数组,那么当开辟空间的时候,数组每一个元素都会被默认初始值为0,那我们就可以用0表示地图某个位置没有障碍物,用1表示某个地方存在障碍物,在贪吃蛇游戏里面障碍物一般都是蛇的身体或者墙壁,我们很容易知道障碍物的位置,只要遍历蛇的每一个节点然后在地图上将相应节点位置标记为1就好了,这样子非障碍物的地方就是0,我们遍历地图,找到一条没有障碍物而且可以到达目的地的线路,就是自动寻路算法的目的。

    所谓广度优先算法,就是一种好听的名字,原理简单粗暴,不像一个真正的算法(鄙人个人看法,不严谨)。广度优先按照字面理解就是在起点处先找到所有的可以行走路径,然后再进行下一步‘与之相对的深度优先,就是在起点处先找到一条路径(一般有顺序的,比如说上左下右这样的顺序),走到黑,如果到达目的地就不找了,如果没有那么找下一条路径继续走到黑。

  贪吃蛇的寻路算法,如果是广度优先算法,那么我们只需要获得地图数组之后遍历蛇头部位置的上下左右,只要不是障碍物我们就记录下来,用堆栈或者简单点用一个ArrayList 1集合记录下来,我们记录的是蛇头上下左右 点在数组中的位置,因为这样比较方便我们继续寻找他们的相邻点;当我们记录下起点的相邻点后,就需要在负责记录的集合尾巴取出一个数据,我们遍历这一点的临近点,用新的ArrayList 2集合记录下来,我们要将ArrayList 1中的所有点都取出来找到相邻坐标,这是深度遍历应该做的——先找到当前所有能到达的点,在找下一层,就像水的涟漪,一层一层从起点

VIP Java写一条吃满屏幕的贪吃蛇(A*自动寻路算法和一些简单的策略) 一     一个月没有写博客,中间其实学了不少东西,因为是自学,所以进度很慢,同时在看Java核心技术还有李刚的疯狂Java,这两本书讲的很详细,另外也学着看一点源代码。特别是IO流的部分,类太多让人比较晕,一连学了快一个星期,看了一点源代码,最后才缕清了思路。    之前学到list,发现这个ArrayList真是一个好东西,不用像数组一样预先要声明空间大小,可以动态的增长和缩减,可以保存任意类型的... 开通可读全文·4.1k 阅读·3 点赞·12 收藏 阅读全文

相关推荐

贪吃蛇AI进阶:A*寻路与多策略决策层实战解析

路径规划是AI与游戏开发中的基础技术,而A*算法作为经典启发式搜索方法,常被用于静态地图的最短路径求解。但在贪吃蛇这类动态环境中,障碍物随蛇身移动,单纯依赖A*容易陷入局部死局。本文从路径规划概念出发,剖析A*寻路在动态场景下的局限性,并引入分层决策思想:通过决策层、规划层与执行层协同,结合食物可达性判断、尾巴逃生策略与巡游模式,让AI蛇在长身体的同时保持生存空间。文章以Java实现为例,涵盖Node节点设计、启发函数选择、性能优化与常见调试技巧,适合想要实践寻路算法或开发自动博弈程序的开发者参考。

weixin_28705087的博客 293

24个网页游戏源码解析:从入门到实战的游戏开发指南

游戏开发的核心在于理解其基础概念与实现原理。游戏循环是驱动游戏运行的心脏,它通过定时器或requestAnimationFrame不断更新游戏状态并重绘画面,这是实现动态交互的基础。碰撞检测则是游戏交互的关键技术,通过算法判断游戏对象间的接触,直接影响玩法和体验。掌握这些原理,对于构建流畅、响应迅速的游戏至关重要,其技术价值在于将抽象的游戏逻辑转化为可执行的代码框架。这些技术广泛应用于休闲益智、动作街机、策略模拟等多种游戏场景。本文通过剖析24个涵盖贪吃蛇、俄罗斯方块、打飞机等经典游戏的源码,深入讲解游戏循

weixin_30385925的博客 840

游戏开发技术栈选型指南:从PyGame到Unity的实战解析

游戏开发技术栈的选择是项目成功的关键基础,它决定了项目的性能、可维护性和跨平台能力。从原理上看,技术栈通常围绕渲染管线、物理引擎和资源管理三大核心模块构建,通过不同的抽象层级为开发者提供生产力工具。其技术价值在于平衡开发效率与运行时性能,使开发者能够专注于游戏逻辑而非底层实现。在应用场景中,轻量级框架如PyGame适合快速原型和2D小游戏,而Unity等工业级引擎则胜任复杂3D项目和多平台发布。本文结合开源游戏克隆项目实践,深入分析PyGame与Unity在性能优化、代码结构方面的差异,为开发者提供从需求分

weixin_30512089的博客 408

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 07 堆、栈、表、矩阵、集合、队列、数组、字符串、树、图、动态规划、结构体、元组的算法01

当前段必须包含所有字符的最后出现位置。1. 字符串分割成最多片段2. 基因序列功能域划分3. 文本段落划分4. 音频声道分离5. 图像色彩分区6. 社交网络社群划分7. 蛋白质结构域8. 音乐乐章分段9. 代码模块划分10. 章节划分特征:一次扫描,贪心确定边界。

weixin_49199313的博客 1251

自动寻路贪吃蛇,A星算法

全自动贪吃蛇,食物会逃跑,蛇会追踪食物,编译环境VC++6.0。

从Si3N4到SiNx:一文搞懂芯片制造中氮化硅的化学式玄机(附工艺参数影响)

本文深入探讨了芯片制造中氮化硅(SiNx)化学式的调控艺术,揭示了从Si3N4到SiNx的转变如何影响材料性能。通过分析PECVD和PVD工艺参数对x值的精确调控,以及x值对电学和机械性能的影响,为半导体制造提供了实用的工艺优化策略。

weixin_30776273的博客 185

STM32 使用IO口模拟I2C时序

上一篇《I2C协议详解》 我们了解了I2C的操作流程,这一篇,我们就使用I2C,来对EEPROM进行操作吧。 我们做两种选择: 1.时序由IO口模拟高低电平,需要了解协议并按照协议操作相应的IO口。 2.时序由硬件自行产生,不需要人工干预; 由硬件产生的I2C时序,我们借助Stm32Cube配置实现便可,我们这一篇,抛开Stm32Cube,手撕代码,根据I2C的时序,一步步地实现I2C对...

8932

GMSL2摄像头接入避坑指南:从FMC子卡配置到V4L2调用的完整流程(附Ubuntu20.04实测)

本文详细解析了GMSL2摄像头接入的全流程,从FMC子卡配置到V4L2调用的完整指南。基于XC7Z100平台实测经验,提供了硬件选型、带宽优化、Linux驱动配置及高分辨率采集的实战技巧,帮助开发者规避常见问题,提升系统稳定性与性能。

weixin_33737774的博客 412

案例分析|一篇文章带你看懂养鸡场智慧管理系统

养鸡场智慧管理系统是为了满足现代化养鸡业对精细化管理的需求而设计的一款专业软件。随着科技的发展和农业产业的升级,传统的手工记录和管理方式已无法满足高效、准确和实时的数据跟踪需求。本软件旨在通过集成各种功能模块,帮助养鸡场主实现从鸡苗孵化、饲养管理、饲料控制到销售结算等全链条的智能化操作。该系统的核心目标是提升养鸡场的运营效率和盈利能力,通过自动化数据处理,减少人工误差,节省时间和精力。例如,孵化报表和记录模块可以帮助管理者实时监控孵化过程,及时调整策略;

muyu2980的专栏 920

NTU RGB + D 120 动作识别数据集 描绘骨架(python)

“ NTU RGB + D”和“ NTU RGB + D 120”。 “ NTU RGB + D”包含60个动作类别和56,880个视频样本。 “ NTU RGB + D 120”通过添加另外60类和另外57,600个视频样本来扩展“ NTU RGB + D”,即“ NTU RGB + D 120”总共有120类和114,480个样本。 这两个数据集都包含每个样本的RGB视频,深度图序列,3D骨骼...

单线程的Daniel的博客 1万+

极路由 极1s J1S hc5661 刷padavan固件

极路由1S刷机指南 准备工作: 下载Breed不死固件 通过WinSCP上传或直接wget获取 执行mtd命令写入Breed 关键步骤: 进入Breed控制台(按住Reset键开机) 备份原厂固件和密钥 下载Padavan固件(RT-N14U-GPIO-12-xiaodu-ji1S-128M.trx) 刷机过程: 在Breed控制台更新固件 等待自动重启完成 初始设置: 管理地址:192.168.123.1 默认账号:admin/admin 无线名称:PCDN 无线密码:1234567890 注意事项:切勿

SimonLiu的博客 1293

修复后找不到ip 黑群晖_黑群晖引导U盘损坏了怎么办?

前言虽然一般来说引导U盘损坏的可能性很小,但是避免不了万一出现问题导致黑群晖没有办法引导进入系统也是一件相当麻烦的事情。这里我就用两块U盘做个小试验,看看如果黑群晖上的引导U盘损坏以后,另一块U盘需要怎样写引导文件才能让黑群晖正常引导进入系统。试验开始我这里黑群晖使用的是DSM6.1.7的系统,U盘一块使用的是闪迪的酷豆,另一块就是闪迪的酷铄。目前系统引导U盘使用的是酷豆,VID:0781 PID...

weixin_36239323的博客 8260

人工智能训练师三级考试题型全解析|190道真题样例+30天备考路线

人工智能训练师三级考试并不神秘:理论考190道选择题(刷题就能过),实操考代码+方案设计(练练就会)。核心是花时间——30天系统备考,足以从容通过。如果你想从零开始系统备考,覆盖所有考点和实操技能,欢迎查看我的专栏:📖《人工智能训练师三级·从零到拿证完全指南》80篇系统化内容,覆盖报名、备考、冲刺、拿证全流程六大模块知识点逐个击破,每个考点都讲透实操代码题手把手教学,附带完整参考代码高频考点速记 + 易错题精讲 + 3套模拟试卷30天备考计划 + 冲刺复习策略。

白话机器学习 6015

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —
sober_yang
博客等级 码龄12年 17粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值