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...