- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
int turn = m_mapObject->getTurnSpeed();
//НЕ НАДО ТУТ ОПТИМИЗИРОВАТЬ /= 45 !!!!
if (turn != 0) {
if (turn > 0) {
// qDebug() << "Turn plus";
turn /= 45;
if (turn < 4) turn = 4;
if (turn > 8) turn = 8;
} else {
// qDebug() << "Turn minus";
turn /= 45;
if (turn > -4) turn = -4;
if (turn < -8) turn = -8;
}
paint.drawLine(QPoint(0,-speed),QPoint(turn,-speed));
}
3.14159265 05.10.2015 12:36 # +2
defecate-plusplus 05.10.2015 12:43 # +2
3.14159265 05.10.2015 12:46 # +5
bormand 05.10.2015 20:14 # +3
Пруф: http://ideone.com/E7ZqWG
bormand 05.10.2015 20:42 # +5
bormand кончил и закурил. Юнит-тест:
bormand 05.10.2015 20:55 # +3
bormand 05.10.2015 21:19 # +3
bormand 05.10.2015 21:22 # +1
inkanus-gray 05.10.2015 21:55 # +6
Xom94ok 05.10.2015 23:11 # +4
Кстати, его 10-летний сын написал свою вторую игру, 2k строк на диалекте лиспа.
http://1k3c.com
К чему это я? Пойду в своё колесо, свернусь комочком и порыдаю над своими тупостью и ленью.
Stallman 05.10.2015 23:36 # +6
roman-kashitsyn 05.10.2015 23:46 # +4
Jeff Dean was forced to invent asynchronous APIs one day when he optimized a function so that it returned before it was invoked.
gost 06.10.2015 10:23 # +2
imihajlov 06.10.2015 11:26 # +1
roman-kashitsyn 06.10.2015 12:00 # 0
imihajlov 06.10.2015 12:14 # 0
bormand 06.10.2015 18:14 # +2
a = abs(turn). Здесь код читается не совсем так, как кажется на первый взгляд - (turn+s)^s, у плюса приоритет больше. При s=0 получается (turn+0)^0 -> turn, при s=-1 получается (turn-1)^(-1) -> ~(turn-1) -> -turn (в процах, емнип, neg через побитовый not так и запилен).
To be continued...
bormand 06.10.2015 18:19 # +2
(180-a)>>31 - аналогично, если a>180 - 0xFFFFFFFF, иначе 0
Эти значения далее будут использоваться как маски, чтобы реализовать подобие тернарника.
To be continued...
bormand 06.10.2015 18:27 # +2
To be continued...
bormand 06.10.2015 18:31 # +2
По сути там a > 360 ? 8 : a > 180 ? a / 45 : 4.
Ну и последнее +s^s восстанавливает знак числа. Вот и всё байтоёбство, ничего особо сложного :)
3_dar 06.10.2015 20:57 # +2
bormand 07.10.2015 06:00 # +1
Antervis 05.10.2015 12:53 # +2
3.14159265 05.10.2015 13:17 # 0
Antervis 05.10.2015 13:19 # +1
3.14159265 05.10.2015 14:16 # 0
Antervis 05.10.2015 14:26 # +2
inkanus-gray 05.10.2015 13:14 # 0
bormand 05.10.2015 19:30 # +5
//НЕ НАДО ТУТ ОПТИМИЗИРОВАТЬ /= 45 !!!!
inkanus-gray 05.10.2015 13:11 # 0
Antervis 05.10.2015 13:20 # +2
santa_microbe 05.10.2015 13:21 # +7
//НЕ НАДО ТУТ ОПТИМИЗИРОВАТЬ /= 45 !!!!
1024-- 05.10.2015 14:51 # +1
progsmile 05.10.2015 19:27 # 0
Psionic 16.05.2016 14:53 # 0
Antervis 16.05.2016 16:09 # 0