Exemplo n.º 1
0
 /// <summary>
 /// 強制的に周囲のブロックごとオープンする
 /// </summary>
 /// <param name="target">対象ブロック</param>
 public void ForceOpen(BlockBase target)
 {
     //最初に文字を解放
     _textObj.Dispose();
     //その後で強制オープンの処理
     target.ChangeState(new OpenedState(target));
 }
Exemplo n.º 2
0
 /// <summary>
 /// 状態をオープンにする
 /// </summary>
 /// <param name="target">対象ブロック</param>
 public void OnClicked(BlockBase target)
 {
     if (target.HasMine)
     {
         target.OnGameFailed(new EventArgs());
         return;
     }
     target.ChangeState(new OpenedState(target));
     //周囲も開けようと試みる
     TryOpen(target);
 }
Exemplo n.º 3
0
 /// <summary>
 /// 旗マークが間違っていた場合、強制オープン
 /// </summary>
 /// <param name="target">対象ブロック</param>
 public void TryOpen(BlockBase target)
 {
     //最初に文字を解放
     _textObj.Dispose();
     //その後で強制オープンの処理
     target.ChangeState(new OpenedState(target));
     if (target.AroundMinesNum == 0)
     {
         foreach (var block in target.NeighborBlockList)
         {
             block.CurrentState.TryOpen(block);
         }
     }
 }
Exemplo n.º 4
0
 /// <summary>
 /// 周囲のブロックを強制オープンしようと試みる
 /// </summary>
 /// <param name="target">対象ブロック</param>
 public void TryOpen(BlockBase target)
 {
     /*
      * 1.最初にTryOpenが実行されたブロックをオープンにする
      * 2.TryOpenが実行されたブロックの周りが0ならば
      * 3.各ブロックを走査し
      * 4.再帰的にTryOpenを呼ぶ
      */
     target.ChangeState(new OpenedState(target));        //1
     if (target.AroundMinesNum == 0)                     //2
     {
         foreach (var block in target.NeighborBlockList) //3
         {
             block.CurrentState.TryOpen(block);          //4
         }
     }
 }
Exemplo n.º 5
0
 /// <summary>
 /// 強制的に周囲のブロックごとオープンする
 /// </summary>
 /// <param name="target">対象ブロック</param>
 public void ForceOpen(BlockBase target)
 {
     target.ChangeState(new OpenedState(target));
 }
Exemplo n.º 6
0
 /// <summary>
 /// 旗を立てる処理
 /// </summary>
 /// <param name="target">対象ブロック</param>
 public void OnRightClicked(BlockBase target)
 {
     target.ChangeState(new FlagedState(target));
 }
Exemplo n.º 7
0
 /// <summary>
 /// 旗マークを解除する
 /// </summary>
 /// <param name="target">対象ブロック</param>
 public void OnRightClicked(BlockBase target)
 {
     _textObj.Dispose();
     target.ChangeState(new ClosedState());
 }