Scratch 游戏 之 随机大地图生成教程

        在很多生存 / 沙盒类游戏中,地图往往是随机生成的,例如:饥荒、我的世界等。那我们该如何在scratch中实现这一点呢?

        在scratch中有两种办法可以实现——画笔和克隆体。我们这次先聊克隆体。

        我们可以先将克隆体设置为方形的,再由一个个方形相互连接形成一个方形的大地图,这些克隆体可以改变颜色来模拟不同的地形(沙漠、森林、平原......),仔细想想,这些方形是不是和我的世界中的方块很像?没错,这和我的世界原理差不多,只是我们的是2D的而已。

        提示:编写此程序需开启无限复制

下面我们进入到实践环节:


1.绘制克隆体

        我们先绘制一个没有边框的正方形,边长15格(一格4个坐标,边长也就是60个坐标)。当然,你也可以设置成其它大小,只不过这样是整数,方便计算。(正方形可以略大一点点,不然运行放大时会有一丝丝缝隙)

如图所示

如图所示

2.编写程序

        我们先设置几个变量:行数、列数、克隆数、私有克隆数(私有变量)。

        行数和列数就是指地图的尺寸,十行十列的地图就有100个格子。而克隆数和私有克隆数就是帮克隆体弄清楚自己的编号,是第几个,以此来知道自己该在第几列第几行,知道自己的坐标在哪儿。

        程序部分最开始是设置初始变量(这里尺寸设置的是10*10),然后隐藏本体,再将克隆数加一,克隆一次自己。都好理解,难的部分在克隆体的程序。

本体的程序

本体的程序

        下面再看克隆体的程序,先是显示,再将私有克隆数设置为当前的克隆数(这一步就不用多说了,私有变量是可以让克隆体自己拥有的,相当于给自己编了个号)。

        由于让本体一个个复制克隆体太慢了,不如让克隆体复制克隆体,再让被克隆的克隆体复制出一个新的克隆体......这样克隆体的数量就成倍增长,速度翻了几十倍,就连复制一万个也是眨眼间的事。只要让克隆体重复执行复制直到总数量等于行数成列数就行了。

        运行上面的程序后如果发现克隆数瞬间到了100,就成功了。下一步就是要让这些克隆体各归其位,排列成一个正方形了。(为了方便观察效果,我们先把行列数改成3*3的,另外,如果你不想让电脑卡死,最好别超过100*100)

        我们先设置两个私有变量给克隆体用,分别是x和y。这两个变量是赋予克隆体自己的坐标的。

        那怎么才能让克隆体各归其位呢?原理很简单,就跟小学学的列队做早操或排方阵的题差不多,无非就是把让你根据总人数算行列数变成了让你算是第几列第几行的。

        具体公式如下:

上面是x坐标,下面是y坐标

上面是x坐标,下面是y坐标

        前面挺简单的,但后面乘以60是什么意思呢?前面我们提到过,克隆体的边长是60个坐标,乘60就是为了让克隆体之间隔开一定距离。

        我们再将这个公式套入程序里:

        这时那两个变量便派上用场了,"移到x:x y:y"再让克隆体移到对应位置,因为地图是要实时移动的,需要再加一个重复执行。

        试着运行一下:

        没错,程序出错了。右边那一列竟然向上窜出了一格,但是问题出在哪儿呢?

        这一看就是y坐标的问题,所以我们将刚才的公式再验算一下:

        设克隆体编号为1: 1/3=0……1 (1-1)/3*60=0

        设克隆体编号为2: 2/3=0……2 (2-2)/3*60=0

        设克隆体编号为3: 3/3=1……0 (3-0)/3*60=60

        设克隆体编号为6: 6/3=2……0 (6-0)/3*60=120

        最终我们发现如果克隆体的编号是列数的倍数,他就会多出60个坐标。

        所以我们要判断这个克隆体的编号是否是列数的倍数,如果是,就要减去60个坐标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/97173.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是单例模式

什么是单例模式 文章目录 什么是单例模式1. 单例(单个的实例)2. 单例模式应用实例3. 饿汉式 VS 懒汉式 1. 单例(单个的实例) 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一…

CF 1354 C1 C2 Polygon Embedding(求奇偶正多边形的外接最小正方形的边长)

CF 1354 C1 / C2 Polygon Embedding(求奇偶正多边形的外接最小正方形的边长) Problem - C1 - Codeforces Problem - C2 - Codeforces EASY : 大意:给出一个偶数 n , 求 正 (2 * n) 边形的最小外接正方形的边长。 可以想出两种最直观的情况…

如何构造不包含字母和数字的webshell

目录 利用不含字母与数字进行绕过 1.异或进行绕过 2.取反进行绕过 3.利用php语法绕过 利用不含字母与数字进行绕过 基本代码运行思路理解 <?php echo "A"^""; ?> 运行结果为! 我们可以看到&#xff0c;输出的结果是字符"!"。之所…

【论文解读】Hybrid-SORT: Weak Cues Matter for Online Multi-Object Tracking

因为Hybrid-SORT的baseline是基于OCSORT进行改进的&#xff0c;在这之前建议先了解byteTrack和【】的相关知识 1.介绍 1.1 基本框架 多目标跟踪(MOT)将问题分为两个子任务。第一个任务是检测每个帧中的对象。第二个任务是将它们在不同的框架中联系起来。关联任务主要通过显式…

Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)

文章目录 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)前情提要客户端部分 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三) 前情提要 单例泛型类 using System.Collections; using System.Collections.Generic; …

sql:知识点记录一

1.Mysql逻辑架构&#xff1a;连接层、服务层、引擎层、存储层 2.show engines&#xff1a;查看存储引擎 3.Mysql两种存储引擎的区别&#xff1a; 建立索引&#xff1a;比如说用户很喜欢用name去查询表&#xff0c;就可以给数据库的name字段建立索引&#xff0c;提高查询效率&a…

【潮州饶平】联想 IBM x3850 x6 io主板故障 服务器维修

哈喽 最近比较忙也好久没有更新服务器维修案例了&#xff0c;这次分享一例潮州市饶平县某企业工厂一台IBM System x3850 x6服务器亮黄灯告警且无法正常开机的服务器故障问题。潮州饶平ibm服务器维修IO主板故障问题 故障如下图所示&#xff1a; 故障服务器型号&#xff1a;IBM 或…

zotero在不同系统的安装(win/linux)

1 window系统安装 zotero 官网&#xff1a; https://www.zotero.org/ 官方文档 &#xff1a;https://www.zotero.org/support/ (官方)推荐常用的插件: https://www.zotero.org/support/plugins 入门视频推荐&#xff1a; Zotero 文献管理与知识整理最佳实践 点击 exe文件自…

SpringBoot 插件化开发

SpringBoot 插件化开发 介绍使用插件的好处1 模块解耦2 提升扩展性和开放性3 方便第三方接入 插件化常用实现思路Java常用插件实现方案ServiceLoader方式1 java spi2 java spi 简单案例 自定义配置约定方式添加配置文件自定义配置文件加载类自定义测试接口启动类项目结构 自定义…

puzzle(0414)六边形拼图

目录 六边形拼图 简单 中等 困难 六边形拼图 taptap小游戏 简单 &#xff08;3&#xff09; &#xff08;4&#xff09; 中等 &#xff08;3&#xff09; &#xff08;4&#xff09; 困难 &#xff08;2&#xff09; &#xff08;3&#xff09; &#xff08;4&#xff…

基于GUI的卷积神经网络和长短期神经网络的语音识别系统,卷积神经网的原理,长短期神经网络的原理

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 长短期神经网络的原理 基于GUI的卷积神经网络和长短期神经网络的语音识别系统 代码下载链接:基于MATLABGUI编程的卷积神经网络和长短期…

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式

STM32CubeMx配置定时器的编码器模式 上次文章写了编码器是如何工作的&#xff0c;今天就来用STM32F103C8T6的TIM3的通道1跟通道2编写一个编码器识别程序。 编程思路&#xff1a; A相:TIM3_CH1 B相:TIM3_CH2 SWITCH:PB5&#xff08;外部中断的方式&#xff09; 实现效果&a…

视频集中存储EasyCVR视频汇聚平台定制项目增加AI智能算法

安防视频集中存储EasyCVR视频汇聚平台&#xff0c;可支持海量视频的轻量化接入与汇聚管理。平台能提供视频存储磁盘阵列、视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联、H.265自动转码等功能。为了便…

Linux笔记

Linux基础命令 Linux的目录结构 /&#xff0c;根目录是最顶级的目录了Linux只有一个顶级目录&#xff1a;/路径描述的层次关系同样适用/来表示/home/itheima/a.txt&#xff0c;表示根目录下的home文件夹内有itheima文件夹&#xff0c;内有a.txt ls命令 功能&#xff1a;列出…

大文本的全文检索方案附件索引

一、简介 Elasticsearch附件索引是需要插件支持的功能&#xff0c;它允许将文件内容附加到Elasticsearch文档中&#xff0c;并对这些附件内容进行全文检索。本文将带你了解索引附件的原理和使用方法&#xff0c;并通过一个实际示例来说明如何在Elasticsearch中索引和检索文件附…

Spring中JavaBean的生命周期及模式

( 本篇文章大部分讲述了是底层知识&#xff0c;理念及原理 ) ( 如果只想了解&#xff0c;看我标记的重点即可&#xff0c;如果想明白其中原理&#xff0c;请耐心看完&#xff0c;对你大有受益 ) 目录 一、简介 ( 1 ) 是什么 ( 2 ) 背景概述 ( 3 ) 作用 二、生命周期 2.1 …

RK3588平台开发系列讲解(AI 篇)RKNN-Toolkit2 API 介绍

文章目录 一、RKNN 初始化及对象释放二、RKNN 模型配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解 RKNN-Toolkit2 API 详细说明。 一、RKNN 初始化及对象释放 在使用 RKNN Toolkit2 的所有 API 接口时,都需要先调用 RKNN()方法初始化 RKNN 对象,…

STM32 串口复习

按数据通信方式分类&#xff1a; 串行通信&#xff1a;数据逐位按顺序依次传输。传输速率较低&#xff0c;抗干扰能力较强&#xff0c;通信距离较长&#xff0c;I/O资源占用较少&#xff0c;成本较低。并行通信&#xff1a;数据各位通过多条线同时传输。 按数据传输方向分类&…

Flink源码之StreamTask启动流程

每个ExecutionVertex分配Slot后&#xff0c;JobMaster就会向Slot所在的TaskExecutor提交RPC请求执行Task&#xff0c;接口为TaskExecutorGateway::submitTask CompletableFuture<Acknowledge> submitTask(TaskDeploymentDescriptor tdd, JobMasterId jobMasterId, RpcTi…

常见指令以及权限理解

常见指令以及权限理解 命令格式&#xff1a; command [-options] parameter1 parameter1 命令 选项 参数1 参数2 1.command为命令名称&#xff0c;例如变化目录的cd等 2.中括号[ ]实际在命令中是不存在的&#xff0c;这个中括号代表可选&#xff0c;通常选项前面会添加一个符号…