C++做一个2D的我的世界

教你如何用c++写2D版我的世界(1)——续 哎,可能有读者注意到了,color后面加了个“F0”,这是什么意思呢?的时候,你会发现,一旦使用该函数,整个窗口都会被改变颜色。那么如何设置单个字的颜色呢?其中ForgC指前景色,BackC指背景色,和system一样,数值仍然是1~15,SetConsoleTextAttribute(参考于匿名用户__的博客)当然,这时候又有人说了,如果要改变单一文字颜色该怎么办?SetConsoleTextAttribute(参考于匿名用户__的博客)这下大家应该懂了吧,前面的F指背景色亮白色,后面的0指前景色黑色。. 阅读详情
AI摘要

本文介绍如何用C++与SFML库构建一个2D版的我的世界游戏。通过创建游戏窗口,绘制字符构成的方块世界,利用地图数据和纹理,实现了基本的游戏界面。代码示例中展示了如何处理窗口事件、绘制方块并限制帧率。

要实现一个简单的2D版我的世界游戏,你可以使用C++和SFML库。首先,确保你已经安装了SFML库。接下来,我们将创建一个简单的游戏窗口,并在其中绘制一个由字符组成的方块世界。

以下是一个简单的示例代码:

#include <SFML/Graphics.hpp>
#include <iostream>
#include <vector>
#include <string>

const int WINDOW_WIDTH = 80;
const int WINDOW_HEIGHT = 60;
const std::string WORLD_MAP = "####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################";

int main()
{
    sf::RenderWindow window(sf::VideoMode(WINDOW_WIDTH * 16, WINDOW_HEIGHT * 16), "我的世界");
    window.setFramerateLimit(60);

    std::vector<std::string> worldMap;
    size_t start = 0;
    size_t end = WORLD_MAP.find(' ', start);
    while (end != std::string::npos)
    {
        worldMap.push_back(WORLD_MAP.substr(start, end - start));
        start = end + 1;
        end = WORLD_MAP.find(' ', start);
    }
    worldMap.push_back(WORLD_MAP.substr(start));

    sf::Texture texture;
    if (!texture.loadFromFile("block.png"))
    {
        std::cerr << "无法加载方块纹理" << std::endl;
        return 1;
    }

    sf::Sprite sprite(texture);
    sprite.setScale(16, 16);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
            {
                window.close();
            }
        }

        window.clear();
        for (size_t y = 0; y < WINDOW_HEIGHT; ++y)
        {
            for (size_t x = 0; x < WINDOW_WIDTH; ++x)
            {
                sprite.setPosition(x * 16, y * 16);
                if (worldMap[y][x] == '#')
                {
                    sprite.setColor(sf::Color::Black);
                }
                else
                {
                    sprite.setColor(sf::Color::White);
                }
                window.draw(sprite);
            }
        }
        window.display();
    }

    return 0;
}

在这个示例中,我们首先定义了一个80x60的窗口大小,以及一个包含地图数据的字符串。然后,我们使用SFML库创建一个窗口,并设置帧率限制为60。

接下来,我们将地图数据分割成一个字符串向量,每个字符串代表一行地图。我们还加载了一个名为"block.png"的方块纹理,并将其缩放到16x16像素。

在主循环中,我们处理窗口事件,清除屏幕,并根据地图数据绘制方块。如果地图上的字符是'#',则将方块颜色设置为黑色;否则,将其设置为白色。最后,我们显示窗口的内容。

注意:你需要将"block.png"替换为你自己的方块纹理文件名,并确保它与源代码文件位于同一目录下。

2D我的世界C++代码-Paper Minecraft-1.2 -MINECRAFT- 阅读详情

相关推荐

使用C++手动编写Minecraft!!

使用C++手动编写Minecraft!!

c++我的世界

c++我的世界

w666ssyyjj的博客 2537

我的世界简易版(C++编写,源代码+程序)

我的世界简易版(C++编写,源代码+程序) 注意,其中有两个dll文件,勿删,删了无法运行 解压,运行MC.exe 源代码用Dev-C++编译即可

c++制作我的世界

c++自制我的世界

jojolikemilk的博客 5909

我的世界简易版(C++编写,源代码+程序)已测

我的世界简易版(C++编写,源代码+程序) 注意,其中有两个dll文件,勿删,删了无法运行 解压,运行MC.exe 源代码用Dev-C++编译即可

当迁移学习遇见室内定位:基于UJIIndoorLoc的跨场景适配实践

本文探讨了迁移学习在跨建筑室内定位中的应用,重点解析了UJIIndoorLoc数据集的特性及其在解决设备差异和环境变化中的关键作用。通过特征工程、迁移学习策略和小样本微调技术,显著提升了定位模型的跨场景适配能力,为实际部署提供了有效解决方案。

weixin_29038155的博客 394

C++ 2D我的世界![控制台版]

C++ 2D我的世界![控制台版] 源码地址:点击查看 https://paste.ubuntu.com/p/tWdDxKfWvP/ 作者:Evan_song 大大 http://openjudge.cn/user/944985/in/group-93/ 感谢作者提供的代码 献上代码 #include <iostream> #include <conio.h> #include <string> #include <map> #include <cmat

一个神奇的博客 1万+

Windows 11下用Ollama一键部署DeepSeek-R1大模型(附8B/14B版本选择建议)

本文详细介绍了在Windows 11环境下使用Ollama工具一键部署DeepSeek-R1大模型的完整指南,包括8B和14B版本的选择建议。通过硬件评估、安装配置、性能优化等步骤,帮助开发者高效实现本地部署,提升AI应用体验。

weixin_29079643的博客 276

【2D我的世界c++版】

1500行我的世界 可运行。

m0_72620481的博客 8469

ZYNQ千兆网UDP通信实战:从Vivado配置到LWIP优化全流程(附避坑指南)

本文详细介绍了在ZYNQ平台上实现千兆以太网UDP通信的全流程,包括Vivado硬件配置、LWIP协议栈优化及实战代码示例。通过关键参数调整和性能优化,系统吞吐量可提升至850Mbps以上,适用于高速网络通信场景。

weixin_29161785的博客 231

【汇编】TSR内存驻留程序实现与删除及热键设置——以实现时钟为例

【汇编】TSR内存驻留程序实现与删除及热键设置——以实现时钟为例 最近完成了一个关于时钟中断驻留的汇编大作业,对于TSR很是感兴趣,查阅了不少资料,发现现在很少相关的内容资料。尤其是TSR删除这一块几乎找不到在低的水平完全正确的做法,下面我对于TSR的删除我会介绍一种几乎小程序可以完成的方法。当然,标题中的TSR实现,热键设置我也会一一介绍。

cly116的博客 3971

【C++游戏引擎Easy2D】Random随机数,不同于Rand,做游戏必备

哈喽大家好,我是iecne,本期为大家带来的是CPP/C++【C++游戏引擎Easy2D】Random随机数,不同于Rand,做游戏必备包教包会,快来看看吧!引擎支持 Visual Studio 2013 及以上版本,如果你使用的是较低版本的 VS,那么你需要考虑一下更新你的编译器了本节课主要是讲解了Easy2D引擎实现的教程,至此该课示例的思想博主已经真真切切彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下,包教包会。

iecne的博客 5253

Keil 5安装教程(C51与MDK共存)

目录前言MDK的安装C51的安装安装完成后的验证新建C51工程添加C51程序文件编译测试总结 前言 本篇文章将介绍嵌入式开发工具Keil 5的安装方法,并使MDK(Microcontroller Development Kit,开发stm32时会用到)和C51(51单片机C语言软件开发系统)共存。今后使用Keil 5可同时开发51单片机程序和ARM单片机程序,便于学习与从51到32的过渡。 注: 为防止商业纠纷,本篇文章不涉及文中软件的注册破解,请支持正版。 同时为了便于今后更深入的学习,本文不会介绍软件的

xushu_me的博客 6万+

C++我的世界2D版

话不多说直接来代码 #include <iostream> #include <conio.h> #include <string> #include <map> #include <cmath> #include <windows.h> #include <time.h> #define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ?

a789865315的博客 5708

Python入门之机器学习(非常详细)篇幅拉满,一般人看不完!

什么是机器学习?监督学习 supervised learning;非监督学习 unsupervised learning;半监督学习 semi-supervised learning;强化学习 reinforcement learning;监督学习是不断向计算机提供数据(特征),并告诉计算机对应的值(标签),最后通过大量的数据,让计算机自己学会判断和识别。例如Google Photo,你在APP中输入狗,这时就会弹出与狗相关的图片,这背后使用的算法就是监督学习。

xiaolinyui的博客 2万+

LDRA Testbed(TBrun)软件单元测试_实例讲解(对多次调用的函数打桩)

在之前的文章《LDRA Testbed(TBrun)软件单元测试_操作指南》中,已经讲解了如何使用TBrun进行软件单元测试的基本操作步骤。本篇文章将结合实例进一步讲解被测函数中包含多次调用其他函数时,如何对其打桩来实现测试目的(详细的操作流程本文不再重述,若有不清楚的,可以结合之前的操作指南一起来看)。本文以一个被测函数作为示例,讲解了如何使用Testbed(TBrun)对涉及到多次调用其他函数的被测函数进行单元测试。本文的示例可能比较简单,但是思路、方法和流程都是通用的,希望对大家有所帮助。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1466

教你如何用c++写2D版我的世界(1)

Helloeveryone!想必大家有时肯定会突然冒出想自己写游戏的想法,可却又不知道怎么写,从今天开始小编就教大家如何用c++编写一个2D版我的世界(如有错误,请大佬多多指出,后续我会修改,大佬勿喷ヾ(≧▽≦*)o)没错,当输出1时,代码停顿了1秒,然后清屏输出2.想必你已经猜到了,Sleep函数是使代码停顿,1000为1秒,而system函数是可以清屏的,但注意要用windows.h头文件(万能不行)今天就写到这了,如有时间,我就会快速更新下一篇(文章如有问题,请指出)(•̀ω•́)✧ ......

橙羊的博客 1万+

Python 爬虫实战:爬取豆瓣电影 Top250 完整数据

本文基于Python技术实现了豆瓣电影Top250榜单数据的合规爬取与分析。针对豆瓣电影页面的分页结构、反爬机制等特点,采用requests库获取数据,结合BeautifulSoup解析HTML节点,并通过正则表达式提取电影名称、评分、导演等核心字段。爬虫实现了随机User-Agent、请求间隔控制等反爬规避策略,严格遵守豆瓣社区使用规范。最终数据经清洗后存储为结构化Excel文件,并提供了数据可视化与增量更新方案。该方案为影视研究提供了可靠的数据获取方法,同时确保符合非商业使用、适度爬取等合规要求。

2503_91057718的博客 3460

我的世界2D源代码(自制)(C++制作)

【代码】我的世界2D源代码(自制)

weixin_54899670的博客 5885

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Cpp入门基础

定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。

2401_86658278的博客 5213

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

c++2D我的世界源代码

/y代表这个点我们选择的高度,为了不出现太陡峭的山,我们只允许这个高度在刚才的点的高低10格内。mob[k] = {0,1000,0,0,0,100,"SS",true,7,"僵尸"};i += 5)//i每次加5,每隔5个点连一条线。else if(k - dirt

yang21198的博客 6793

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C++2d我的世界V1.4

这是一个基于C++实现的简易Minecraft文字版游戏。主要功能包括:1) 随机生成地形和矿物分布;2) 玩家移动和方块放置/破坏;3) 可调节的渲染距离和帧率设置。代码使用Windows API实现彩色文本输出,通过随机算法生成包含草地、树木、矿洞和各种矿物(煤矿、铁矿、金矿、钻石矿)的地形。玩家可以WASD移动,用X破坏方块,数字键1-4放置不同方块。游戏界面显示坐标信息,支持5-15格渲染距离和5-50FPS的帧率调节。

OC溥哥999 698

探索 Raylib-CPP:一个简洁高效的C++游戏开发库

是 Rob Loach 创建的一个开源项目,它为 C++ 开发者提供了一个简单、易用且高性能的游戏和图形应用开发框架。如果你正在寻找一个轻量级且易于上手的库来开启你的游戏编程之旅,那么 Raylib-CPP 绝对值得你关注。 ## 项目简介 Raylib-CPP 是基于 [Raylib](http://www.raylib.com/) 的 C++ 封装版本,Raylib 原生是一个用 C 编写...

gitblog_00020的博客 923

【游戏引擎Easy2D】第一个引擎程序

哈喽大家好,我是iecne,本期为大家带来的是CPP/C++游戏引擎Easy2D教程 —— 调整窗口 ,包教包会,快来看看吧!

iecne的博客 3869

如何用c++写一个2维我的世界

要使用C++编写一个2D我的世界,需要考虑以下几点:选择适当的图形库(例如SFML)以实现图形界面。实现基本的游戏循环,并将其集成到您的图形库中。创建游戏对象(例如玩家、敌人、道具等),并确定它们在屏幕上出现的位置。确定游戏地图的大小和形状,以及何时进行胜利或失败条件检查。实现碰撞检测,使游戏对象能够相互作用。添加声音效果和背景音乐。使用文件系统保存和加载游戏状态。下面是一个简单的伪代码示例,展示了如何实现上述功能。

有求必应,有问必答(只要是我能解决的) 3912

C++原创2D我的世界1.00.0版本

大家好,我是奇葩博士。这期我给大家带来的是C++2D我的世界1.00.0版本。此版本只有移动功能,到后续我会增加更多细节。我看了一下,这些代码一共有580行!我编的时候也真没想到。老规矩,先准备头文件和命名空间。大家帮我投个票,下一个版本加一个什么功能。

QIPABOSHI的博客 1113
上一篇: 让我们用C++做一个简单的飞机飞行模拟器
下一篇: 开始深入算法啦!C++蒙特卡罗法计算圆周率,本人实测没有BUG
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值