Unity中自动生成地图(代完善)

news/2024/7/22 1:13:48/文章来源:https://blog.csdn.net/exlink2012/article/details/139266614

地图中有水果、房子、树木和道路。道路能通到水果旁。

代码:

using UnityEngine;
using System.Collections.Generic;
using System.Text;public class TilemapGenerator : MonoBehaviour
{public int mapWidth = 30;public int mapHeight = 20;private int[,] map;void Start(){GenerateTilemap();PrintTilemap();}void GenerateTilemap(){map = new int[mapWidth, mapHeight];// 初始化地图为障碍物 (0)for (int x = 0; x < mapWidth; x++){for (int y = 0; y < mapHeight; y++){map[x, y] = 0;}}// 生成道路并放置元素System.Random rand = new System.Random();GenerateRoadsAndPlaceElements(rand, 2, 10); // 苹果GenerateRoadsAndPlaceElements(rand, 3, 10); // 胡萝卜GenerateRoadsAndPlaceElements(rand, 4, 10); // 橙子// 在非道路区域放置额外的树木和房子PlaceElementsRandomly(5, 15); // 树木PlaceElementsRandomly(6, 5);  // 房子}void GenerateRoadsAndPlaceElements(System.Random rand, int element, int count){for (int i = 0; i < count; i++){int x = rand.Next(mapWidth);int y = rand.Next(mapHeight);// 确保初始位置未被占用while (map[x, y] != 0){x = rand.Next(mapWidth);y = rand.Next(mapHeight);}// 放置元素map[x, y] = element;// 生成通向此元素的道路GenerateRoadToElement(rand, x, y);}}void GenerateRoadToElement(System.Random rand, int targetX, int targetY){int x = rand.Next(mapWidth);int y = rand.Next(mapHeight);// 确保起始位置未被占用并且在边缘while (map[x, y] != 0 || (x != 0 && x != mapWidth - 1 && y != 0 && y != mapHeight - 1)){x = rand.Next(mapWidth);y = rand.Next(mapHeight);}while (x != targetX || y != targetY){if (x < targetX) x++;else if (x > targetX) x--;else if (y < targetY) y++;else if (y > targetY) y--;if (map[x, y] == 0) map[x, y] = 1; // 标记为道路}}void PlaceElementsRandomly(int element, int count){System.Random rand = new System.Random();for (int i = 0; i < count; i++){int x, y;do{x = rand.Next(mapWidth);y = rand.Next(mapHeight);} while (map[x, y] == 1); // 确保位置不是道路map[x, y] = element;}}void PrintTilemap(){StringBuilder sb = new StringBuilder();for (int y = mapHeight - 1; y >= 0; y--){for (int x = 0; x < mapWidth; x++){sb.Append(map[x, y].ToString() + " ");}sb.AppendLine();}Debug.Log(sb.ToString());}
}

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

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

相关文章

idea2024 nacos中文报错

idea2024 nacos中文报错 报错提示为&#xff1a;Input length 1 报错原因&#xff1a;项目启动编码与nacos编码不一致。 处理方式 添加启动参数utf8修改项目编码格式为utf8 修改idea.vmoptions Help -> Edit Custom 添加一行&#xff1a;-Dfile.encodingUTF-8

Django与微服务架构:构建可扩展的Web应用

title: Django与微服务架构&#xff1a;构建可扩展的Web应用 date: 2024/5/21 20:15:19 updated: 2024/5/21 20:15:19 categories: 后端开发 tags: 微服务Django负载均衡RESTfulAPI网关容器化监控安全 前言 在当今快速发展的软件开发领域&#xff0c;微服务架构已经成为构建…

情感分析及数据集代码解析

15.1. 情感分析及数据集 — 动手学深度学习 2.0.0 documentation (d2l.ai) 代码 import os import torch from torch import nn from d2l import torch as d2l#save d2l.DATA_HUB[aclImdb] (http://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz,01ada507287d828…

音视频学习规划

文章目录 概述闲聊点 小结 概述 最近在学习音视频&#xff0c;觉得还是要先写个提纲&#xff0c;给自己制定下学习路线及目标。先写下我的个人流程及思路。 ffmpeg的命令ffmpeg api播放器流媒体RTMP&#xff0c;HLS 闲聊点 先说下学习命令行吧&#xff0c;学习命令行是为了…

【Spring Cloud】API网关

目录 什么是API网关为什么需要API网关前言问题列表 API网关解决了什么问题常见的网关解决方案NginxLuaSpring Cloud Netflix ZuulSpringCloud Zuul的IO模型弊端 Spring Cloud Gateway 第二代网关——GatewayGateway的特征Spring Cloud Gateway的处理流程Spring Cloud Gateway的…

基于trunk、yew构建web开发脚手架

trunk 构建、打包 rust wasm 程序&#xff1b;yewweb 前端开发库&#xff1b; 项目仓库yew-web trunk 之前已经简单介绍了trunk,全局安装&#xff1a; $> cargo install --locked trunk常用命令&#xff1a; trunk build 基于wasm-bindgen构建 wasm 程序。trunk watch …

企企通入选第一新声《2024年中国CIO数字化产品选型白皮书》供应链数字产品可信名录

近日&#xff0c;第一新声研究院根据多年产业数字化研究&#xff0c;历经近半年时间&#xff0c;并综合近200位CIO调研与推荐意见&#xff0c;发布《2024年中国CIO数字化产品选型白皮书》&#xff0c;并推出企业CIO选型指南及可信产品名录。企企通凭借其优秀的采购数字化与供应…

【小米手环7】表盘修改/制作指南

2024年了还有人用小米手环7么&#xff1f; 5月10号得到我的小米手环7nfc&#xff0c;随之开启了我对表盘制作的探索之旅。~历时18天&#xff0c;终于让我成功修改了官方表盘——荧光电子&#xff01;表盘&#xff1a;羽球人的荧光电子已上传至表盘自定义工具app。 接下来&…

Android软件渲染流程

Android软件渲染流程 一.渲染流程1.VSync信号的监听2.VSync信号触发绘制 二.渲染原理1.画布的获取1.1 渲染缓存的初始化1.2 graphics::Canvas的创建1.3 graphics::Canvas与渲染缓存的绑定1.3.1 SkBitmap的初始化1.3.2 SkiaCanvas与SkBitmap的绑定1.3.3 SkCanvas的创建 2.矩形的…

Window Linux 权限提升

#基础点&#xff1a; 0、为什么我们要学习权限提升转移技术&#xff1a; 简单来说就是达到目的过程中需要用到它 心里要想着我是谁 我在哪 我要去哪里 1、具体有哪些权限需要我们了解掌握的&#xff1a; 后台权限&#xff0c;数据库权限&#xff0c;Web权限&#xff0c;用户权…

红外成像人员检测数据集VOC+YOLO格式5838张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;5838 标注数量(xml文件个数)&#xff1a;5838 标注数量(txt文件个数)&#xff1a;5838 标注…

FTP协议——Pure-Ftpd安装(Linux)

1、简介 Pure-FTPd是一个高效、免费且开源的FTP服务器软件&#xff0c;广泛应用于各种Unix/Linux系统。它以其易用性、高安全性和功能丰富而闻名&#xff0c;适用于个人和企业的文件传输需求。 2、步骤 环境&#xff1a;Ubuntu 22.04.4 下载地址&#xff1a;Index of /pub/p…

文盘Rust -- 生命周期问题引发的 static hashmap 锁

100编程书屋_孔夫子旧书网 2021年上半年,撸了个rust cli开发的框架,基本上把交互模式,子命令提示这些cli该有的常用功能做进去了。项目地址:https://github.com/jiashiwen/interactcli-rs。 春节以前看到axum已经0.4.x了,于是想看看能不能用rust做个服务端的框架。 春节…

【Java】Java中类的初始化顺序(静态方法,静态块,非静态块,最后有流程图)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 一、无继承关系类的初始化 1、静态变量k被初始化 2、静态变量t1初始化 3、静态变量 t2初始化 4、静态变量i初始化 5、静态变量n初始化 6、静态块初始化 7、非静态块初始化 8、非静态属性初始化 9、执行构造…

triton之paged attention

一 原理 图解大模型计算加速系列之&#xff1a;vLLM核心技术PagedAttention原理 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/691038809 二 源码分析 1 测试参数设置 test_paged_attention(num_seqs32,num_heads(64, 64),head_size64,block_size16,dtypetorch.float16,…

八股文(C#篇)

C#中的数值类型 堆和栈 值类型的数据被保存在栈&#xff08;stack)上&#xff0c;而引用类型的数据被保存在堆&#xff08;heap&#xff09;上&#xff0c;当值类型作为参数传递给函数时&#xff0c;会将其复制到新的内存空间中&#xff0c;因此在函数中对该值类型的修改不会影…

Elasticsearch集群许可证过期问题解决方法汇总

最近在使用elasticsearch的过程中,使用elastic-head进行可视化展示集群的状态和信息,从2024年5月18日突然elastic-head无法现在集群的状态界面啦,elasticsearch集群状态是正常,命令如下: curl -X GET "localhost:9200/_cluster/health?pretty" 在google页面上通过…

给pdf加水印,python实现

from PyPDF2 import PdfReader, PdfWriterdef add_watermark(pdf_file_in, pdf_file_mark, pdf_file_out):"""把水印添加到pdf中"""pdf_output PdfWriter()input_stream open(pdf_file_in, rb)pdf_input PdfReader(input_stream, strictFalse…

for循环绑定id,更新html页面的文字内容

需求&#xff1a;将方法中内容对齐 实现方式 给for循环中每个方法添加一个动态的id在DOM结果渲染完后&#xff0c;更新页面数据&#xff0c;否则会报错&#xff0c;找不到对应节点或对应节点为空 <view v-for"(item, index) in itemList" :key"index"…

DSP开发入门

视频&#xff1a; 创龙TI 最新DSP CPU核心架构 C66x 以及 KeyStone I 架构 DSP TMS320C6655/57以及TMS320C6678视频教程全集_哔哩哔哩_bilibili 2024年硬汉科技手把手教您学DSP28335视频教程持续更新中_哔哩哔哩_bilibili DSP芯片介绍 DSP选型 TI的DSP 分为三大系列&#…