Newer
Older
Ruby / tetris.rb
#!/usr/bin/env ruby
# -*- coding:utf-8 -*-
require'io/console'

print("3")
sleep(1)
print("\e[2K2\e[1D")
sleep(1)
print("\e[2K1\e[1D")
sleep(1)
print("\e[2Kgo!\e[3D")
print("\e[1D")
sleep(0.5)
field=[[" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."],
       [" ."," ."," ."," ."," ."," ."," ."," ."," ."," ."]]#縦20、横10
hold=[""]
def byouga(field,hold)
  print("\e[1J\e[1;1H")
  a=0
  while a<field.length
    print("<!")
    z=0
    while z<field[a].length
      print(field[a][z])
      z+=1
    end
    puts("!>")
    a+=1
  end
  print("<!====================!>")
  print("\e[20A ")

  print("<!==hold==!>")
  print("\e[12D\e[1B")
  if hold[0]="i"
    print("<![][][][]!>\e[12D\e[1B")
    print("<! . . . .!>\e[12D\e[1B")
  elsif hold[0]="o"
    print("<! .[][] .!>\e[12D\e[1B")
    print("<! .[][] .!>\e[12D\e[1B")
  elsif hold[0]="s"
    print("<! .[][] .!>\e[12D\e[1B")
    print("<![][] . .!>\e[12D\e[1B")
  elsif hold[0]="z"
    print("<![][] . .!>\e[12D\e[1B")
    print("<! .[][] .!>\e[12D\e[1B")
  elsif hold[0]="j"
    print("<![] . . .!>\e[12D\e[1B")
    print("<![][][] .!>\e[12D\e[1B")
  elsif hold[0]="l"
    print("<! . .[] .!>\e[12D\e[1B")
    print("<![][][] .!>\e[12D\e[1B")
  elsif hold[0]="t"
    print("<![][][] .!>\e[12D\e[1B")
    print("<! .[] . .!>\e[12D\e[1B")
  else
    print("<! . . . .!>\e[12D\e[1B")
    print("<! . . . .!>\e[12D\e[1B")
  end
  print("<!========!>")
end

def cell(field,a,b,c,d,a1,b1,c1,d1)
  field[a][a1]="[]"
  field[b][b1]="[]"
  field[c][c1]="[]"
  field[d][d1]="[]"
end


byouga(field,hold)

while true
  b=0
  mino=["i","o","s","z","j","l","t"]
  while b<mino.length
    srand()
    mino_=rand(7)
    if mino_==0 #iミノ
      x=
      y=
      cell(field,)
      field[0][3]="[]"
      field[0][4]="[]"
      field[0][5]="[]"
      field[0][6]="[]"
    elsif mino_==1 #oミノ
      field[0][4]="[]"
      field[0][5]="[]"
      field[1][4]="[]"
      field[1][5]="[]"
    elsif mino_==2 #sミノ
      field[0][5]="[]"
      field[0][6]="[]"
      field[1][4]="[]"
      field[1][5]="[]"
    elsif mino_==3 #zミノ
      field[0][4]="[]"
      field[0][5]="[]"
      field[1][5]="[]"
      field[1][6]="[]"
    elsif mino_==4 #jミノ
      field[0][4]="[]"
      field[1][4]="[]"
      field[1][5]="[]"
      field[1][6]="[]"
    elsif mino_==5 #lミノ
      field[0][6]="[]"
      field[1][4]="[]"
      field[1][5]="[]"
      field[1][6]="[]"
    elsif mino_==6 #tミノ
      field[0][4]="[]"
      field[0][5]="[]"
      field[0][6]="[]"
      field[1][5]="[]"
    end
    while (key=STDIN.getch)!="\C-c"
      if key=="\e"&&STDIN.getch=="["
        key=STDIN.getch
        if key=="A" #↑
          hold[0]=mino[mino_]
          byouga(field,hold)
        elsif key=="D" #←
          
        elsif key=="B" #↓
        elsif key=="C" #→
        end
      end 
      if key=="w"
      elsif key=="a"
      elsif key=="s"
      elsif key=="d"
      elsif key==nil        
      end
    end
    mino.delete_at(mino_)
    b+=1
  end
end