# Copyright (c) 2010, Takaya Kakizaki(kacky)
# All rights reserved.
#
#  ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。 
#
#  ・ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。 
#
#  ・バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。 
#
#  ・書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、オープン麻雀の名前またはコントリビューターの名前を使用してはならない。
#
#
#  本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、
#  商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。
#  著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか
#  （過失その他の）不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した
#  （代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない）
#  直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。 
require "mahjongserver"

# 一人麻雀によるデバッグプログラム(by kakizaki)

# 牌の初期化
pai = [];
command = 0
nm = ["二萬","三萬","四萬","五萬","五萬","六萬","七萬","七萬","七萬","八萬","四筒","五筒","六筒","九萬"];
gamestate = GameState.new
gamestate.tsumo = true
gamestate.zikaze = 1

taku = Taku.new

taku.bakaze = 1

begin
  pai.clear
  for i in 1 .. 3
    for j in 1 .. 9
      for k in 1 .. 4
        tmp = Pai.new
        tmp.category = i
        tmp.no = j
        tmp.id = k
        pai.push(tmp)
      end
    end
  end
  
  for i in 1 .. 7
    for j in 1 .. 4
      tmp = Pai.new
      tmp.category = PAI_ZIHAI
      tmp.no = i
      tmp.id = j
      pai.push(tmp)
    end
  end
  
  # シャッフル
  pai = pai.sort_by{rand}
  
  tehai = []
  
  for i in 1 .. 13
    tehai.push(pai.pop)
  end
  
  tehai.sort!
  
  if true
    tehai.clear
    for i in 0 .. nm.length-2
      tmp = Pai.new
      tmp.setName(nm[i])
      tehai.push(tmp)
    end
    
    tmp = Pai.new
    tmp.setName(nm[-1])
    pai.push(tmp)
    tehai.sort!
  end
  
  begin
    tsumo = pai.pop
    for i in 0 .. tehai.length - 1
      puts "#{i} : #{tehai[i].getName}".tosjis
    end
    
    puts "13(ツモ) : #{tsumo.getName}".tosjis
    
    
    if false
      search_agari(tehai,gamestate)
      result = $resultcount
      puts "上がり目 : #{$resultcount}".tosjis
    else
      agari = search_tenpai(tehai,taku,gamestate)
      for hai in agari
        puts "上がり牌 : #{hai.inspect}".tosjis
      end
    end
    
    while true
      print "command (和了 14,終わり 15,保存 16,読み出し 17) : ".tosjis
      command = gets.chomp
      command = command.to_i
      
      if command >= 0 && command <= 12
        # 打牌
        tehai.delete_at(command)
        tehai.push(tsumo)
        tehai.sort!
        break
      elsif command == 13
        break
      elsif command == 14
        flag = false
        for hai in agari
          if hai.machihai == tsumo
            puts "上がり！！！！".tosjis
            puts "#{hai.inspect}".tosjis
            flag = true
            break
          end
        end
        if flag
          break
        else
          puts "上がれません。。。".tosjis
        end
      elsif command == 15
        break
      elsif command == 16
        ofile = File.open("dbg","w")
        ofile.write(Marshal.dump(tehai))
        ofile.close
      elsif command == 17
        ifile = File.open("dbg","r")
        tehai = Marshal.load(ifile)
        ifile.close
        command = 0
        break
      else
        puts "unknown command #{command}".tosjis
      end
    end
  end while(command < 14);
  
end while(command != 15);

