5 月 9 日のレポートについて 語学クラス:XXXX語XX 系:XXXX 学籍番号:C106XXXX 氏名:XXXXXXXXX 1)A:0b100011=20×1+21×1+22×0+23×0+24×0+25×1 =1+21+25 =35 答:0b100011=35 B:0x100011=35÷16=2余り3 =2÷16=0.125 余りの数を下から順番に並べる。 =13 答:0x100011=13 2) a:戦車で敵の部隊を攻撃する。戦車の武装は主砲とロケット砲である。 敵の部隊との距離が500m以内の場合は主砲で砲撃し、 1000m以内の場合はロケット砲による遠隔射撃を行なう。 1000m以上は武装の射程外のため攻撃は行なわれない。 敵の部隊に充分な損害を与えるには、数回の攻撃が必要である。 これをプログラムに書き直す。 b:#!/usr/koeki/bin/ruby print("敵部隊を発見しました\n") atack = 0 while atack <= 19 STDERR.printf("距離[m]を入力してください。 500m以内であれば砲撃を、1000m以内であればロケット砲での射撃を行ないます。:") range = gets.chomp!.to_i if range >= 1001 printf("武装の射程外のため攻撃できません。\n") elsif range >= 500 printf("ロケット砲の遠隔射撃により3ポイントの損害を与えました。\n") atack += 3 else printf("砲撃で敵部隊に5ポイントの損害を与えました。\n") atack += 5 end end printf("敵部隊に充分な損害を与えました。帰還します\n") c:ルビ緒ロボや曜日計算プログラムなどを参考にした。 敵にある程度のダメージを与えると終了するように、 while文を使い変数をatackとして条件付けた。 d:irsv{c106161}% ./wars.rb [~/Ruby] 敵部隊を発見しました 距離[m]を入力してください。 500m以内であれば砲撃を、1000m以内であればロケット砲での射撃を行ないます。:500 砲撃で敵部隊に5ポイントの損害を与えました。 距離[m]を入力してください。 500m以内であれば砲撃を、1000m以内であればロケット砲での射撃を行ないます。:501 ロケット砲の遠隔射撃により2ポイントの損害を与えました。 距離[m]を入力してください。 500m以内であれば砲撃を、1000m以内であればロケット砲での射撃を行ないます。:1040 武装の射程外のため攻撃できません。 距離[m]を入力してください。 500m以内であれば砲撃を、1000m以内であればロケット砲での射撃を行ないます。:400 砲撃で敵部隊に5ポイントの損害を与えました。 距離[m]を入力してください。 500m以内であれば砲撃を、1000m以内であればロケット砲での射撃を行ないます。:670 ロケット砲の遠隔射撃により2ポイントの損害を与えました。 距離[m]を入力してください。 500m以内であれば砲撃を、1000m以内であればロケット砲での射撃を行ないます。:120 砲撃で敵部隊に5ポイントの損害を与えました。 敵部隊に充分な損害を与えました。帰還します e:作っている最中に何度もktarmを再起動することになったが、 なかなか良くできたと思われる。自分側のHPや命中精度などを条件付け、 シミュレーションゲームのように発展させることもできるだろうか? f:授業中に使用したページのみ。 3)今回のレポートは、非常に苦労しました。題材を考えるのも大変でしたが、 それ以上にコードのケアレスミスで何度もプログラムが暴走してしまい、 ktermの再起動回数が20回以上になりました。しかし最後の方になると 自分のプログラムの発展性が見えてきて、色々と変数を用いて条件付けを してみたくなりました。暇があれば今後の授業で習う新しいコード等を用いて、 上記のプログラムをマイナーチェンジしてみたいと思っています。