How time fly!

作者回顾了一年来的技术学习经历,包括多种编程语言和技术领域的涉猎,并展望了即将面临的求职挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  时间过得太快了,上一篇中我写关于当一个小头目的一些领悟,如今,又多半年过去了。。。

  在过去的一年中,其实接触的技术还是蛮多的,阅读的代码和自己敲出来的代码都不少。从工作流、到流媒体、到数据处理、到Web2.0流利的Tag、RSS等等;从C++到C#。可惜很多东西都只是浅尝辄止,而且由于时间和精力问题,也没能及时把这些学过的东西整理出来,呵呵

  毕业班的师兄和师弟(以及师姐和师妹)们都在准备着各种毕业手续,目送朋友们踏入社会后,很快就要轮到我们开始忙碌着找工作,忙碌着为前程而奔波。也许大多数人都会得到满意的结果,但当中的挣扎与苦累应该是少不了的。

  准备好,上路,带上心和智慧。

Frame-independent movement If you run everything we have done so far, you will be able to move the circle, but it won't move uniformly. It will probably be very fast, because currently we have done the movement in a very naive way. Right now your computer will be running the update() function as fast as it can, which means it will probably call it a couple of hundreds of times each second, if not more. If we move the shape by one pixel for every frame, this can count up to several 100 pixels every second, making our little player fly all over the screen. You cannot just change the movement value to something lower, as it will only fix the problem for your computer. If you move to a slower or faster computer, the speed will change again. So how do we solve this? Well, let's look at the problem we are facing. We are having a problem because our movement is frame-dependent. We want to provide the speed in a way that changes depending on the time a frame takes. There is a simple formula you should remember from your old school days. It's the formula that goes: distance = speed * time. Now why is this relevant for us? Because with this formula we can calculate a relevant speed for every frame, so that the circle always travels exactly the distance we want it to travel over one second, no matter what computer we are sitting on. So let's modify the function to what we actually need to make this work. void Game::update(sf::Time deltaTime) { sf::Vector2f movement(0.f, 0.f); if (mIsMovingUp) movement.y -= PlayerSpeed; if (mIsMovingDown) movement.y += PlayerSpeed; if (mIsMovingLeft) movement.x -= PlayerSpeed; if (mIsMovingRight) movement.x += PlayerSpeed; mPlayer.move(movement * deltaTime.asSeconds()); } The major difference we have made here is that we now receive a time value every time we call the update. We calculate the distance we want to travel every frame, depending on how much time has elapsed. We call the time that has elapsed since the last frame delta time (or time step), and often abbreviate it as dt in the code. But how do we get this time? We are lucky because SFML provides the utilities for it.翻译
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值