DEV - C++中直接编写一个完整的《我的世界
以下是一个简化版《我的世界》基础框架的C++代码,使用控制台图形模拟方块世界。代码包含基本的世界生成、玩家移动和方块放置功能。 ```cpp #include <iostream> #include <vector> #include <cstdlib> #include <ctime> using namespace std; const int WORLD_WIDTH = 20; const int WORLD_HEIGHT = 10; vector<vector<char>> world(WORLD_HEIGHT, vector<char>(WORLD_WIDTH, ' ')); int playerX = WORLD_WIDTH / 2; int playerY = WORLD_HEIGHT / 2; void generateWorld() { srand(time(0)); for (int y = 0; y < WORLD_HEIGHT; y++) { for (int x = 0; x < WORLD_WIDTH; x++) { if (y == WORLD_HEIGHT - 1) { world[y][x] = '#'; // 地面 } else if (rand() % 10 < 2) { world[y][x] = '#'; // 随机方块 } } } } void displayWorld() { for (int y = 0; y < WORLD_HEIGHT; y++) { for (int x = 0; x < WORLD_WIDTH; x++) { if (x == playerX && y == playerY) { cout << 'P'; // 玩家 } else { cout << world[y][x]; } } cout << endl; } } void movePlayer(char direction) { int newX = playerX; int newY = playerY; switch (direction) { case 'w': newY--; break; case 's': newY++; break; case 'a': newX--; break; case 'd': newX++; break; } if (newX >= 0 && newX < WORLD_WIDTH && newY >= 0 && newY < WORLD_HEIGHT && world[newY][newX] == ' ') { playerX = newX; playerY = newY; } } void placeBlock() { if (playerY > 0 && world[playerY - 1][playerX] == ' ') { world[playerY - 1][playerX] = '#'; } } int main() { generateWorld(); char input; do { displayWorld(); cout << "移动: w/a/s/d, 放置方块: p, 退出: q" << endl; cin >> input; if (input == 'p') { placeBlock(); } else { movePlayer(input); } } while (input != 'q'); return 0; } ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: - 边界检查不充分可能导致数组越界访问,引发程序崩溃。 - 随机数生成未正确播种会导致每次运行世界相同,缺乏变化。 - 输入处理不当可能造成无限循环或意外行为,需验证用户输入。 [2025-11-29 13:50:44 | AI写代码神器 | 650点数解答]
- [字节豆包] 帮我做一款我的世界基岩版,c++完整 (182点数解答 | 2025-02-22 15:53:11)166
- [阿里通义] 一个 5×6 的迷宫样例如下: 要求给出从起点(1,1)到终点(3,4)的路径。 为了处理方便,保证最外圈全都为障碍物。 扩展到一般情况,一个 m×n 的迷宫,要求输出从起点(1,1)到终点(m-2,n-2)的路径。 测试实例保证路径是唯一的。 该题要求自行设计一个栈来做。如果设计的是顺序栈,则保证栈的大小不超过 200 个元素。 输入 第一行为两个整数 m 和 n,表示 m×n 的迷宫。 接下来有 m 行,每行有 n 个数(n 个数之间用空格间隔,值 = 0 表示可以通行,值 = 1 表示为障碍物) 输出 输出从起点到终点的路径,每个坐标占一行,坐标间的行号和列号用一个空格间隔。具体格式可参考样例。c++ 源代码(732点数解答 | 2024-11-03 02:34:53)442
- [字节豆包] 以脚本形式提取stale 2408:8256:481:346d:6c70:db9b:a20f:d747 dev br0 lladdr中2048开头的部分(212点数解答 | 2024-12-05 02:33:53)120
- [阿里通义] 以脚本形式提取stale 2408:8256:481:346d:6c70:db9b:a20f:d747 dev br0 lladdr中2048的部分(320点数解答 | 2024-12-05 02:35:04)121
- [百度文心] shell脚本提取stale 2408:8256:481:346d:6c70:db9b:a20f:d747 dev br0 lladdr中2048的部分(528点数解答 | 2024-12-05 02:35:50)171
- [GPT] 以脚本形式提取stale 2408:8256:481:346d:6c70:db9b:a20f:d747 dev br0 lladdr中2048的部分(73点数解答 | 2024-12-05 02:36:03)130
- [字节豆包] #include<stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <sys/mman.h> #include "font.h" #include <linux/input.h> struct lcddevice* lcd; font *f; // 新增:用于存储输入数字的字符数组 char input_numbers[50] = {0}; int num_count = 0; // 记录已输入数字的个数 #define digital_spacing 22 int unlocked = 0; int wrong_count = 0; // 新增变量,用于记录密码错误次数 void font_init(int size) { //初始化lcd lcd = init_lcd("/dev/fb0"); //打开字体 f = fo(45点数解答 | 2024-12-05 20:37:20)179
- [阿里通义] #include<stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <sys/mman.h> #include "font.h" #include <linux/input.h> struct lcddevice* lcd; font *f; // 新增:用于存储输入数字的字符数组 char input_numbers[50] = {0}; int num_count = 0; // 记录已输入数字的个数 #define digital_spacing 22 int unlocked = 0; int wrong_count = 0; // 新增变量,用于记录密码错误次数 void font_init(int size) { //初始化lcd lcd = init_lcd("/dev/fb0"); //打开字体 f = fo(864点数解答 | 2024-12-05 20:39:28)176
- [GPT] 在 dev-c++上面 定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的最佳位置的序号,查找该位置上的图书,输出相应图书的信息。 输入 总计n+m+2行。首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空 格。其中书号和书名为字符串类型,价格为浮点数类型。然后输入m+1行,其中,第一行是一个整数m,代表查找m次,后m行每行内容为,个整数,代表待查找的图书的位置序号。 输出 输出m行 若查找成功: 输出内容为第谈次查询的指定位置上的一本图书的信息(书号、书名、价格),书号、书名、价格用空格分隔,其中价格输出保留两位小数。 若查找失败:只输 出以下提示:抱歉,最住位置上的图书不存在! 样例输入复制 8 9787302257646 data-structure 35.00 9787302164340 operating- system 50.00 9787302219972 software-engineer 32.00 97873022(1650点数解答 | 2024-12-18 09:04:49)344
- [GPT] 在 dev-c++上面 定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的最佳位置的序号,查找该位置上的图书,输出相应图书的信息。 输入 总计n+m+2行。首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空 格。其中书号和书名为字符串类型,价格为浮点数类型。然后输入m+1行,其中,第一行是一个整数m,代表查找m次,后m行每行内容为,个整数,代表待查找的图书的位置序号。 输出 输出m行 若查找成功: 输出内容为第谈次查询的指定位置上的一本图书的信息(书号、书名、价格),书号、书名、价格用空格分隔,其中价格输出保留两位小数。 若查找失败:只输 出以下提示:抱歉,最住位置上的图书不存在! 样例输入复制 8 9787302257646 data-structure 35.00 9787302164340 operating- system 50.00 9787302219972 software-engineer 32.00 97873022(1823点数解答 | 2024-12-18 09:04:51)286
- [DeepSeek] DEV - C++中直接编写一个完整的《我的世界(650点数解答 | 2025-11-29 13:50:44)11
- 编写 js 代码,定义变量 test,赋值为“red”。(6点数解答 | 2024-05-19 20:46:45)320