#==============================================================================
# ■ BlackJack vol.1.20 (分割定義1)
#------------------------------------------------------------------------------
# ※『Window_digits_number 5.90以上』(必須)
# ※『Picture_Blink_Cursor 1.40以上』(必須)
# ※『Window_Play_Cards 1.00以上』(必須)
# ※『Coin_Base 1.00以上』(必須)より下に挿入
# 12/02/16
#==============================================================================
module HIDE_BLACKJACK
  #==============================================================================
  # ■ デバッグ(開発者用)
  #==============================================================================
  DEBUG = false                    # [true/false]
  #==============================================================================
  # ■ イベントコマンド『スクリプト』に以下を追加
  #------------------------------------------------------------------------------
  #   make_blackjack(type)
  #------------------------------------------------------------------------------
  #   type=ブラックジャックタイプの設定を参照
  #==============================================================================
  # ■ ゲーム設定
  #==============================================================================
  MAX_BET = 15                     # 一箇所に賭けられるコイン最大数(1〜15)
  MIN_BET = 3                      # 一箇所に賭けられるコイン最小数(1〜15)※初期値
  COUNTING = true                  # 既に引いたカードをオープンにする[true/false]
  #==============================================================================
  # ■ グラフィック設定 ※Windowskinsフォルダ内のファイル名を指定
  #==============================================================================
  BACK = "coin_background1"         # ブラックジャックの背景画像
  TOP = "blackjack_table"          # ブラックジャックの背景画像
  CARD = "card_s"
  BET = "bet_coin"                 # コイン画像
  CHIP = "chip"                    # チップ画像
  SELECT = "cursor_back"           # カーソル画像
  CURSOR = "cursor_anim"           # カーソルアイコン画像
  BET_HIT = "flash_circle"         # 当たり効果画像
  BJ_HIT = "flash_yellow"          # 当たり効果画像
  #==============================================================================
  # ■ 選択肢とヘルプの設定
  #==============================================================================
  GAME_COMS = ["Bet","Deal","Hit","Stsnd","Double","Split","Insurance",
  "EvenMoney","Surrender","End"]
  GAME_HELPS = ["BET(賭け金)を決めます。",
  "ゲームを開始します。",
  "カードをもう一枚引きます。",
  "現在のカードで勝負します。",
  "BETを2倍に増やして3枚目のHitで勝負します。",
  "同額のBETを賭けてカードを二つの手に分けます。",
  "BETの半額を払いディーラがBJであるかに賭けます。",
  "BJの場合、先付けで通常の配当を得ます。",
  "BETの半額を払い、ゲームを降ります。",
  "ゲームを終了します。"]
  PLAY_COMS = ["Player","Banker","Tie"]
  PLAY_HELPS = ["Playerに賭けます。","Bankerに賭けます。",
  "Tie(引き分け)に賭けます。"]
  #==============================================================================
  # ■ BJ役/配当倍率の設定
  #==============================================================================
  HAND = ["Flush","BlackJack","Six to Eight","QueenJack","Pure BlackJack",
  "777","Six Under","Seven Under","Six Card 21",
  "Seven Card 21","Ace to Six","Eleven Card"]
  SCORES = [1.2,1.5,2,2.5,3,5,5,10,10,20,20,50]
  #==============================================================================
  # ■ 音の設定 ※ファイル名を指定 ※Audioフォルダ内 #()のファイル名
  #==============================================================================
  BGM = "019-Field02"              # ブラックジャック実行中のBGM(BGM)
  DECISION_SE = "002-System02"     # 決定キーの効果音(SE)
  CANCEL_SE = "003-System03"       # キャンセルキーの効果音(SE)
  BUZZER_SE = "004-System04"       # ブザー音の効果音(SE)
  HIT_ME_MAX = "009-Fanfare03"     # 大当りの効果音(ME)
  HIT_ME = "007-Fanfare01"         # 当りの効果音(ME)
  
  ME_MAX_TIME = 12                 # 大当りの待ち時間(HIT_ME_MAXの演奏時間(秒))
  ME_TIME = 4                      # 当りの待ち時間(HIT_MEの演奏時間(秒))
  #==============================================================================
  # ■ ブラックジャックタイプの設定(COIN,JOKER,RATE,ME_RATE_MAX)
  # COIN[n] = value　※n=タイプ番号($game_temp.blackjack_type から参照される)
  #==============================================================================
  COIN = [] # value=消費コイン数(賭けるコイン枚数)
  COIN[0] = 300 #300枚賭け
  COIN[1] = 100
  COIN[2] = 10
  # □大当りの効果音(HIT_ME_MAX)を演奏する獲得コイン数(n以上)
  ME_RATE_MAX = []
  ME_RATE_MAX[0] = 6000
  ME_RATE_MAX[1] = 3000
  ME_RATE_MAX[2] = 60
  #==============================================================================
  # ■ 文字色設定
  #==============================================================================
  A_COLOR = Color.new(255,255,255,255)     # 通常色
  B_COLOR = Color.new(0,0,0,255)           # 影色
  S_COLOR = Color.new(255,255,0,255)       # システム色
  N_COLOR = Color.new(100,100,100,255)     # 無効色
  BJ_COLOR = Color.new(255,255,0,255)      # BJ(21)色
  BS_COLOR = Color.new(255,0,0,255)        # Busted(22以上)色
  #==============================================================================
  # ■ メニュー文字設定
  #==============================================================================
  WORD1 = "Coin"
  WORD2 = "Bet"
  WORD3 = "Payout"
  WORD4 = "Max Bet"
  WORD5 = "WIN!"
  WORD6 = "LOSE!"
  WORD7 = "PUSH!"
  WORD8 = "BURST!"
  WORD9 = "Premium"
  #--------------------------------------------------------------------------
  # 選択肢 の文字設定
  #--------------------------------------------------------------------------
  S_SIZE = 16                              # 文字サイズ
  S_BOLD = true                            # 太文字フラグ[true/false]
  S_ITALIC = false                         # 斜め文字フラグ[true/false]
  S_SHADOW = true                          # 影文字フラグ[true/false]
  S_ROUND = false                          # 囲み文字フラグ[true/false]
  S_NAME = ["Georgia","ＭＳ ゴシック"]     # フォント名
  #--------------------------------------------------------------------------
  # Help の文字設定
  #--------------------------------------------------------------------------
  H_SIZE = 16                              # 文字サイズ
  H_BOLD = false                           # 太文字フラグ[true/false]
  H_ITALIC = false                         # 斜め文字フラグ[true/false]
  H_SHADOW = false                         # 影文字フラグ[true/false]
  H_ROUND = false                          # 囲み文字フラグ[true/false]
  H_NAME = ["ＭＳ ゴシック"]               # フォント名
  #--------------------------------------------------------------------------
  # コイン の文字設定
  #--------------------------------------------------------------------------
  C_SIZE = 26                              # 文字サイズ
  C_BOLD = true                            # 太文字フラグ[true/false]
  C_ITALIC = false                         # 斜め文字フラグ[true/false]
  C_SHADOW = false                         # 影文字フラグ[true/false]
  C_ROUND = false                          # 囲み文字フラグ[true/false]
  C_NAME = ["Arial","ＭＳ ゴシック"]       # フォント名
  #--------------------------------------------------------------------------
  # システム の文字設定
  #--------------------------------------------------------------------------
  T_SIZE = 18                              # 文字サイズ
  T_BOLD = true                            # 太文字フラグ[true/false]
  T_ITALIC = false                         # 斜め文字フラグ[true/false]
  T_SHADOW = false                         # 影文字フラグ[true/false]
  T_ROUND = false                          # 囲み文字フラグ[true/false]
  T_NAME = ["Arial","ＭＳ ゴシック"]       # フォント名
  #==============================================================================
  
  #==============================================================================
  S_FONT = Copy_Font.new(S_SIZE,S_BOLD,S_ITALIC,S_SHADOW,S_ROUND,S_NAME,A_COLOR,B_COLOR)
  C_FONT = Copy_Font.new(C_SIZE,C_BOLD,C_ITALIC,C_SHADOW,C_ROUND,C_NAME,A_COLOR,B_COLOR)
  H_FONT = Copy_Font.new(H_SIZE,H_BOLD,H_ITALIC,H_SHADOW,H_ROUND,H_NAME,A_COLOR,B_COLOR)
  T_FONT = Copy_Font.new(T_SIZE,T_BOLD,T_ITALIC,T_SHADOW,T_ROUND,T_NAME,S_COLOR,B_COLOR)
  A_FONT = Copy_Font.new(18,true,false,false,false,["Georgia","ＭＳ ゴシック"],S_COLOR,B_COLOR)
  M_FONT = Copy_Font.new(18,true,false,false,false,["Arial","ＭＳ ゴシック"],A_COLOR,B_COLOR)
  R_FONT = Copy_Font.new(20,true,false,false,false,["Georgia","ＭＳ ゴシック"],A_COLOR,B_COLOR)
end

#==============================================================================
# ■ Scene_BlackJack
#==============================================================================
class Scene_BlackJack
  include HIDE_BLACKJACK
  #--------------------------------------------------------------------------
  # ■ オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    game_reset?
    # □マップ BGM を記憶し、BGM を停止
    $game_temp.map_bgm = $game_system.playing_bgm
    $game_system.bgm_stop
    # □ブラックジャック BGM を演奏
    $game_system.bgm_play(RPG::AudioFile.new(HIDE_BLACKJACK::BGM))
  end
  #--------------------------------------------------------------------------
  # ■ ブラックジャックの初期化
  #--------------------------------------------------------------------------
  def game_reset?
    @blackjack_step = 0
    # □ゲーム実行中フラグをOFF
    @playing = false
  end
  #--------------------------------------------------------------------------
  # ■ メイン処理
  #--------------------------------------------------------------------------
  def main
    t = $game_temp.blackjack_type
    @coin_rate = HIDE_BLACKJACK::COIN[t]
    @chain = HIDE_BLACKJACK::MIN_BET - 1
    @chain_count = 0
    @bet_point = [0,0]
    @burst_s = [""]*3
    @s_card = RPG::Cache.windowskin(HIDE_BLACKJACK::CARD)
    @win = HIDE_BLACKJACK::WORD5
    @lose = HIDE_BLACKJACK::WORD6
    @tie = HIDE_BLACKJACK::WORD7
    @burst = HIDE_BLACKJACK::WORD8
    #…………………………………………………………………………………………………
    # ■bet画像を取得
    #…………………………………………………………………………………………………
    @bet_pic = RPG::Cache.windowskin(HIDE_BLACKJACK::BET)
    @bet_chip = RPG::Cache.windowskin(HIDE_BLACKJACK::CHIP)
    #…………………………………………………………………………………………………
    # ■文字装飾を取得
    #…………………………………………………………………………………………………
    s_font = HIDE_BLACKJACK::S_FONT ; h_font = HIDE_BLACKJACK::H_FONT
    c_font = HIDE_BLACKJACK::C_FONT ; t_font = HIDE_BLACKJACK::T_FONT
    @a_font = HIDE_BLACKJACK::A_FONT ; @m_font = HIDE_BLACKJACK::M_FONT
    @r_font = HIDE_BLACKJACK::R_FONT
    @n_font = t_font.dup
    @n_font.size = 14
    
    @a_color = HIDE_BLACKJACK::A_COLOR
    @n_color = HIDE_BLACKJACK::N_COLOR
    @bj_color = HIDE_BLACKJACK::BJ_COLOR
    @bs_color = HIDE_BLACKJACK::BS_COLOR
    #…………………………………………………………………………………………………
    # ■ブラックジャックウィンドウ背景を作成
    #…………………………………………………………………………………………………
    @blackjack_window_back = Picture_Blink_Cursor.new(RPG::Cache.windowskin(HIDE_BLACKJACK::BACK))
    #…………………………………………………………………………………………………
    # ■当たり演出ウィンドウを作成
    #…………………………………………………………………………………………………
    @blackjack_window_under = Picture_Blink_Cursor.new
    @blackjack_window_under.start(100)
    #…………………………………………………………………………………………………
    # ■ブラックジャックウィンドウ背景(上)を作成
    #…………………………………………………………………………………………………
    bitmap = Bitmap.new(640,480)
    pic = RPG::Cache.windowskin(HIDE_BLACKJACK::TOP)
    bitmap.blt(0,0,pic,Rect.new(0,0,256,32))
    bitmap.blt(256,0,pic,Rect.new(256,0,640-259,480))
    @blackjack_window_top = Picture_Blink_Cursor.new(bitmap)
    @blackjack_window_top.z = 100 + 2
    # □システム文字を描画
    @blackjack_window_top.draw_text(454,446,320,32,HIDE_BLACKJACK::WORD1,0,t_font)
    @blackjack_window_top.draw_text(454,366,320,32,HIDE_BLACKJACK::WORD2,0,t_font)
    @blackjack_window_top.draw_text(454,403,320,32,HIDE_BLACKJACK::WORD3,0,t_font)
    @blackjack_window_top.draw_text(520,331,320,32,HIDE_BLACKJACK::WORD4,0,t_font)
    m_font = @m_font.dup
    m_font.size = 16
    text = "Dealer must draw to 16"
    @blackjack_window_top.draw_text(28,20,160,0,text,1,m_font)
    text = "and stand on all 17s"
    @blackjack_window_top.draw_text(28,33,160,0,text,1,m_font)
    text = "Insurance pays 2 to 1"
    @blackjack_window_top.draw_text(28,46,160,0,text,1,m_font)
    @blackjack_window_top.draw_text(280,8,160,0,"DEALER",0,@r_font)
    
    
    @blackjack_window_back.draw_text(482,4,0,0,"/",0,@r_font)
    @blackjack_window_back.draw_text(482,170,0,0,"/",0,@r_font)
    #…………………………………………………………………………………………………
    # ■BJ役ウィンドウを作成
    #…………………………………………………………………………………………………
    bitmap = Bitmap.new(640,480)
    bitmap.blt(0,32,pic,Rect.new(0,32,256,480-32))
    
    @premium_window = Picture_Blink_Cursor.new(bitmap)
    @premium_window.z = 100 + 2
    # □システム文字を描画
    @premium_window.draw_text(28,169,320,32,HIDE_BLACKJACK::WORD9,0,t_font)
    
    @premium_window.draw_text(196,169,320,32,@coin_rate.to_s,0,t_font)
    @premium_window.bitmap.blt(156,168,@bet_pic,Rect.new(224,0,32,24))
    
    @hand = HIDE_BLACKJACK::HAND
    @scores = HIDE_BLACKJACK::SCORES
    @bj_font = @m_font.dup
    @bj_font.size = 18
    for i in 0...@hand.size
      @premium_window.draw_text(28,194+i*19,160,0,@hand[i],0,@bj_font)
      @premium_window.draw_text(180,194+i*19,32,0,@scores[i].to_s,2,@bj_font)
    end
    #…………………………………………………………………………………………………
    # ■splitウィンドウを作成
    #…………………………………………………………………………………………………
    @split_window = Picture_Blink_Cursor.new(Bitmap.new(640,480))
    @split_window.z = 100 + 2
    @split_window.draw_picture(pic,0,0,Rect.new(256,0,192,480))
    
    @split_window.draw_text(482-259,170,0,0,"/",0,@r_font)
    @split_window.visible = false
    
    
    @r_font.color = @n_color
    @blackjack_window_top.draw_text(283,4+170,160,0,"PLAYER",0,@r_font)
    @split_window.draw_text(283-259,4+170,160,0,"PLAYER",0,@r_font)
    @r_font.color = @a_color
    
    #…………………………………………………………………………………………………
    # ■ブラックジャック表示ウィンドウを作成
    #…………………………………………………………………………………………………
    @blackjack_window_chain = Picture_Blink_Cursor.new(Bitmap.new(640,480))
    @blackjack_window_chain.z = 100 + 3
    #…………………………………………………………………………………………………
    # ■BET数ウィンドウを作成
    #…………………………………………………………………………………………………
    @bets = [] ; bet = [""]
    for i in 1...31
      bet.push("x " + sprintf("%02d",i))
    end
    @bets[0] = Window_digits_number.new(342,390,105,@bet_point[0],10,bet,@m_font)
    @bets[1] = Window_digits_number.new(86,390,105,@bet_point[1],10,bet,@m_font)
    #…………………………………………………………………………………………………
    # ■カードウィンドウを作成
    #…………………………………………………………………………………………………
    @card_window = Window_Play_Cards.new(4)
    #…………………………………………………………………………………………………
    # ■デッキを描画(ワイルドカードを除外)
    #…………………………………………………………………………………………………
    @deck = [0,14,28,42,57]
    draw_deck?(0,72,@deck)
    #…………………………………………………………………………………………………
    # ■コイン数値ウィンドウを作成
    #…………………………………………………………………………………………………
    @coin_window = Window_digits_number.new(503,427,100,$game_party.coin,10,10,c_font)
    #…………………………………………………………………………………………………
    # ■BETコイン数値ウィンドウを作成
    #…………………………………………………………………………………………………
    @bet_coin = 0
    @total_bet_coin_window = Window_digits_number.new(503,347,100,@bet_coin,10,10,c_font)
    #…………………………………………………………………………………………………
    # ■配当コイン数値ウィンドウを作成
    #…………………………………………………………………………………………………
    @payout = 0
    @payout_coin_window = Window_digits_number.new(503,387,100,@payout,10,10,c_font)
    #…………………………………………………………………………………………………
    # ■ゲーム開始選択ウィンドウを作成
    #…………………………………………………………………………………………………
    pic = RPG::Cache.windowskin(HIDE_BLACKJACK::SELECT)
    icon = RPG::Cache.windowskin(HIDE_BLACKJACK::CURSOR)
    @command = HIDE_BLACKJACK::GAME_COMS
    helps = HIDE_BLACKJACK::GAME_HELPS
    @game_select_window = Picture_Blink_Cursor.new(528,8,108,32,2,0,10,1)
    @game_select_window.draw_cursor(pic,@command,s_font,icon)
    @game_select_window.start(100+4)
    # □ヘルプウィンドウの関連付け
    @game_select_window.make_helps(20,436,helps,h_font)
    #…………………………………………………………………………………………………
    # ■PLAYER選択ウィンドウを作成
    #…………………………………………………………………………………………………
    com = ["PLAYER"]
    @player_select_window = Picture_Blink_Cursor.new(273,174,96,32,2,0,1,1)
    @player_select_window.draw_cursor(Bitmap.new(32,32),com,@r_font,icon)
    @player_select_window.start(100+5)
    
    @player2_select_window = Picture_Blink_Cursor.new(14,174,96,32,2,0,1,1)
    @player2_select_window.draw_cursor(Bitmap.new(32,32),com,@r_font,icon)
    @player2_select_window.start(100+5)
    @player2_select_window.visible = false
    
    # □キーヘルプを描画
    draw_key?(d = true)
    
    # □初期化
    refresh
    # □選択肢の文字色を初期化
    exchange_colors?
    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # ウィンドウを解放
    @blackjack_window_back.dispose
    @blackjack_window_top.dispose
    @premium_window.dispose
    @split_window.dispose
    @blackjack_window_under.dispose
    @game_select_window.dispose
    @player_select_window.dispose
    @player2_select_window.dispose
    @blackjack_window_chain.dispose
    @bets.each{|a| a.dispose}
    @coin_window.dispose
    @total_bet_coin_window.dispose
    @payout_coin_window.dispose
    @card_window.dispose
  end
  #--------------------------------------------------------------------------
  # ■ 初期化
  #--------------------------------------------------------------------------
  def refresh
    @numbers = [0]*6
    # □カード描画の更新
    @card_nums = []
    
    @card_nums[0] = [0,1]
    card_position?(261,32,@card_nums[0])
    draw_card?(454,56,@card_nums[0])
    @card_nums[1] = [2,3]
    card_position?(261,198,@card_nums[1])
    draw_card?(454,222,@card_nums[1])
    @card_nums[2] = []
    draw_card?(195,222,@card_nums[2],false)
    @next_card = 3
    @hit = false
    @split = false
    @insurance = false
    @bet_insurance = 0
    @evenmoney = false
    @surrender = false
    @double = false
    @bet_double = 0
    @burst_s = [""]*3
    # □WIN/LOSEの描画
    draw_win?
    @split_active = false
    @split_step = 0
    # □Max_Betの描画
    draw_max_bet?
    # □ナンバーの描画
    draw_numbers?
  end
  #--------------------------------------------------------------------------
  # ■ カード位置を更新
  #--------------------------------------------------------------------------
  def card_position?(x,y,nums)
    num = nums.size
    c = 96/(num-1.0)
    for i in 0...num
      @card_window.position(nums[i],x+c*i,y)
      @card_window.play_card[nums[i]].visible = true
    end
  end
  #--------------------------------------------------------------------------
  # ■ カード座標を取得
  #--------------------------------------------------------------------------
  def move_position?(x,y,nums)
    num = nums.size
    c = 96/(num-1.0)
    x_es = {} ; y_es = {}
    for i in 0...num
      x_es[nums[i]] = x+c*i
      y_es[nums[i]] = y
    end
    return [x_es,y_es]
  end
  #--------------------------------------------------------------------------
  # ■ 小カードを描画
  #--------------------------------------------------------------------------
  def draw_card?(x,y,nums,draw = true)
    for i in 0...12
      n = @card_window.card[nums[i]]
      @blackjack_window_chain.bitmap.fill_rect(Rect.new(x+(i%4)*16,y+(i/4)*40-8,17,14+24),Color.new(0,0,0,0))
      unless draw
        next
      end
      # □カード番号を描画
      @blackjack_window_chain.draw_text(x+(i%4)*16+3,y+(i/4)*40-20,0,0,sprintf("%02d",(i+1)),0,@n_font)
      if n == nil
        n = 57
        rect = Rect.new((n%14)*17,(n/14)*24,17,24)
        @blackjack_window_chain.bitmap.blt(x+(i%4)*16,y+(i/4)*40,@s_card,rect,80)
      else
        # □裏カードを描画
        if @card_window.open?(nums[i]) == false
          n = 57
        end
        rect = Rect.new((n%14)*17,(n/14)*24,17,24)
        @blackjack_window_chain.bitmap.blt(x+(i%4)*16,y+(i/4)*40,@s_card,rect)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ■ デッキを描画
  #--------------------------------------------------------------------------
  def draw_deck?(x,y,nums)
    unless HIDE_BLACKJACK::COUNTING
      for i in 0...56
        rect = Rect.new(x+(i%14)*16,y+(i/14)*26,17,24)
        @blackjack_window_chain.bitmap.fill_rect(rect,Color.new(0,0,0,0))
        # □ワイルドカードを除外
        unless [0,14,28,42].include?(i)
          rect = Rect.new((i%14)*17,(i/14)*24,17,24)
          @blackjack_window_chain.bitmap.blt(x+(i%14)*16,y+(i/14)*26,@s_card,rect)
        end
      end
      return
    end
    if @card_window.loop_cards
      @deck = [0,14,28,42,57]
      @card_window.loop_cards = false
    end
    for n in nums
      # □表カードを描画
      if @card_window.open?(n)
        @deck.push(@card_window.card[n])
      end
    end
    @deck = @deck.uniq
    for i in 0...56
      rect = Rect.new(x+(i%14)*16,y+(i/14)*26,17,24)
      @blackjack_window_chain.bitmap.fill_rect(rect,Color.new(0,0,0,0))
      # □ワイルドカードを除外
      unless [0,14,28,42].include?(i)
        rect = Rect.new((i%14)*17,(i/14)*24,17,24)
        if @deck.include?(i)
          @blackjack_window_chain.bitmap.blt(x+(i%14)*16,y+(i/14)*26,@s_card,rect)
        else
          @blackjack_window_chain.bitmap.blt(x+(i%14)*16,y+(i/14)*26,@s_card,rect,64)
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ■ 選択肢の色更新
  #--------------------------------------------------------------------------
  def exchange_colors?
    # □Bet
    if $game_party.coin < @coin_rate or @blackjack_step != 0
      @game_select_window.exchange[0] = true
    else
      @game_select_window.exchange[0] = false
    end
    # □Deal
    if @bet_coin == 0 or @blackjack_step != 0
      @game_select_window.exchange[1] = true
    else
      @game_select_window.exchange[1] = false
    end
    # □Hit
    if @blackjack_step == 0 or @bet_double != 0
      @game_select_window.exchange[2] = true
    else
      @game_select_window.exchange[2] = false
    end
    # □Stsnd
    if @blackjack_step == 0 or @bet_double != 0
      @game_select_window.exchange[3] = true
    else
      @game_select_window.exchange[3] = false
    end
    # □Double
    if @blackjack_step == 0 or @double == false or @hit or @split_active
      @game_select_window.exchange[4] = true
    else
      @game_select_window.exchange[4] = false
    end
    # □Split
    if @blackjack_step == 0 or @split == false or @hit or 
      @bet_double != 0 or @split_active or @bet_insurance != 0
      @game_select_window.exchange[5] = true
    else
      @game_select_window.exchange[5] = false
    end
    # □Insurance
    if @blackjack_step == 0 or @insurance == false or 
      @bet_insurance != 0 or @bet_double != 0 or @split_active
      @game_select_window.exchange[6] = true
    else
      @game_select_window.exchange[6] = false
    end
    # □EvenMoney
    if @blackjack_step == 0 or @evenmoney == false
      @game_select_window.exchange[7] = true
    else
      @game_select_window.exchange[7] = false
    end
    # □Surrender
    if @blackjack_step == 0 or @surrender == false or @hit
      @game_select_window.exchange[8] = true
    else
      @game_select_window.exchange[8] = false
    end
    # □End
    @game_select_window.exchange[9] = @playing
    @game_select_window.refresh
  end
  #--------------------------------------------------------------------------
  # ■ 連鎖の処理
  #--------------------------------------------------------------------------
  def chain?(chain)
    max = HIDE_BLACKJACK::MAX_BET - 1
    min = HIDE_BLACKJACK::MIN_BET - 1
    if @old_chain == true && chain
      @chain = [[@chain + 1,min].max,max].min
      @chain_count = 1
    elsif @old_chain == false && chain == false
      @chain = [[@chain - 1,min].max,max].min
      @chain_count = 2
    else
      @chain_count = 0
    end
    if @chain == min
      @chain_count = 0
    end
    
    @old_chain = chain
    # □BETの描画
    bet?(0,0) ; bet?(1,0)
  end
  #--------------------------------------------------------------------------
  # ■ Max_Betの描画
  #--------------------------------------------------------------------------
  def draw_max_bet?
    # □Max_Betの描画
    @blackjack_window_chain.bitmap.fill_rect(Rect.new(590,330,32,24),Color.new(0,0,0,0))
    @blackjack_window_chain.bitmap.blt(590,330,@bet_pic,Rect.new(32 * @chain_count,24 * @chain,32,24))
  end
  #--------------------------------------------------------------------------
  # ■ ナンバーの描画
  #--------------------------------------------------------------------------
  def draw_numbers?
    n_font = Copy_Font.new(30,true)
    n_font.name = ["Arial","ＭＳ ゴシック"]
    for i in 0...@numbers.size
      cx = 0
      n_font.color = @a_color
      if @numbers[i] == 21
        n_font.color = @bj_color
      elsif @numbers[i] > 21
        n_font.color = @bs_color
      end
      case i
      when 0,2,4
        if n_font.text_width(0.to_s) < n_font.text_width(@numbers[i].to_s)
          cx = n_font.text_width(0.to_s)
        end
        px = i == 4 ? 1 : 0
        py = i != 0 ? 1 : 0
        @blackjack_window_top.bitmap.fill_rect(Rect.new(448-259*px,5+166*py,48,32),Color.new(0,0,0,0))
        
        if @split_active && i == 4 or i != 4
          @blackjack_window_top.draw_text(464-cx-259*px,5+166*py,32,32,@numbers[i].to_s,0,n_font)
        end
      when 1,3,5
        px = i == 5 ? 1 : 0
        py = i != 1 ? 1 : 0
        @blackjack_window_top.bitmap.fill_rect(Rect.new(492-259*px,5+166*py,28,32),Color.new(0,0,0,0))
        if @split_active && i == 5 or i != 5
          @blackjack_window_top.draw_text(492-259*px,5+166*py,32,32,@numbers[i].to_s,0,n_font)
        end
      end
    end
    return
  end
  #--------------------------------------------------------------------------
  # ■ キーヘルプを描画
  #--------------------------------------------------------------------------
  def draw_key?(d = true)
    pic = RPG::Cache.windowskin(HIDE_BLACKJACK::BET)
    for i in 0..3
      @blackjack_window_chain.bitmap.fill_rect(Rect.new(16+i*32,456,32,24),Color.new(0,0,0,0))
      if d
        @blackjack_window_chain.bitmap.blt(16+i*32,456,pic,Rect.new(224,120+i*24,32,24))
      end
    end
  end
  #--------------------------------------------------------------------------
  # ■ BETの描画
  #--------------------------------------------------------------------------
  def bet?(id,n,c = 0)
    c = @bet_double == 0 ? 0 : 1
    # □選択肢の文字色を初期化
    exchange_colors?
    max = HIDE_BLACKJACK::MAX_BET
    if @chain+1 >= @bet_point[id] + n
      @bet_point[id] = [[@bet_point[id]+ n,0].max,max].min
    elsif n == 0
      if $game_party.coin >= @coin_rate * @bet_point[id]
        max = @chain+1
      else
        max = [[$game_party.coin/@coin_rate,0].max,@chain].min
      end
      @bet_point[id] = [[@bet_point[id]+ n,0].max,max].min
    else
      @bet_point[id] = 0
    end
    @bet_coin = @bet_double*@coin_rate
    # □Betの描画
    for i in 0...@bet_point.size
      @bet_coin += @bet_point[i]*@coin_rate
      @blackjack_window_chain.bitmap.fill_rect(Rect.new(334-i*256,368,48,48),Color.new(0,0,0,0))
      @blackjack_window_chain.bitmap.fill_rect(Rect.new(358-i*256,356,48,48),Color.new(0,0,0,0))
      @blackjack_window_chain.bitmap.fill_rect(Rect.new(310-i*256,356,48,48),Color.new(0,0,0,0))
      if @bet_point[i] > 0
        n = (@bet_point[i]-1)
        if n > 9 && n < 15
          @blackjack_window_chain.bitmap.blt(358-i*256,356,@bet_chip,Rect.new(48*c,48*4,48,48))
          @blackjack_window_chain.bitmap.blt(310-i*256,356,@bet_chip,Rect.new(48*c,48*(n%10),48,48))
          @blackjack_window_chain.bitmap.blt(334-i*256,368,@bet_chip,Rect.new(48*c,48*4,48,48))
        end
        if n > 4 && n < 10
          @blackjack_window_chain.bitmap.blt(358-i*256,356,@bet_chip,Rect.new(48*c,48*(n%5),48,48))
          @blackjack_window_chain.bitmap.blt(334-i*256,368,@bet_chip,Rect.new(48*c,48*4,48,48))
        end
        if n < 5
          @blackjack_window_chain.bitmap.blt(334-i*256,368,@bet_chip,Rect.new(48*c,48*n,48,48))
        end
      end
    end
    # □選択肢の文字色を初期化
    exchange_colors?
  end
  #--------------------------------------------------------------------------
  # ■ Win/Loseの描画
  #--------------------------------------------------------------------------
  def draw_win?(dealer = "",player = "",player2 = "")
    if dealer != @burst && (player == @win or player2 == @win)
      dealer = @lose
    end
    a_font = @a_font.dup
    @blackjack_window_chain.bitmap.fill_rect(Rect.new(370,8,80,32),Color.new(0,0,0,0))
    @blackjack_window_chain.bitmap.fill_rect(Rect.new(370,174,76,32),Color.new(0,0,0,0))
    @blackjack_window_chain.bitmap.fill_rect(Rect.new(370-259,174,76,32),Color.new(0,0,0,0))
    case dealer
    when @win
      a_font.color = @bj_color
    when @lose
      a_font.color = @n_color
    when @tie
      a_font.color = @a_color
    when @burst
      a_font.color = @bs_color
    end
    @blackjack_window_chain.draw_text(370,8,76,32,dealer,1,a_font)
    case player
    when @win
      a_font.color = @bj_color
    when @lose
      a_font.color = @n_color
    when @tie
      a_font.color = @a_color
    when @burst
      a_font.color = @bs_color
    end
    @blackjack_window_chain.draw_text(370,174,76,32,player,1,a_font)
    case player2
    when @win
      a_font.color = @bj_color
    when @lose
      a_font.color = @n_color
    when @tie
      a_font.color = @a_color
    when @burst
      a_font.color = @bs_color
    end
    if @split_active
      @blackjack_window_chain.draw_text(370-259,174,76,32,player2,1,a_font)
    end
  end
  #--------------------------------------------------------------------------
  # ■ BJ役の描画
  #--------------------------------------------------------------------------
  def draw_hand(premium = "",x = 0)
    @blackjack_window_top.bitmap.fill_rect(Rect.new(280-22-x,330+3,200,20),Color.new(0,0,0,0))
    @blackjack_window_top.draw_text(276-x,329,160,0,premium,1,@bj_font)
  end
  #--------------------------------------------------------------------------
  # ■ BJの初期化
  #--------------------------------------------------------------------------
  def blackjack_reset?
    @payout = 0
    @bet_double = 0
    @game_select_window.index = 1
    if $game_party.coin < @coin_rate
      @bet_point = [0,0]
      @bet_coin = 0
      bet?(0,0) ; bet?(1,0)
      @game_select_window.index = 9
    end
    # □split描画の初期化
    @bet_point[1] = 0
    @premium_window.visible = true
    @split_window.visible = false
    @player_select_window.visible = true
    @player2_select_window.visible = false
    # □BETの描画
    @card_window.cards = @deck + [0,14,28,42,57]
    bet?(0,0) ; bet?(1,0)
    # □Flush描画の初期化
    @premium_window.bitmap.fill_rect(Rect.new(180,194,32,20),Color.new(0,0,0,0))
    @premium_window.draw_text(180,194,32,0,@scores[0].to_s,2,@bj_font)
    # □初期化
    refresh
    # □カード描画の更新
    draw_deck?(0,72,@card_window.cards)
    @card_window.count_zero?
    @card_window.card_clear
    @card_window.card_select?
    # □BJ役の描画(初期化)
    draw_hand
    draw_hand("",259)
    @card_window.minus_card
    @blackjack_step = 0
    @playing = false
    # □選択肢の文字色を初期化
    exchange_colors?
    
    @game_select_window.active = true
  end
  #--------------------------------------------------------------------------
  # ■ ゲームの終了
  #--------------------------------------------------------------------------
  def blackjack_end
    unless @playing
      # □ブラックジャック開始前の BGM に戻す
      $game_system.bgm_play($game_temp.map_bgm)
      # マップ画面に切り替え
      $scene = Scene_Map.new
      return
    end
  end
end
