diff --git a/puzzle2.rb b/puzzle2.rb index 25903eb..be8ed5d 100755 --- a/puzzle2.rb +++ b/puzzle2.rb @@ -1,315 +1,28 @@ -#!/usr/bin/env ruby +#!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番タイル -start = 0 #スタート用 -require 'curses' -include Curses +#class Coor +# def x +# @x +# end +# def y +# @y +# end +#end -init_screen -cbreak -noecho -begin - puts "3✕3のスライドパズル。\n動かしたいタイル番号を入力して動かしてね。\nタイル番号は下の通り。\n-------------\n| 1 | 2 | 3 |\n-------------\n| 4 | 5 | 6 |\n-------------\n| 7 | 8 | 9 |\n-------------\nタイルの数字が左上から右に向かって右下まで順に1〜9になればクリア。" +puz = [] +puz_num = 1 +i = 0 - start = 1 #ゲームスタート - 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 - start = 0 - else - hl = 8 - hc = 6 - hr = 7 - cl = 2 - cc = 5 - cr = 4 - ll = 3 - lc = 0 - lr = 1 - start = 0 - 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 - 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 - - def stop(x) - sleep(x) - end - - puts"-------------\n| 1 | 2 | 3 |\n-------------\n| 4 | 5 | 6 |\n-------------\n| 7 | 8 | |\n-------------\nクリア!!!おめでとう!!!" - stop(5) - puts "...もっかいやる?" - stop(1) - puts "いや、やらんわな。おつかれさま。\nCtrlとCを一緒に押してゲームを終了してね。" - stop(3000) - break - end - end - end - end - end - end - end - end - end - if air == 1 #空白が1のとき - printf("-------------\n| | %d | %d |\n-------------\n| %d | %d | %d |\n-------------\n| %d | %d | %d |\n-------------\n",hc,hr,cl,cc,cr,ll,lc,lr) - while air == 1 - idou = getch.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のとき - printf("-------------\n| %d | | %d |\n-------------\n| %d | %d | %d |\n-------------\n| %d | %d | %d |\n-------------\n",hl,hr,cl,cc,cr,ll,lc,lr) - while air == 2 - idou = getch.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のとき - printf("-------------\n| %d | %d | |\n-------------\n| %d | %d | %d |\n-------------\n| %d | %d | %d |\n-------------\n",hl,hc,cl,cc,cr,ll,lc,lr) - while air == 3 - idou = getch.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のとき - printf("-------------\n| %d | %d | %d |\n-------------\n| | %d | %d |\n-------------\n| %d | %d | %d |\n-------------\n",hl,hc,hr,cc,cr,ll,lc,lr) - while air == 4 - idou = getch.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のとき - printf("-------------\n| %d | %d | %d |\n-------------\n| %d | | %d |\n-------------\n| %d | %d | %d |\n-------------\n",hl,hc,hr,cl,cr,ll,lc,lr) - while air == 5 - idou = getch.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のとき - printf("-------------\n| %d | %d | %d |\n-------------\n| %d | %d | |\n-------------\n| %d | %d | %d |\n-------------\n",hl,hc,hr,cl,cc,ll,lc,lr) - while air == 6 - idou = getch.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のとき - printf("-------------\n| %d | %d | %d |\n-------------\n| %d | %d | %d |\n-------------\n| | %d | %d |\n-------------\n",hl,hc,hr,cl,cc,cr,lc,lr) - while air == 7 - idou = getch.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のとき - printf("-------------\n| %d | %d | %d |\n-------------\n| %d | %d | %d |\n-------------\n| %d | | %d |\n-------------\n",hl,hc,hr,cl,cc,cr,ll,lr) - while air == 8 - idou = getch.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のとき - printf("-------------\n| %d | %d | %d |\n-------------\n| %d | %d | %d |\n-------------\n| %d | %d | |\n-------------\n",hl,hc,hr,cl,cc,cr,ll,lc) - while air == 9 - idou = getch.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 +puz_type = gets.to_i +puz_type. times do + puz << puz_num + puz_num += 1 +end +puz.shuffle! +puz_row = (puz.length + 1) ** (1/2.0) +while puz.length + n = puz[i] + printf("%s",n.to_s) + i += 1 end