11 月 14 日 第 7 回レポート 「Method を自分で作ろう」 学籍番号: C106XXXX 氏名: XXXXXXXX 語学クラス:中国語XX 系: 社会系 1. A def attendance(gameover) for 0..gameover.length # gameoverの回数をするのをとる end end def boss(bossdesu) # ボスが出る end print("ボスを倒しにゲームをするぞーーー\n") a = 0 while a > 0 attendance(game) # gameoverを何回かする method を呼びます # ゲームをする部分 boss(a) # a+1 のボスが出ます a += 1 end print("今日もゲームをして、%d 体のボスが出たよ", i) print("%d 体のボスが出て、大変だよーー", i) 2. A. 考えた設定 今回はARGVを使いプログラムを作成した。 プログラムを普通に起動した場合、プログラムの説明を表示して 数字を入力させるように促し、 プログラムに文字を入力し起動した場合、文字を繋げて表示させるように プログラムを作成した。 作成したプログラムコードそのもの #!/usr/koeki/bin/ruby while true if ARGV[0] == nil #文字が入力した場合 STDERR.print("10字まで文字を入力してください\n") sleep 1 STDERR.print("10字以上入力してしまうと表示されません。\n") sleep 1 STDERR.print("それでは、入力しましょう\n") sleep 1 STDERR.print("注意 : スペースを空けて入力してください!!\n") sleep 1 STDERR.print("例 : ./onephrase.rb j a s a a a 2 \n") break exit end if word1 = ARGV[0] word2 = ARGV[1] word3 = ARGV[2] word4 = ARGV[3] word5 = ARGV[4] word6 = ARGV[5] word7 = ARGV[6] word8 = ARGV[7] word9 = ARGV[8] word10 = ARGV[9] end printf("あなたが入力した文字を表示させるよ\n") sleep 2 printf("こちら!!!\n") sleep 2 puts "-" * 79 # - を79個表示させる printf("%s",word1) printf("%s",word2) printf("%s",word3) printf("%s",word4) printf("%s",word5) printf("%s",word6) printf("%s",word7) printf("%s",word8) printf("%s",word9) printf("%s\n",word10) puts "-" * 79 # - を79個表示させる break end もとにしたプログラムからの変更点 西村先生のホームページ 基礎プログラミング2の第6回 航空券予約にある airline.rbのプログラムを参考にしました。 aireline.rbを貼り付けておきます。 西村先生のホームページ 基礎プログラミング2の第7回 while文の入力方法を参考にしました。 このairline.rbのプログラムを基礎にして、そこにwhile文を加え 自分のプログラムにあうように改良、作成しました。 プログラムを実行した結果画面 普通にプログラムを起動した場合 irsv{c106054}% ./onephrase.rb [~/Ruby] 10字まで文字を入力してください 10字以上入力してしまうと表示されません。 それでは、入力しましょう 注意 : スペースを空けて入力してください!! 例 : ./onephrase.rb j a s a a a 2 文字を入力しプログラムを起動した場合 irsv{c106054}% ./onephrase.rb 名 探 偵 こ ま ん [~/Ruby] あなたが入力した文字を表示させるよ こちら!!! ------------------------------------------------------------------------------- 名探偵こまん ------------------------------------------------------------------------------- irsv{c106054}% ./onephrase.rb a b c d e f g h i j [~/Ruby] あなたが入力した文字を表示させるよ こちら!!! ------------------------------------------------------------------------------- abcdefghij ------------------------------------------------------------------------------- 導き出された結果の考察 今回は、ifだけでは工夫がしにくいと考え、while文でできないかと思い 試してみた。そして、無事起動ができたのでよかった。 もう少しwhile文を活かせるようにプログラムを改良したり、 10文字以上入力した場合エラーを発生させるようにしたかった。 whileを活かすことができれば楽しいプログラムになるはずなので努力したい。 しかし、このプログラムではスペースを空けなくても表示されるように なっていたのが疑問に思った。%sに原因があると調べたがならなかった。 参考文献 西村先生のホームページ 基礎プログラミング2の第6回 航空券予約にある airline.rbのプログラムを参考にしました。 URL http://roy/~madoka/2007/r2/06/06-03-airline.html 西村先生のホームページ 基礎プログラミング2の第7回 while文の入力方法を参考にしました。 URL http://roy/~madoka/2007/r2/07/07-10-methodinmethod.html B. 考えた設定 今回は植物の種から育てるプログラムに設定した。 プログラムを起動することで、名前を決めて 4つの選択肢を選択していき、最後にはどのような植物?になるか 分かるプログラムです。 作成したプログラムコード #!/usr/koeki/bin/ruby printf("今日不思議なおばさんから植物の種をもらったぞーー\n") sleep 1 printf("さっそく植えてみよう!!\n") start = 3 while start > 0 printf("%d 秒前 \n", start) start -= 1 sleep(1) end printf("植えたぞ!!!育てよう!!!!\n") def dance(pl) pl.times do print("くねっ\t") end print("\n") sleep 1 end def command(name) STDERR.print("[1]\t水をあげようかな?\n") STDERR.print("[2]\t音楽をきかせようかな?\n") STDERR.print("[3]\t太陽を浴びさせようかな?\n") STDERR.print("[4]\t放置プレイをしようかな?\n") end def fat(days,exercise) x = 6 * days - exercise return x end printf("ん? 種が動いてる。\n") STDERR.printf("どんな名前しようかな?") name = gets.chomp if name == "" then name = "ひでっち" end printf("%sという名前になった。\n",name) sleep 1 good = 1 # 気持ちよさ water = 1 # 水分 day = 0 # 育てた日付 printf("よく動くとすくすく育つ・・・・・かも\n") while true dance(good) command(name) answer = gets.chomp!.to_i good += day * answer water += fat(day,answer) if good > 6 # good が 6以上いった場合やめる break end if water > 6 # water が 6以上いった場合やめる break end dance(answer) #選択した数だけくねくね動く printf("%s日目だよーー\n",day += 1) sleep 1 printf("気持ちよさは %s くらいかな?\n",day * answer) sleep 1 printf("水分は %s になってるな\n",fat(day,answer)) end printf("%s\n",dance(good)) # 最終段階のgoodがくねっの数になる if water > 14 # waterが 14 以上の場合 printf("%sは綺麗な桜 になりました。\n",name) elsif water <= 9 # waterが 9 以下と同じ 場合 printf("%sは・・・これは・・・ひまわり?になりました。\n",name) elsif water == 10 # waterが 10 の場合 printf("%sは・・・かかしみたいになりました\n",name) else # waterが それ以外の場合 printf("%sは綺麗な紫陽花になりました\n",name) end もとにしたプログラムからの変更点 西村先生のホームページ 基礎プログラミング2の第7回 応用 るびおっちにある rubiocci.rbのプログラムを参考にしました。 rubiocci.rbを貼り付けておきます ここにあるプログラムにあるrubiocci.rbを基礎にしました。 基礎にして工夫できる所や自分の内容にあうように 改良しました。 プログラムを実行した結果画面 綺麗な桜になる場合 irsv{c106054}% ./plant.rb [~/Ruby] 今日不思議なおばさんから植物の種をもらったぞーー さっそく植えてみよう!! 3 秒前 2 秒前 1 秒前 植えたぞ!!!育てよう!!!! ん? 種が動いてる。 どんな名前しようかな? ひでっちという名前になった。 よく動くとすくすく育つ・・・・・かも くねっ [1] 水をあげようかな? [2] 音楽をきかせようかな? [3] 太陽を浴びさせようかな? [4] 放置プレイをしようかな? 1 くねっ 1日目だよーー 気持ちよさは 1 くらいかな? 水分は 5 になってるな くねっ [1] 水をあげようかな? [2] 音楽をきかせようかな? [3] 太陽を浴びさせようかな? [4] 放置プレイをしようかな? 1 くねっ 2日目だよーー 気持ちよさは 2 くらいかな? 水分は 11 になってるな くねっ くねっ [1] 水をあげようかな? [2] 音楽をきかせようかな? [3] 太陽を浴びさせようかな? [4] 放置プレイをしようかな? 1 くねっ くねっ くねっ くねっ 1 ひでっちは綺麗な桜 になりました。 綺麗な紫陽花になる場合 くねっ [1] 水をあげようかな? [2] 音楽をきかせようかな? [3] 太陽を浴びさせようかな? [4] 放置プレイをしようかな? 2 くねっ くねっ 1日目だよーー 気持ちよさは 2 くらいかな? 水分は 4 になってるな くねっ [1] 水をあげようかな? [2] 音楽をきかせようかな? [3] 太陽を浴びさせようかな? [4] 放置プレイをしようかな? 2 くねっ くねっ 2日目だよーー 気持ちよさは 4 くらいかな? 水分は 10 になってるな くねっ くねっ くねっ [1] 水をあげようかな? [2] 音楽をきかせようかな? [3] 太陽を浴びさせようかな? [4] 放置プレイをしようかな? 2 くねっ くねっ くねっ くねっ くねっ くねっ くねっ 1 ひでっちは綺麗な紫陽花になりました かかしになる場合 くねっ [1] 水をあげようかな? [2] 音楽をきかせようかな? [3] 太陽を浴びさせようかな? [4] 放置プレイをしようかな? 3 くねっ くねっ くねっ 1日目だよーー 気持ちよさは 3 くらいかな? 水分は 3 になってるな くねっ [1] 水をあげようかな? [2] 音楽をきかせようかな? [3] 太陽を浴びさせようかな? [4] 放置プレイをしようかな? 3 くねっ くねっ くねっ 2日目だよーー 気持ちよさは 6 くらいかな? 水分は 9 になってるな くねっ くねっ くねっ くねっ [1] 水をあげようかな? [2] 音楽をきかせようかな? [3] 太陽を浴びさせようかな? [4] 放置プレイをしようかな? 3 くねっ くねっ くねっ くねっ くねっ くねっ くねっ くねっ くねっ くねっ 1 ひでっちは・・・かかしみたいになりました ひまわり?になる場合 くねっ [1] 水をあげようかな? [2] 音楽をきかせようかな? [3] 太陽を浴びさせようかな? [4] 放置プレイをしようかな? 4 くねっ くねっ くねっ くねっ 1日目だよーー 気持ちよさは 4 くらいかな? 水分は 2 になってるな くねっ [1] 水をあげようかな? [2] 音楽をきかせようかな? [3] 太陽を浴びさせようかな? [4] 放置プレイをしようかな? 4 くねっ くねっ くねっ くねっ 2日目だよーー 気持ちよさは 8 くらいかな? 水分は 8 になってるな くねっ くねっ くねっ くねっ くねっ [1] 水をあげようかな? [2] 音楽をきかせようかな? [3] 太陽を浴びさせようかな? [4] 放置プレイをしようかな? 4 くねっ くねっ くねっ くねっ くねっ くねっ くねっ くねっ くねっ くねっくねっ くねっ くねっ 1 ひでっちは・・・これは・・・ひまわり?になりました。 導き出された結果の考察 今回はプログラムの工夫する点がうまくいかずに、基礎に似ている形になってし まった。もう少し自分の工夫できる点はしっかり知識をつけて臨みたい。 しかし、プログラムの内容はしっかり理解でき次回にも繋げられそうなので よかった。そして、選択肢を連続するとそれぞれの結果になるようにしたのは 頑張れた。if文をもう少し繋げればプログラムをもう少し発展できそうなので 調べていきたい。 参考文献 西村先生のホームページ 基礎プログラミング2の第7回 応用 るびおっちにある rubiocci.rbのプログラムを参考にしました。 URL http://roy/~madoka/2007/r2/07/07-11-rubiocci.html 3. 前回のARGV文を使うプログラムがあったので、ARGV文の再確認及び 講義で行なった応用 るびおっちのプログラムについて調べました。 前回の講義のホームページを見たり、自分なりにプログラムを作成し どのような仕組みになっているかなど調べました。 今回は、参考にしたのは 西村先生のホームページ 基礎プログラミング2の第6回 航空券予約にある airline.rbのプログラムを参考にしました。 基礎プログラミング2の第7回 while文の入力方法を参考にしました。 基礎プログラミング2の第7回 応用 るびおっちにある rubiocci.rbのプログラムを参考にしました。 プログラムがあるのはそれを基礎にして、プログラムを見てどのように 改良していくかを考えながら行ないました。文はプログラム上では どのような効果があるのかを考えながら参考にしました。