変愚蛮怒のメインリポジトリです
Revision | 312776329928f0d34140ba085daad1b8a4bb9fdd (tree) |
---|---|
Time | 2018-12-12 21:56:11 |
Author | Deskull <deskull@user...> |
Commiter | Deskull |
[Refactor] #37353 mysqrt() を z-util.c へ移動。 / Move mysqrt() to z-util.c.
@@ -197,7 +197,7 @@ void reset_target(monster_type *m_ptr) | ||
197 | 197 | */ |
198 | 198 | monster_race *real_r_ptr(monster_type *m_ptr) |
199 | 199 | { |
200 | - return &r_info[real_r_idx(m_ptr)]; | |
200 | + return &r_info[real_r_idx(m_ptr)]; | |
201 | 201 | } |
202 | 202 | |
203 | 203 | MONRACE_IDX real_r_idx(monster_type *m_ptr) |
@@ -1216,47 +1216,6 @@ errr get_mon_num_prep(monsterrace_hook_type monster_hook, | ||
1216 | 1216 | return (0); |
1217 | 1217 | } |
1218 | 1218 | |
1219 | -/*! | |
1220 | - * @brief 平方根を切り捨て整数で返す | |
1221 | - * @param n 数値 | |
1222 | - * @return 平方根 | |
1223 | - */ | |
1224 | -static int mysqrt(int n) | |
1225 | -{ | |
1226 | - int tmp = n>>1; | |
1227 | - int tasu = 10; | |
1228 | - int kaeriti = 1; | |
1229 | - | |
1230 | - if (!tmp) | |
1231 | - { | |
1232 | - if (n) return 1; | |
1233 | - else return 0; | |
1234 | - } | |
1235 | - | |
1236 | - while(tmp) | |
1237 | - { | |
1238 | - if ((n/tmp) < tmp) | |
1239 | - { | |
1240 | - tmp >>= 1; | |
1241 | - } | |
1242 | - else break; | |
1243 | - } | |
1244 | - kaeriti = tmp; | |
1245 | - while(tasu) | |
1246 | - { | |
1247 | - if ((n/tmp) < tmp) | |
1248 | - { | |
1249 | - tasu--; | |
1250 | - tmp = kaeriti; | |
1251 | - } | |
1252 | - else | |
1253 | - { | |
1254 | - kaeriti = tmp; | |
1255 | - tmp += tasu; | |
1256 | - } | |
1257 | - } | |
1258 | - return kaeriti; | |
1259 | -} | |
1260 | 1219 | |
1261 | 1220 | /*! |
1262 | 1221 | * @brief 生成モンスター種族を1種生成テーブルから選択する |
@@ -282,3 +282,45 @@ int count_bits(BIT_FLAGS x) | ||
282 | 282 | |
283 | 283 | return (n); |
284 | 284 | } |
285 | + | |
286 | +/*! | |
287 | + * @brief 平方根を切り捨て整数で返す | |
288 | + * @param n 数値 | |
289 | + * @return 平方根 | |
290 | + */ | |
291 | +int mysqrt(int n) | |
292 | +{ | |
293 | + int tmp = n >> 1; | |
294 | + int tasu = 10; | |
295 | + int kaeriti = 1; | |
296 | + | |
297 | + if (!tmp) | |
298 | + { | |
299 | + if (n) return 1; | |
300 | + else return 0; | |
301 | + } | |
302 | + | |
303 | + while (tmp) | |
304 | + { | |
305 | + if ((n / tmp) < tmp) | |
306 | + { | |
307 | + tmp >>= 1; | |
308 | + } | |
309 | + else break; | |
310 | + } | |
311 | + kaeriti = tmp; | |
312 | + while (tasu) | |
313 | + { | |
314 | + if ((n / tmp) < tmp) | |
315 | + { | |
316 | + tasu--; | |
317 | + tmp = kaeriti; | |
318 | + } | |
319 | + else | |
320 | + { | |
321 | + kaeriti = tmp; | |
322 | + tmp += tasu; | |
323 | + } | |
324 | + } | |
325 | + return kaeriti; | |
326 | +} | |
\ No newline at end of file |
@@ -65,4 +65,5 @@ extern void s64b_mod(s32b *A1, u32b *A2, s32b B1, u32b B2); | ||
65 | 65 | #endif |
66 | 66 | |
67 | 67 | extern int count_bits(BIT_FLAGS x); |
68 | +extern int mysqrt(int n); | |
68 | 69 |