提出課題:05回目レポート
本文:
1.
#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-

heart = 0

def goodaction( )
  a = ["大好物!","とってもうれしい!","ありがとう!"]
  srand
  action = rand(3)
  return a[action]
end



def bad( )
  print"おいしいよね\n"
  srand
  b = rand(5)*5+10
  printf("好感度が+%dになりました\n",b)
  return b
end


def good( )
  printf("「%s」と良い反応そうです\n",goodaction)

  c = 50
  printf("好感度が+%dになりました\n",c)
  return c
end



print"ドアの向こうにいるキャラクターとお友達になろう!\n好感度が100になったらお友達になれるよ\n"


while true
print"どのドアを開けますか? (A,B,C,D)\n"
open = gets.chomp!

if open == "A"
  print"バッドばつ丸くんがいました!\n"
elsif open == "B"
  print"ポチャッコがいました!\n"
elsif open == "C"
  print"クロミちゃんがいました!\n"
elsif open == "D"
  print"マイメロディちゃんがいました!\n"
end

printf("現在の好感度は%dです\n",heart)

print"あなたは何をプレゼントしますか?\n[らっきょう、バナナアイス、アーモンドパウンドケーキ、ポリパリラーメン]\n"
present = gets.chomp!

if open == "A" && present == "ポリパリラーメン"
 heart += good( )
elsif open == "B" && present == "バナナアイス"
 heart += good( )
elsif open == "C" && present == "らっきょう"
  heart += good( )
elsif open == "D" && present == "アーモンドパウンドケーキ"
  heart += good( )
else
  heart += bad( )
end

printf("%sをプレゼントして好感度が%dになったよ\n",present,heart)
if heart >= 100
  break
end
print"また会いに行きたいですか? ( Y or N )\n"
answer = gets.chomp!
if answer == "N"
  break

else
  print"ドアを選びに行こう\n"
end


end

if heart >= 100
  print"おめでとうごさいます!\n好感度がマックスになりました!\n"
else
  printf("好感度は%dです!\nプレゼントをくれてありがとう!!\n",heart)
end


2.
実行結果1
ドアの向こうにいるキャラクターとお友達になろう!
好感度が100になったらお友達になれるよ
どのドアを開けますか? (A,B,C,D)
A
バッドばつ丸くんがいました!
現在の好感度は0です
あなたは何をプレゼントしますか?
[らっきょう、バナナアイス、アーモンドパウンドケーキ、ポリパリラーメン]
ポリパリラーメン
「大好物!」と良い反応そうです
好感度が+50になりました
ポリパリラーメンをプレゼントして好感度が50になったよ
また会いに行きたいですか? ( Y or N )
Y
ドアを選びに行こう
どのドアを開けますか? (A,B,C,D)
A
バッドばつ丸くんがいました!
現在の好感度は50です
あなたは何をプレゼントしますか?
[らっきょう、バナナアイス、アーモンドパウンドケーキ、ポリパリラーメン]
ポリパリラーメン
「とってもうれしい!」と良い反応そうです
好感度が+50になりました
ポリパリラーメンをプレゼントして好感度が100になったよ
おめでとうごさいます!
好感度がマックスになりました!

実行結果2
ドアの向こうにいるキャラクターとお友達になろう!
好感度が100になったらお友達になれるよ
どのドアを開けますか? (A,B,C,D)
B
ポチャッコがいました!
現在の好感度は0です
あなたは何をプレゼントしますか?
[らっきょう、バナナアイス、アーモンドパウンドケーキ、ポリパリラーメン]
らっきょう
おいしいよね
好感度が+30になりました
らっきょうをプレゼントして好感度が30になったよ
また会いに行きたいですか? ( Y or N )
Y
ドアを選びに行こう
どのドアを開けますか? (A,B,C,D)
B
ポチャッコがいました!
現在の好感度は30です
あなたは何をプレゼントしますか?
[らっきょう、バナナアイス、アーモンドパウンドケーキ、ポリパリラーメン]
ポリパリラーメン
おいしいよね
好感度が+20になりました
ポリパリラーメンをプレゼントして好感度が50になったよ
また会いに行きたいですか? ( Y or N )
N
好感度は50です!
プレゼントをくれてありがとう!!


3.
キャラクターの好感度を上げて友達になるプログラムを作成した
(6~11)それぞれのキャラクターのスキなものがプレゼントされた場合のアクションをランダムで配列の中からする
(15~21)スキなもの以外がプレゼントされたときの反応+好感度が10~30の間でランダムで上がるようにする
(24~30)スキなものがプレゼントされたときの反応(6行目~でのもの)を表示し、好感度を50上げる
(41~49)扉の無効に誰がいるのか指定(プレゼントとセット条件があるため)
(56~66)それぞれのスキなものがプレゼントされた場合は、good のdefに飛んでそこからリターンされた数値をheart に足す。スキなもの以外が来た場合はbadに飛んで、リターンされた数値をheartに足す
(69~71)好感度がマックス以上になった場合、ループから抜ける
(84~)ループから抜けたあとの表示を設定


4.
defの方の処理とその他の処理でかぶった働きをしてしまうなど頭が混乱して、作るのが大変だった。
キャラクター別で好感度をあげれるようにしたかったが、heartを4つ作ったあと、どのようにそれぞれに足すように設定したら良いのかわからず、完璧なプロクラムを作ることはできなかった。
添付:
ruby2-03.rb