#!/usr/bin/env ruby # -*- coding: utf-8 -*- hl = 1 #上段左タイル 1番タイル hc = 2 #上段中タイル 2番タイル hr = 3 #上段右タイル 3番タイル cl = 4 #中段左タイル 4番タイル cc = 5 #中段中タイル 5番タイル cr = 6 #中段右タイル 6番タイル ll = 7 #下段左タイル 7番タイル lc = 8 #下段中タイル 8番タイル lr = 0 #下段右タイル 9番タイル puts "3✕3のスライドパズル。\n動かしたいタイル番号を入力して動かしてね。\nタイル番号は下の通り。\n-------------\n| 1 | 2 | 3 |\n-------------\n| 4 | 5 | 6 |\n-------------\n| 7 | 8 | 9 |\n-------------\nタイルの数字が左上から右に向かって右下まで順に1〜9になればクリアだよ。" while start == 1 srand() #配置指定 puzzle = rand(3) if puzzle == 1 hl = 1 hc = 2 hr = 3 cl = 4 cc = 5 cr = 6 ll = 7 lc = 0 lr = 8 else hl = 8 hc = 6 hr = 7 cl = 2 cc = 5 cr = 4 ll = 3 lc = 0 lr = 1 end while true if hl == 0 air = 1 end if hc == 0 air = 2 end if hr == 0 air = 3 end if cl == 0 air = 4 end if cc == 0 air = 5 end if cr == 0 air = 6 end if ll == 0 air = 7 end if lc == 0 air = 8 end if lr == 0 air = 9 end while true def hako(a,b,c,d,e,f,g,h,i) printf("-------------\n| %s | %s | %s |\n-------------\n| %s | %s | %s |\n-------------\n| %s | %s | %s |\n-------------\n",a,b,c,d,e,f,g,h,i) end if hl == 1 if hc == 2 if hr == 3 if cl == 4 if cc == 5 if cr == 6 if ll == 7 if lc == 8 if lr == 0 start = 0 printf("-------------\n| %d | %d | %d |\n-------------\n| %d | %d | %d |\n-------------\n| %d | %d | |\n-------------\nクリア!!!おめでとう!!!",a,b,c,d,e,f,g,h) sleep(3) puts "...もっかいやる?" sleep(3) puts "いや、やらんよなあ。\nおつかれさま。" break end end end end end end end end end if air == 1 #空白が1のとき hako(" ",hc,hr,cl,cc,cr,ll,lc,lr) while air == 1 idou = gets.to_i if idou == 2 hl += hc hc -= hc air = 2 break elsif idou == 4 hl += cl cl -= cl air = 4 break else puts "それは動かせないよ。" redo end end elsif air == 2 #空白が2のとき hako(hl," ",hr,cl,cc,cr,ll,lc,lr) while air == 2 idou = gets.to_i if idou == 1 hc += hl hl -= hl air = 1 break elsif idou == 3 hc += hr hr -= hr air = 3 break elsif idou == 5 hc += cc cc -= cc air = 5 break else puts "それは動かせないよ。" redo end end elsif air == 3 #空白が3のとき hako(hl,hc," ",cl,cc,cr,ll,lc,lr) while air == 3 idou = gets.to_i if idou == 2 hr += hc hc -= hc air = 2 break elsif idou == 6 hr += cr cr -= cr air = 6 break else puts "それは動かせないよ。" redo end end elsif air == 4 #空白が4のとき hako(hl,hc,hr," ",cc,cr,ll,lc,lr) while air == 4 idou = gets.to_i if idou == 1 cl += hl hl -= hl air = 1 break elsif idou == 5 cl += cc cc -= cc air = 5 break elsif idou == 7 cl += ll ll -= ll air = 7 break else puts "それは動かせないよ。" redo end end elsif air == 5 #空白が5のとき hako(hl,hc,hr,cl," ",cr,ll,lc,lr) while air == 5 idou = gets.to_i if idou == 2 cc += hc hc -= hc air = 2 break elsif idou == 4 cc += cl cl -= cl air = 4 break elsif idou == 6 cc += cr cr -= cr air = 6 break elsif idou == 8 cc += lc lc -= lc air = 8 break else puts "それは動かせないよ。" redo end end elsif air == 6 #空白が6のとき hako(hl,hc,hr,cl,cc," ",ll,lc,lr) while air == 6 idou = gets.to_i if idou == 3 cr += hr hr -= hr air = 3 break elsif idou == 5 cr += cc cc -= cc air = 5 break elsif idou == 9 cr += lr lr -= lr air = 9 break else puts "それは動かせないよ。" redo end end elsif air == 7 #空白が7のとき hako(hl,hc,hr,cl,cc,cr," ",lc,lr) while air == 7 idou = gets.to_i if idou == 4 ll += cl cl -= cl air = 4 break elsif idou == 8 ll += lc lc -= lc air = 8 break else puts "それは動かせないよ。" redo end end elsif air == 8 #空白が8のとき hako(hl,hc,hr,cl,cc,cr,ll," ",lr) while air == 8 idou = gets.to_i if idou == 5 lc += cc cc -= cc air = 5 break elsif idou == 7 lc += ll ll -= ll air = 7 break elsif idou == 9 lc += lr lr -= lr air = 9 break else puts "それは動かせないよ。" redo end end elsif air == 9 #空白が9のとき hako(hl,hc,hr,cl,cc,cr,ll,lc," ") while air == 9 idou = gets.to_i if idou == 6 lr += cr cr -= cr air = 6 break elsif idou == 8 lr += lc lc -= lc air = 8 break else puts "それは動かせないよ。" redo end end end end end end