パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

三角関数で弾道計算(方向計算)

2021-01-29 | プログラムをマスター計画2020

もともとコンピュータは弾道計算から発展したとか、暗号解読から発展したとか

いろいろな事象の計算から発展したそうです。

 

プチコンとかの投稿を見ていても。

三角関数はたまに難題としてあがっています。(高校で習う)

あとラジアンと度の変換とかいろんな罠がまってます。

 

三角関数 ラジアン でgoogle画層検索すると、

山のように教えてくれる画像がでてきます。(それぐらい難題なのかもしれません)

 

角度の計算をするときには有用なのでシューティングゲームでそれなりの知能のある

敵を作成するときとか、時計の針の先をまわしてみたい時とかによく使われます。

 

CodinGameに新しくTanks!の投稿があったので、さっそく遊んでみました。

 

昔robocodeとか、さらに前でロボットバトルとか何度か遊んだ記憶があります。

当時は作れなかったような...

上のタンクたち少し違いはありますがだいたい下のコードで動いています。

 

自分からみた相手のx,yとの距離から砲塔の角度を求めて、その方向に打ってます。

移動に関しては最初から入っていた回転に、ちょっとだけランダムでずらしました。

33行目が砲塔の角度を算出している行です。

 

タンジェントで出しています。

このゲームのルールで真上が0度なので90度(ラジアンでpi/2)ほどデフォルトでたして

x座標、相手の方が前の時、向きが逆にならなかったので180度(ラジアンだとpi)反転させています。

 

その前にプログラムのコメントが山ほどありますが、実はこの倍ぐらいいろいろ試してやっと...

他の方も、いろいろ試行錯誤しているのではないかと考えています。


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。