同じで2周分ということになります。円はちょうど1周回れば0度と同じですよね?つまり、2*PIでいいわけです。n)は0~nの整数を返します。L99のGetRand(4*PI)はintにキャストされGetRand(12)で0,1,2,...,11,12となっています。GetRand(400*PI)/100.0;というように先に得たい乱数の範囲を100倍し、後で100分の1にします。角度計算はラジアンでやるよりも度数でやった方が分かりやすいです。cos()、sin()に整数に近い幅の値が渡されてますので360度に方向転換できるように見えて実は約6方向にしか転換できないです。abs(carni[i].y-herbi[i].y)<herbi[i].height)という感じにするとすっきりします。当たり判定の処理が肉食動物から見た場合と草食動物から見た場合に分けて考えなければならなくなるのでできれば座標の基準点は左上ではなく中心に持ってきた方が良いかと思います。余計なお世話かもしれませんが、関数を作った場合はまずDrawStringやprintfなどで意図した値が入っているかどうか、入れた値から正しい結果が返ってくるか確認してみてください。if文で条件式が複雑になっていると実はどうやっても通らない条件が書かれているということは良くありますので。壁に当たったら自分と反対方向に+-90度向きを変えるようにしました(つもり)。それと肉食動物と草食動物が当たった場合には草食動物は食べられてしまうので、lifeを0にして表示をしないようにしました。移動については今は肉食動物だけ変更してみて、乱数で止まり、タイマーで移動or停止の乱数を再度実行するプログラムにしてみました。(乱数はてきとうに作ったらいい感じなので確認してません)あとは肉食動物は一定時間で消えるようにしました。草食動物を食べることによりlifeが1たささって、1秒タイムが伸びるようにしたつもりです。コードも載せておきます。0;}}}}}(結構てきとうに作ったので理由が確かではない場合や、望んでいる結果を出すことのできないプログラムを作ってる可能性があります。)バランスは今最悪に悪いです。t;がグローバル変数。バグの元なので面倒でもローカル変数に。);が無いので処理落ちが発生している。動きは気になりますがとりあえず動いているとは思います。さんがどうしたいかによりますので、そこを書いてくださいね。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。次の質問が無いのであれば、トピックを解決にしておいてもいいと思いますよ。問題が出てきたら、新しく立てていただけばよいので。今回は質問用に一つのcppファイルにわざわざまとめてくださっているのかもしれませんがもし、そうでないのであれば、分割してみてはどうでしょう?確実に行う処理も増えてますしよりリアルな動きにさせたり配置するオブジェクトが増えたりすればコードがぐちゃぐちゃになりかねません。何がどの情報で、どこで使われるのかはっきりさせておくべきかと思います。)」「描画」と、少なくとも3つに分けることができます。)」「描画」>と、少なくとも3つに分けることができます。その分け方とは関数分けするということでしょうか、それともファイル分けするということでしょうか。私であればメイン関数、壁、動物とファイルに分けます。オブジェクト指向的に書くのならメイン関数、物体クラス、壁クラス、物体から派生した草、草食、肉食クラスと分けるでしょうか。皆さん本当にありがとうございました。一応最初に臨んだ結果ができたので今回は解決にしたいと思います。C++については勉強していないのでクラスとかはわからないですけど、そのうちやってみたいと思います。ファイル分けも確かにしないとプロトタイプ宣言で大変なことになりそうなので分けたいと思います。それではまたわからないところがあったら質問しにきますのでその時もよろしくお願いします。ミクプラは自由にリンクできます。