第11回 基礎プログラミング II レポート課題 氏名: 横山広樹 学籍番号: c109149A 語学クラス: 英語 1 コース(系): 環境サイエンス チーム名: ドクダミ草 チームホームページアドレス: http://roy.e.koeki-u.ac.jp/~c109067/dokudamisou/ プロジェクト名: べんカロ フルハウス 1. A リンク先 http://roy.e.koeki-u.ac.jp/~c109149/ 自分のホームページに新しくチームのホームページへのリンク、ほかのメンバー へのリンクを新しく張り付けた。 2. A プロジェクト1: べんカロ プロジェクト2: フルハウス べんカロの決定された経緯は弁当の中身を相手に選んでもらい、選んだものを 弁当にしたら楽しそうということで決定した。 フルハウスの決定された経緯はメンバーがトランプを使って賭け事をして遊ぶ プログラムを作ってみたいということから決定した。 B 自分が所属するプロジェクトは「フルハウス」です。 リンク先 http://roy.e.koeki-u.ac.jp/~c109067/dokudamisou/game.html 自分はプログラムを担当することになりました。 残りはもう一人のメンバーが担当することになりました。 しかし、まだ広告ページをどっちが担当するかまだ決まっていないため現在は リーダーが作ってくれたホームページになっています。なので早く決めて ホームページを作りたい。 C プログラムの部分 #!/usr/koeki/bin/ruby $KCODE = 'e' def make(card) for a in ["スペード","クラブ","ハート","ダイヤ"] 1.upto(13) do |b| card << {"suto" => a, "a" => b.to_i} end end shahul(card) end def shahul(d) srand 0.upto(d.length-1) do |e| f = rand(d.length)-1 g = d[e] d[e] = d[f] d[f] = g end end def yaku(card) h = Array.new h[0] = card[0]["a"] h[1] = card[1]["a"] h[2] = card[2]["a"] h[3] = card[3]["a"] h[4] = card[4]["a"] h.sort! if h[0] == 1 && h[1] == 10 && h[2] == 11 && h[3] == 12 && h[4] == 13 keka = "ロイヤルストレートフラッシュ" elsif h[0]+1 == h[1] && h[0]+2 == h[2] && h[0]+3 == h[3] && h[0]+4 == h[4] && card[0]["suto"] == card[2]["suto"] && card[2]["suto"] == card[3]["suto"] &&card[3]["suto"] == card[4]["suto"] keka = "ストレートフラッシュ" elsif h[0] == h[1] && h[1] == h[2] && h[2] == h[3] || h[1] == h[2] && h[2] == h[3] && h[3] == h[4] keka = "フォーカード" elsif h[0] == h[1] && h[2] == h[3] && h[3] == h[4] || h[3] == h[4] && h[0] == h[1] && h[1] == h[2] keka = "フルハウス" elsif card[0]["suto"] == card[1]["suto"] && card[1]["suto"] == card[2]["suto"] && card[2]["suto"] == card[3]["suto"] && card[3]["suto"] == card[4]["suto"] keka = "フラッシュ" elsif h[0]+1 == h[1] && h[0]+2 == h[2] && h[0]+3 == h[3] && h[0]+4 == h[4] keka = "ストレート" elsif h[0] == h[1] && h[1] == h[2] || h[1] == h[2] && h[2] == h[3] || h[2] == h[3] && h[3] == h[4] keka = "スリーカード" elsif h[0] == h[1] && h[2] == h[3] || h[0] == h[1] && h[3] == h[4] || h[1] == h[2] && h[3] == h[4] keka = "ツーペア" elsif h[0] == h[1] || h[1] == h[2] || h[2] == h[3] || h[3] == h[4] keka = "ワンペア" else keka = "ノーペア" end end def hyouji(card) t = 0 y = 0 for j in 0 .. 4 if card[j]["suto"] == "スペード" system("display -geometry +#{y}+#{t} http://roy/~c109149/spade#{card[j]["a"]}") elsif card[j]["suto"] == "クラブ" system("display -geometry +#{y}+#{t} http://roy/~c109149/club#{card[j]["a"]}") elsif card[j]["suto"] == "ハート" system("display -geometry +#{y}+#{t} http://roy/~c109149/heart#{card[j]["a"]}") else card[j]["suto"] == "ダイヤ" system("display -geometry +#{y}+#{t} http://roy/~c109149/diamond#{card[j]["a"]}") end sleep(1) y += 130 end end cards = Array.new make(cards) shahul(cards) #p cards tip = 0 open("point.txt" , "r") do |w| while sss = w.gets if /(\d+)/ =~ sss tip = $1.to_i end end end STDERR.print("これからポーカーを始めます\n") STDERR.print("ルールはポーカーのルールとあまり変わりません\n") STDERR.print("使うカードはJokerを抜いた52枚のカードです\n") STDERR.print("同じ数または、同じ種類を集め役を作ります\n") STDERR.print("例をあげます。○○の中はカードの種類が入ります\n") sleep(1) STDERR.print("○○の2、○○の3、○○の7、○○の3、○○の10\n") STDERR.print("これはワンペアです\n") sleep(1) STDERR.print("○○のA、○○の3、○○のK、○○の3、○○のK\n") STDERR.print("これはツーペアです\n") sleep(1) STDERR.print("○○の7、○○の3、○○の7、○○のQ、○○の7\n") STDERR.print("これはスリーカードです\n") sleep(1) STDERR.print("○○の4、○○の5、○○の6、○○の7、○○の8\n") STDERR.print("これはストレートです\n") STDERR.print("ただしKからAに繋がりません\n") sleep(2) STDERR.print("ダイヤの○、ダイヤの○、 ダイヤの○、ダイヤの○、ダイヤの○\n") STDERR.print("これは○の中に数字が入ります。フラッシュです\n") sleep(1) STDERR.print("○○のK、○○のK、○○の6、○○の6、○○の6\n") STDERR.print("これはフルハウスです\n") sleep(1) STDERR.print("○○のK、○○のK、○○のK、○○のK、○○のA\n") STDERR.print("これはフォーカードです\n") sleep(1) STDERR.print("クラブの4、クラブの5、クラブの6、クラブの7、クラブの8\n") STDERR.print("これはストレートフラッシュです\n") sleep(1) STDERR.print("スペードの10、スペードのJ、スペードのQ、スペードのK、スペードのA\n") STDERR.print("これはロイヤルストレートフラッシュです\n") sleep(1) STDERR.print("下にいくほど難しい役になります\n") sleep(3) STDERR.print("最初あなたは50枚チップを持っています\n") STDERR.print("チップを賭けてください(10枚まで)\n") j = gets.to_i tip = tip - j # while true play = Array.new for zzz in 0 .. 4 play[zzz] = cards[zzz] end STDERR.print("あなたに配られたカード\n") print("プレイヤーのカードの表示\n") # hyouji(play) カードの表示 p play # system('pkill display -U `whoami`') print("ここでプレイヤーに交換するカードを選んで貰う\n") print("もう一度交換するか聞く\n") print("役が揃っているか判断する\n") yaku = yaku(play) printf("%s\n",yaku) # プレイヤーの役の表示 # STDERR.print("もう一度しますか?(終わるならn)\n") # ans = gets.chomp # if ans == "n" # break # end # printf("あなたは今%d枚チップを持っています\n",tip) # while true # STDERR.print("チップを賭けてください(10枚まで)\n") # k = gets.to_i # if k > 10 # STDERR.print("10枚までです\n") # else # break # end # end # tip = tip - k # end open("point.txt" , "w") do |write| write.printf("%d\n",tip) end point.txtの部分 50 プログラムはまだ途中ですが、今の状況です。トランプでポーカーをするという ことで def make(card) でカードを生成している。出来たカードを次に def shahul(d) でシャッフルしている。プレイヤーはチップを賭けてゲームを 進めるため前回のチップを引き継いで、ゲームを進めたかったのでチップを記憶 しておくために point.txt にチップの数を記録している。プレイヤーがどんな 役を作ったか判断するために def yaku(card) でプレーヤーの手札を調べている。 まだ確かめていないが、 def hyouji(card) でプレイヤーの手札を表示させよう と考えている。最後に point.txt を書きこみモードで開きチップを記録し次回 に引き継いでいる。 D チームで決めた決まりはチーム名が「ドクダミ草」なので、ホームページの色を 植物に関るような色にして統一性を持たせることにした。 E メンバー 大島藍 木内雄 小松由里 横山広樹 感想 今回からグループ課題にはいったので、チーム全員で協力していきたいと思う。 自分が担当しているプログラムは複雑では無いものの、時間がかかりそうなので 先に終わったメンバーと協力して完成させたいと思います。 参考文献 INFI∞NITY http://roy.e.koeki-u.ac.jp/~c108057/infinity/ta2010_pro1.rb 五代儀公大先輩・大沼拓海先輩 Rubyプログラミング基礎講座 235ページ 著者 広瀬雄二先生 発行者 片岡巌 出版社 技術評論社