程序员自己的定位以及怪物追踪寻路AI (转)

2023-05-16

先从程序员的思想定位开始.程序员是什么,其实我们不是什么高深摸测的数学家,能使用多少种算法,能把计算机玩得那么厉害,其实程序的本质就是一个翻译者,是一个将人类的行为描述成计算机语言的翻译者.在这个解释里面,有一个根本的定位,就是计算机从属于人类思想!而现在的程序员,大部分习惯使用计算机思想去思考一个问题,当这些程序员看到需求的时候,他们脑子里面第一反映出来的是各种算法,比如说一看到寻路,脑子里面就出现A*两个字,然后就是"可靠" "消耗资源巨大"等一系列字眼,然后就会在这些字眼里面苦苦最求最完美的方案.

但是,第一,我们只是人类的行为的计算机翻译者;第二,从以上观点出发,计算机的算法首先来自于人类的思想;所以,在我们面对需求的时候,为什么不先把自己代入实际环境中,问问人是怎么完成的,当你在各种算法之中苦苦追求完美的时候,为什么不问问自己,如果你在当时的环境下,是否能做到如此完美,如果连人都做不到,为什么要求计算机能完成呢?

罗嗦的话说完,我说说现实中的两个例子

洗牌

要 用程序实现洗牌功能,而且每次洗牌以后扑克牌的顺序不能一样。我想一搬程序员刚开始看到这个题目,基本上会这样想,建立一个数组,然后逐个给数组的成员赋一随即值,这个值是 52个扑克牌之一,而且不与之前数组成员的值相同了,还要考虑花啊、大王小王等情况,于是大家的头都开始痛了

但是在现实里面洗牌,我们好象不会头痛吧。那我们现实中是怎么洗牌的?首先我们要有一副牌!然后用各种手段将扑克牌的位置打乱,所谓打乱其实就是改变了牌之间的位置,那么我们程序中只要老老实实地翻译这个行为就可以了,首先建立一个定长数组,然后将扑克牌按照顺序逐个赋值到数组里面去,然后使用随机数抽取两个下标,将两个下标下的数据成员的值调换,多调换几次就完成洗牌了,是不是很简单?

怪物寻路追踪

一般的想法,如果要可靠地让怪物可以饶过所有障碍,不断地追踪玩家,就要不断地使用A*算法,如果一台服务器上的怪都这样做的话,我想这个服务器起码要使用100年后的超前技术才行

如果你去追一个人,你怎么追的?首先,你要看到你的目标,然后你向着目标冲过去,如果目标躲起来了,你是不是会先跑到目标消失前一刻的位置?如果在那里你找不到目标,你就只好作罢了,如果看见目标,那你可以继续追,所以我的怪物AI可以表示成下面


traget curTraget , lastTraget ;
if( lenth( monsterPos - playerPos ) < accackRadius )
{
           if( isBlock( monsterPos ,playerPos  ) ) //玩家与怪物之间的直线上存在障碍
           {
               monster.curTraget = lastTraget ;
           }else
           {
               lastTraget = curTraget ;
               monster.curTraget = playPos ;
           }
}
  

一段不仑不类的伪代码,希望大家能看懂,而且这个东西暂时只是个大方向,还有很多要改善的地方,也有很多条件没有考虑,希望大家多给意见

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

程序员自己的定位以及怪物追踪寻路AI (转) 的相关文章

  • 基于FPGA的7x7矩阵求逆verilog开发

    up目录 一 理论基础 二 核心程序 三 测试结果 一 理论基础 nbsp nbsp nbsp nbsp 矩阵运算在科学计算 数字信号处理和图像处理等领域有着广泛的应用 上述应用领域的实时性要求很高 因此如何快速实现矩阵运算具有重要的意义
  • 程序员的几个建议

    注 xff1a 感觉这个文章说的挺有指导意义 每年都有无数年轻程序员 xff0c 加入软件行业 他们在学校里学过编程 xff0c 但是对这个行业的现实一无所知 Patrick McKenzie是美国一家小软件公司的老板 xff0c 他写了一
  • 工程师必备串口数据截取工具modbus命令分析串口数据分析

    工程师必备串口数据截取工具modbus命令分析串口数据分析 主要功能 xff1a 支持监控COM端口类型 xff1a 标准电脑端口 xff0c 内核虚拟COM端口 xff0c USB转串口等 xff1b 可以实时监控并采集串口数据 xff1
  • VINS-mono的编译与运行

    简介 xff1a VINS mono是香港科技大学一个计算机视觉实验室的科研结果 xff0c 是要是基于单目视觉惯性里程计的一个slam系统 xff0c 整个项目都是内嵌于ros 非常感谢这群勤劳刻苦创新的研究者开源了这个项目 在此我记录下
  • C ++ 函数在头文件中定义,结果编译时出现重定义

    场景 xff1a 这种情况和头文件宏定义无关 xff0c 一般发生在编译完成链接的时候 xff1b 注 xff1a 头文件宏定义如下图 xff0c ifndef HEAD H 如果没有定义这个宏 define HEAD H 定义这个宏 h头
  • 单片机开发用到的intrins.h文件

    intrins h文件内容如下 xff1a ifndef INTRINS H define INTRINS H extern void nop void extern bit testbit bit extern unsigned char
  • 自动驾驶路径规划——基于MATLAB的栅格地图

    目录 前言 1 什么是栅格地图 xff1f 1 1栅格地图用于路径规划的优势 xff1a 2 MATLAB栅格地图的绘制 MATLAB代码 声明 前言 这个学期学校开设了相应的课程 xff0c 同时也在学习古月居机器人学系列的 基于栅格地图
  • 自动驾驶路径规划——A*(Astar)算法

    目录 1 最佳优先搜索 xff08 Best First Search xff09 1 1 最佳优先搜索的过程 2 A Star算法2 1 Astar算法所属分类2 2 Astar算法基本概念2 3 启发函数单调性的推导2 4 设计代价函数
  • vscode 出现“identifier “cout“ is undefined“或“未定义标识符cout”

    vscode 出现 34 identifier cout is undefined 34 或 未定义标识符cout 最近想学C 43 43 xff0c 然后就从通读C 43 43 Primer Plus开始 xff0c 结果出师未捷身先死
  • 【网络通信】关于TCP阻塞和非阻塞方式的总结

    关于TCP阻塞和非阻塞方式的总结 1 引言 在网络编程时 xff0c 我们需要注意创建的socket是阻塞状态还是非阻塞状态的 xff0c 这两种状态在编程时 xff0c 对于每一个socket系统调用函数 xff08 connect se
  • c语言中return返回值的用法总结

    return返回值的意义就是把return lt 表达式内容 gt 返回给调用return的函数 例如 xff1a void test int i int j xff5b return i 43 j printf 34 不会被执行的语句 x
  • UART、RS232、RS485、I2C和SPI的介绍

    基本知识 串行通信 xff1a 多个数据通过一条数据线 xff0c 依次传输并行通信 xff1a 多个数据通过多条数据线 xff0c 一次性传输单工通信 xff1a 只能接收数据或者发送数据 xff08 遥控器 收音机 xff09 半双工通
  • 【MATLAB教程案例97】基于GA遗传优化的CNN卷积神经网络最优训练参数搜索matlab仿真

    欢迎订阅 FPGA学习入门100例教程 MATLAB学习入门100例教程 目录 1 软件版本 2 理论概述 3 matlab仿真
  • 【读书笔记】-《华为-C语言编程规范》

    前言 作为程序开发者 xff0c 避免不了阅读别人代码 xff0c 那么就会涉及到到一门语言的编程规范 规范虽然不是语言本身的硬性要求 xff0c 但是已经是每一个语言使用者约定俗成的一个规范 按照编程规范编写的代码 xff0c 至少在代码
  • UART概述(下)

    目录 IntroductionFunctional OverviewOverviewFunctional descriptionOperation Introduction UART作为一个连接到APB的AMBAslave模块 xff0c
  • sprintf,你知道多少?

    选自 CSDN 社区电子杂志 C C 43 43 杂志 http emag csdn net 2005 年1 月 总第1 期 93 本文作者 xff1a steedhorse xff08 晨星 xff09 printf 可能是许多程序员在开
  • 1315 - 遥控飞机争夺赛

    红太阳杯遥控飞机大赛拉开帷幕 比赛规则为 xff0c 每位选手让自己的飞机从起点到终点飞行 55 次 xff0c 组委会记录 55次的飞行的成绩之后去掉一个最大成绩 一个最小成绩后计算剩余 33 个成绩的平值 xff08 平均分保留 33
  • TS — 枚举的基础应用,const,declare关键字的使用

    在 TypeScript 中 xff0c 枚举 xff08 Enum xff09 是一种可用于定义一组具有名称和值的常量的数据类型 它们允许我们定义一组命名常量 xff0c 而这些常量的值可以是数字 xff0c 字符串或任何其他数据类型 枚
  • C标准、C标准库、C++标准、C++标准库

    1 C标准 C标准主要有三个版本 xff1a C89 C99 C11 xff0c 他们之间的关系可以借用这张图来表示 xff1a C 标准主要由两部分组成 xff1a 描述C的语法 xff0c 和描述C标准库 C标准库定义了一组标准头文件
  • ZED2相机+NVIDIA NX使用及检测目标功能2

    在nx结合zed相机 xff0c 使用yolo进行物体识别 1 venv虚拟环境安装 由于设备自带的python为python2 7环境 xff0c 所以先创建虚拟环境并激活 sudo apt get install software pr

随机推荐