using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Pawn : ChessMan {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public override bool[,] PossibleMove(){
bool[,] r = new bool[8, 8];
ChessMan c, c2;
int[] e = BoardManager.Instance.enPassant;
//White move
if (isWhite) {
//diagonal left
if (CurrentX != 0 && CurrentY != 7) {
//Debug.Log (CurrentY);
if (e [0] == CurrentX - 1 && e [1] == CurrentY + 1)
r [(int)CurrentX - 1, CurrentY + 1] = true;
c = BoardManager.Instance.Chessmans [(int)CurrentX - 1, CurrentY + 1];
if (c != null && !c.isWhite) {
r [(int)CurrentX - 1, CurrentY + 1] = true;
}
}
//diagonal right
if (CurrentX != 8 && CurrentY != 7) {
Debug.Log (CurrentX);
if (e [0] == CurrentX + 1 && e [1] == CurrentY + 1)
r [(int)CurrentX + 1, CurrentY + 1] = true;
c = BoardManager.Instance.Chessmans [(int)CurrentX + 1, CurrentY + 1];
if (c != null && !c.isWhite) {
r [(int)CurrentX + 1, CurrentY + 1] = true;
感谢您的帮助。
答案 0 :(得分:0)
由于您没有显示整个代码,因此很难找到出错的确切位置。但我会解释你的问题是什么以及如何解决。
为可能的位置定义矩阵(二维数组):
bool[,] r = new bool[8, 8];
这意味着您将用作在Matrix中访问这些元素的索引的变量需要在以下范围内:
0< CurrentX || CurrentY< 8 强>
由于您在访问矩阵中的元素的同一时刻增加/减少此值,因此您需要先添加条件。例如,对于这种情况:
r [(int)CurrentX - 1, CurrentY + 1] = true;
你应该写:
if(CurrentX > 0 && CurrentY < 7){
r [(int)CurrentX - 1, CurrentY + 1] = true;
}
每次您要访问Matrix r