CTime类的一个BUG

最近学习PE结构的时候在有一个IMAGE_FILE_HEADER的时候发现有一个参数是

DWORD TimeDateStamp;  //表示时间日期标记

表示从1970-1-1 0:0:0开始到现在的日期秒数。

我想如果能够修改,是不是能修改程序的日期。

所以想到用需要修改的日期,减去1970-1-1 0:0:0的秒数,然后修改即可。

 

在使用CTime对变量赋值的时候,编译可以通过。

但是运行却会报错。

也就是这个会报错

CTime t(1970,1,1,0,0,0);   

这个是不允许的,修改为

CTime t(1970,1,2,0,0,0);

就可以了,所以进行日期相减的时候需要加上这24小时的秒数。

### 开发游戏的步骤 使用 C++ 开发游戏通常需要遵循以下步骤: 1. **选择合适的游戏引擎**:虽然 C++ 本身可以用来直接编写游戏逻辑,但大多数现代游戏开发会使用游戏引擎来简化开发过程。虚幻引擎(Unreal Engine)是一个流行的选择,它提供了强大的图形渲染能力、物理引擎、动画系统等[^2]。 2. **设置开发环境**:你需要安装一个 C++ 编译器和集成开发环境(IDE)。对于 Windows 平台,Visual Studio 是一个常见的选择;而对于 Linux 或 macOS,你可以使用 GCC 或 Clang 编译器[^1]。 3. **学习 C++ 基础知识**:如果你是 C++ 新手,建议先掌握基本的语法,包括、对象、继承、多态、模板等特性。这些概念在游戏开发中非常重要。 4. **学习游戏开发基础知识**:这包括游戏循环、事件处理、图形渲染、音频处理、碰撞检测等。你可以通过官方文档、教程或在线课程来学习这些内容[^2]。 5. **创建游戏项目**:在虚幻引擎中,你可以通过蓝图系统快速创建游戏原型,然后逐步用 C++ 实现更复杂的功能。例如,你可以创建一个简单的 2D 游戏,如贪吃蛇或俄罗斯方块,来练习基本的游戏逻辑。 6. **调试和优化**:游戏开发过程中,性能优化是一个持续的任务。你需要确保游戏在目标平台上运行流畅,同时修复可能出现的 bug。 7. **发布游戏**:完成开发后,你可以将游戏打包并发布到不同的平台,如 PC、主机或移动设备。 ### 示例代码:简单的控制台游戏 以下是一个简单的控制台游戏示例,展示了如何用 C++ 创建一个猜数字游戏: ```cpp #include <iostream> #include <cstdlib> #include <ctime> int main() { srand(static_cast<unsigned int>(time(0))); // 初始化随机数种子 int secretNumber = rand() % 100 + 1; // 生成 1 到 100 之间的随机数 int guess = 0; std::cout << "欢迎来到猜数字游戏!" << std::endl; std::cout << "请输入 1 到 100 之间的数字:" << std::endl; do { std::cin >> guess; if (guess > secretNumber) { std::cout << "太大了!请再试一次:" << std::endl; } else if (guess < secretNumber) { std::cout << "太小了!请再试一次:" << std::endl; } else { std::cout << "恭喜你,猜对了!" << std::endl; } } while (guess != secretNumber); return 0; } ``` ### 进阶建议 - **学习虚幻引擎**:如果你计划开发更复杂的游戏,建议深入学习虚幻引擎。虚幻引擎提供了 C++ API,允许你完全控制游戏逻辑。 - **参与开源项目**:参与开源游戏项目可以帮助你更好地理解实际游戏开发中的代码结构和设计模式。 - **加入社区**:加入 C++ 和游戏开发相关的论坛、QQ 群或 Discord 服务器,可以获取更多学习资源和技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值