COMPUTE









How do I use C O M P U T E
Below are practical examples compiled from projects for learning and reference purposes

Featured Snippets


File name: GameManager.cs Copy
149  IEnumerator init() {
150   Stopwatch timer = new Stopwatch();
151   timer.Start();
152
153   //wait for nodes
154   while (!grid.IsReady) yield return null;
155   //wait for pieces
156   while (!grid.ArePiecesSpawned) yield return null; //wait till pieces are spawned
157   while (!p1.IsReady) yield return null; //wait till all pieces are scaled in
158   while (!p2.IsReady) yield return null;
159   print("Time elapsed: " + timer.ElapsedMilliseconds / 1000.0 + "s");
160   timer.Stop();
161
162   //IMPORTANT
163   p1.ComputePieces();
164   p2.ComputePieces();
165   SwitchPlayer(); //if null current player = p1
166
167   //all objects are now ready
168   ready = true;
169  }
File name: BishopMovement.cs Copy
7  public BishopMovement(GCPlayer player, Piece piece) : base(player,piece) {
8   BoundComputations += ComputeBound;
9  }
File name: BishopMovement.cs Copy
11  public override void ComputeBound() {
12   Node currNode = piece.Node;
13   int origRow = currNode.row;
14   int origCol = currNode.col;
15
16   Grid grid = GameManager.Instance.Grid;
17
18   //right-up
19   for (int ru = 1; ru + origRow < grid.Rows && ru + origCol < grid.Cols; ru++) {
20    int newRow = ru + origRow;
21    int newCol = ru + origCol;
22    Node newNode = grid.GetNodeAt(newRow, newCol);
23    if (ComputeMoveOrEatPieceEnemyAlly(newNode)) break;
24   }
25
26   //left-up
27   for (int lu = -1; origRow - lu < grid.Rows && lu + origCol >= 0; lu--) {
28    int newRow = origRow - lu;
29    int newCol = lu + origCol;
30    Node newNode = grid.GetNodeAt(newRow, newCol);
31    if (ComputeMoveOrEatPieceEnemyAlly(newNode)) break;
32   }
33
34   //right-bot
35   for (int rb = 1; origRow - rb >= 0 && rb + origCol < grid.Cols; rb++) {
36    int newRow = origRow - rb;
37    int newCol = rb + origCol;
38    Node newNode = grid.GetNodeAt(newRow, newCol);
39    if (ComputeMoveOrEatPieceEnemyAlly(newNode)) break;
40   }
41
42   //left-bot
43   for (int lb = -1; lb + origRow >= 0 && lb + origCol >= 0; lb--) {
44    int newRow = lb + origRow;
45    int newCol = lb + origCol;
46    Node newNode = grid.GetNodeAt(newRow, newCol);
47    if (ComputeMoveOrEatPieceEnemyAlly(newNode)) break;
48   }
49  }
File name: CircleMovement.cs Copy
7  public CircleMovement(GCPlayer player, Piece piece) : base(player,piece) {
8   BoundComputations += ComputeBound;
9  }
File name: CircleMovement.cs Copy
11  public override void ComputeBound() {
12   Node currNode = piece.Node;
13   int origRow = currNode.row;
14   int origCol = currNode.col;
15
16   Node frontNode = null;
17   Node leftEatNode = null;
18   Node rightEatNode = null;
19
20   Grid grid = GameManager.Instance.Grid;
21   GCPlayer p1 = p1 = GameManager.Instance.P1;
22
23   int toAdd = 0;
24   if (p1.Has(piece)) {
25    toAdd = 1;
26   } else {
27    toAdd = -1;
28   }
29
30   frontNode = grid.GetNodeAt(origRow + toAdd, origCol);
31   leftEatNode = grid.GetNodeAt(origRow + toAdd, origCol - 1);
32   rightEatNode = grid.GetNodeAt(origRow + toAdd, origCol + 1);
33
34   ComputeMoveOrEatPiece(leftEatNode);
35   ComputeMoveOrEatPiece(rightEatNode);
36   ComputeMoveOrEatPiece(frontNode);
37  }
File name: CrossMovement.cs Copy
8  public CrossMovement(GCPlayer player, Piece piece) : base(player,piece) {
9   BoundComputations += ComputeBound;
10  }
File name: CrossMovement.cs Copy
12  public override void ComputeBound() {
13   Node currNode = piece.Node;
14   int origRow = currNode.row;
15   int origCol = currNode.col;
16
17   Grid grid = GameManager.Instance.Grid;
18
19   for (int row = -1; row <= 1; row++) {
20    for (int col = -1; col <= 1; col++) {
21     if (row == 0 && col == 0) continue;
22
23     int newRow = origRow + row;
24     int newCol = origCol + col;
25     ComputeMoveOrEatPiece(grid.GetNodeAt(newRow, newCol));
26    }
27   }
28  }
File name: KingMovement.cs Copy
16  public KingMovement(GCPlayer player, Piece piece) : base(player,piece) {
17   BoundComputations += ComputeBound;
18   specialNodes = new Node[2,2];
19   rooks = new Piece[2];
20   grid = GameManager.Instance.Grid;
21   p1 = GameManager.Instance.P1;
22   p2 = GameManager.Instance.P2;
23  }
File name: KingMovement.cs Copy
25  public override void ComputeBound() {
26   Node currNode = piece.Node;
27   int origRow = currNode.row;
28   int origCol = currNode.col;
29
30   for (int row = -1; row <= 1; row++) {
31    for (int col = -1; col <= 1; col++) {
32     if (row == 0 && col == 0) continue;
33
34     int newRow = origRow + row;
35     int newCol = origCol + col;
36     ComputeMoveOrEatPiece(grid.GetNodeAt(newRow, newCol));
37    }
38   }
39
40   if (!moved && !didCastling && !player.IsChecked) {
41    //check left
42    int left = 1;
43    bool freeLeft = true;
44    int sign = GetSign();
45    while (true) {
46     int newCol = origCol - left * sign;
47     if (newCol < 0 || newCol >= grid.Cols) break;
48     Node toCheckNode = grid.GetNodeAt(origRow, newCol);
49
50     if (toCheckNode.EmptySpace) {
51      if (Rules.IsGuardedMove(player,piece,toCheckNode)) {
52       freeLeft = false;
53       break;
54      }
55     } else {
56      Piece cPiece = toCheckNode.Piece;
57      if (Rules.IsAlly(cPiece, piece) && cPiece.PieceType == PieceType.SQUARE) {
58       rooks[0] = cPiece;
59      } else {
60       freeLeft = false;
61      }
62      break;
63     }
64
65
66     left++;
67    }
68    if (freeLeft && !rooks[0].IsMoved) {
69     specialNodes[0,0] = grid.GetNodeAt(origRow, origCol - 1 * sign); //for rook
70     specialNodes[0,1] = grid.GetNodeAt(origRow, origCol - 2 * sign); //for king
71     ComputeMovePiece(specialNodes[0,1]);
72    }
73
74    //check right
75    int right = 1;
76    bool freeRight = true;
77    while (true) {
78     int newCol = origCol + right * sign;
79     if (newCol < 0 || newCol >= grid.Cols) break;
80     Node toCheckNode = grid.GetNodeAt(origRow, newCol);
81
82     if (toCheckNode.EmptySpace) {
83      if (Rules.IsGuardedMove(player,piece,toCheckNode)) {
84       freeRight = false;
85       break;
86      }
87     } else {
88      Piece cPiece = toCheckNode.Piece;
89      if (Rules.IsAlly(cPiece, piece) && cPiece.PieceType == PieceType.SQUARE) {
90       rooks[1] = cPiece;
91      } else {
92       freeRight = false;
93      }
94      break;
95     }
96
97
98     right++;
99    }
100    if (freeRight && !rooks[1].IsMoved) {
101     specialNodes[1,0] = grid.GetNodeAt(origRow, origCol + 1 * sign); //for rook
102     specialNodes[1,1] = grid.GetNodeAt(origRow, origCol + 2 * sign); //for king
103     ComputeMovePiece(specialNodes[1,1]);
104    }
105
106   }
107  }
File name: KnightMovement.cs Copy
7  public KnightMovement(GCPlayer player, Piece piece) : base(player,piece) {
8   BoundComputations += ComputeBound;
9  }

Download file with original file name:COMPUTE

COMPUTE 93 lượt xem

Gõ tìm kiếm nhanh...