// 俺りふぁれんす。
C言語風プログラミング言語で最強のロボット(AI)を作るゲームです
・基本 1000*1000Map ロボットは、ダメージを100以上受けると破壊される ロボッは移動・索敵・攻撃することができる。 ・注意 C言語風の文法だがwiki曰く『浮動小数点数、構造体、共用体、ポインタ、一部の制御構文などがない』 ・ロボットの制御関数 scan(索敵) cannon(砲撃) drive(移動) damane(ダメージ取得) speed(スピード制御) loc_x/loc_y(現在位置取得) ・角度はロボット向きではなくMAP依存 右端から始まり(0,0)、左上(999,999) 90 +------+ |180 |0 | | +------+ 270 ・scan(角度,解像度) スキャンした範囲に敵がいないと"0"を返します。 敵を発見した場合"範囲"を返します。 角度は0-359 解像度+/- 0-10(精度?) ・cannon(角度,範囲) 角度0-359 scan()の見える範囲0-359まで砲撃可能。 最大0-700 発射されると返り値として"1"を返します。 リロード中は"0"を返す(?) (角度というのは砲台のこと) ・drive(角度,速度) 方向は0(東)-360、速度は0-100 (こいつは車体) ・damage(引数無し) 返り値で現在の耐久値(0-99)をパーセントで返します。 100%の損害は破壊されて動くことができません。 ・speed(引数無し) 現在のロボットの移動速度(0-99)を帰り値で返します。 ・loc_x()、loc_y() loc_x()は、x軸(0-999)を返します。 loc_y()は、y軸(0-999)を返します。 どちらも引数はありません。 ・rand (limit) 0からlimitまでの乱数を返します、最高32767。 ・その他関数 ・sqrt (引数) 引数から平方根を返します。 ・sin (degree) ・cos (degree) ・tan (degree) ・atan (ratio) ・サンプル(チュートリアルから拝借) 1.(移動と旋回) drive(0,100); /* 東へ100%の速度で移動 */ drive(90,0); /* 停止したまま90度曲がる */ 2.(ダメージの活用) d = damage(); /* 現在のダメージ値をdに */ ; ; ; /* その他もろもろの処理 */ if (d != damage()) /* もし、前の状態と違っていたら */ { drive(90,100); /* ロボットは攻撃を受けたか動けないかもしれないので移動します */ d = damage(); /* そして現在のダメージ値をdへ */ } 3.(停止の判定) drive(270,100); /* 移動なう */ ; ; ; /* その他処理 */ if (speed() == 0) /* ロボットが止まっていないかチェック */ { drive(90,20); /* 止まってたら別方向へ移動*/ } 4.(索敵と砲撃) int angle,Range; angle = 0; while (angle < 358) { /* angle(角度)が358よりも小さかったら */ Range = scan(angle,1); /* レーダーでその角度で索敵して範囲(Range)へ*/ if (40 < Range) { /* もし範囲40内に敵がいたら */ cannon(angle, Range); /* その角度と範囲で攻撃 */ angle = angle - 2; /* 調整 */ } angle = angle + 1; /* 範囲内に敵がいなければ現在の角度+1加算 */ }
・参考
CROBOTS: C-Robots
http://corewar.co.uk/crobots/
・使用ソフト
CRobots 3D
http://antru.ru/