当前位置: 首页 > news >正文

MC备份1

// 【修复1】所有头文件移到代码最顶部,禁止嵌套在函数内 #include<iostream> #include <GLFW/glfw3.h> #include <glm/gtc/noise.hpp> #include <unordered_map> #include <vector> using namespace glm; using namespace std; // ================== 方块类型 ================== enum BlockID { AIR = 0, GRASS = 1, DIRT = 2, STONE = 3, BEDROCK = 4, WOOD = 5, LEAVES = 6, WATER = 7 }; struct Block { BlockID id = AIR; }; const int CHUNK_SIZE = 16; const int CHUNK_HEIGHT = 24; // 【新增】常量定义,提高可读性 struct Chunk { Block blocks[CHUNK_SIZE][CHUNK_HEIGHT][CHUNK_SIZE] = { AIR }; bool modified = false; }; unordered_map<ivec3, Chunk> world; // ================== 玩家系统 ================== vec3 cameraPos = vec3(0, 20, 0); vec3 cameraFront = vec3(0, 0, -1); vec3 cameraUp = vec3(0, 1, 0); float yaw = -90.0f, pitch = 0.0f; float lastX = 640.0f, lastY = 360.0f; bool firstMouse = true; float moveSpeed = 4.317f; float gravity = -19.8f; float jumpForce = 8.0f; float velocityY = 0.0f; bool onGround = false; float deltaTime = 0.0f; float lastFrame = 0.0f; // 物品栏 int hotbar[9] = { GRASS, DIRT, STONE, BEDROCK, WOOD, LEAVES, WATER, AIR, AIR }; int selectedSlot = 0; // ================== 立方体顶点 ================== float cubeVertices[] = { -0.5f,-0.5f,-0.5f, 0.5f,-0.5f,-0.5f, 0.5f, 0.5f,-0.5f, 0.5f, 0.5f,-0.5f, -0.5f, 0.5f,-0.5f, -0.5f,-0.5f,-0.5f, -0.5f,-0.5f, 0.5f, 0.5f,-0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, -0.5f, 0.5f, 0.5f, -0.5f,-0.5f, 0.5f, -0.5f, 0.5f, 0.5f, -0.5f, 0.5f,-0.5f, -0.5f,-0.5f,-0.5f, -0.5f,-0.5f,-0.5f, -0.5f,-0.5f, 0.5f, -0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f,-0.5f, 0.5f,-0.5f,-0.5f, 0.5f,-0.5f,-0.5f, 0.5f,-0.5f, 0.5f, 0.5f, 0.5f, 0.5f, -0.5f,-0.5f,-0.5f, 0.5f,-0.5f,-0.5f, 0.5f,-0.5f, 0.5f, 0.5f,-0.5f, 0.5f, -0.5f,-0.5f, 0.5f, -0.5f,-0.5f,-0.5f, -0.5f, 0.5f,-0.5f, 0.5f, 0.5f,-0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, -0.5f, 0.5f, 0.5f, -0.5f, 0.5f,-0.5f }; // ================== 工具函数 ================== bool isAir(int x, int y, int z) { int cx = x / 16; int cy = y / CHUNK_HEIGHT; // 【修复3】Y坐标按区块高度计算 int cz = z / 16; if (!world.count({ cx, cy, cz })) return true; auto& c = world[{ cx, cy, cz }]; int bx = x & 15; int by = y % CHUNK_HEIGHT; // 【修复3】Y坐标取模,防止数组越界 int bz = z & 15; // 边界判断 if(bx <0 || bx >=16 || by <0 || by >=CHUNK_HEIGHT || bz <0 || bz >=16) return true; return c.blocks[bx][by][bz].id == AIR || c.blocks[bx][by][bz].id == WATER; } // 判断是否为实心方块(用于碰撞) bool isSolid(int x, int y, int z) { return !isAir(x, y, z); } int getHeight(int x, int z) { float n = glm::simplex(vec2(x * 0.017f, z * 0.017f)); return 10 + (int)(n * 5.0f); } // ================== 地形生成 ================== void generateChunk(int cx, int cz) { Chunk ch; for (int x = 0; x < 16; x++) { for (int z = 0; z < 16; z++) {
http://www.jsqmd.com/news/563338/

相关文章:

  • Sentaurus实战解析:SiC NMOS仿真中的关键参数设置与优化
  • 2026年比较好的呼市原车漆补漆实力车行推荐 - 品牌宣传支持者
  • Tomato-Novel-Downloader:你的终极番茄小说离线阅读解决方案
  • 管道巡检软体机器人 YOLOv8 模型部署全流程(PT→ONNX→昇腾OM)
  • 从对话到执行:一文读懂AI Coding Agent的底层原理
  • 质量块-阻尼器-弹簧系统H的鲁棒控制:次最优、Loopshaping与μ综合dk迭代设计案例
  • 数据增广翻车现场实录:我的模型准确率为什么反而下降了?附PyTorch调试避坑指南
  • 3大突破策略:Bypass Paywalls Clean 2024全场景应用指南
  • APK Studio核心功能解析:深入理解反编译与重编译流程
  • 2026电力盖板及玻璃钢制品优选营顺高性价比服务:玻璃钢电缆沟盖板/玻璃钢罐体/玻璃钢运输罐/电缆沟盖板/酸碱罐/选择指南 - 优质品牌商家
  • PyTorch模型部署实战:FP16 vs FP32 vs TF32 vs INT8性能对比与选择指南
  • 从6颗MLCC到高通滤波器:解码耳机输出耦合电容的取舍艺术
  • 从Dhrystone到SPEC:聊聊那些年我们跑过的“分”,以及为什么现在不能全信它
  • 轻量级MCU菜单框架设计与实现
  • 2026年知名的补漆/呼市汽车补漆热门推荐榜 - 品牌宣传支持者
  • Python异步编程新选择:用Channels替代Celery实现实时消息推送(Django 3.2+演示)
  • ANSYS_APDL——实例002-结构静力学分析
  • Systolic阵列优化技巧:如何减少硬件资源消耗并提升矩阵乘法效率
  • OpenRouter报错403
  • 单片机驱动分离架构设计与实践指南
  • 大模型---量化
  • nginx做四层代理配置
  • 【技术解析】PSMNet:如何通过金字塔池化与堆叠沙漏3D CNN革新立体匹配?
  • 3步破解Mac NTFS读写限制:面向跨平台工作者的开源工具Nigate全指南
  • HarmonyOS 6实战5:应用性能管理与崩溃日志分析技术
  • 从AlphaGo到《原神》NPC:蒙特卡洛树搜索(MCTS)在游戏AI中的落地实践
  • 2026年成品家具与定制服务白皮书南通高端别墅装修解析:如东家具工厂店、如东高端家具定制、如东黑胡桃家具工厂店选择指南 - 优质品牌商家
  • 3个核心价值:APKMirror安全下载与管理指南
  • 双目立体视觉实战:从平行视图到3D电影原理的完整解析
  • 从VMware到Pwn环境:Ubuntu 22.04虚拟机配置与安全研究工具链全解析