//Hàm lấy vị trí có giá trị cao nhất trên bàn cờ public Node GetMaxNode() { Node n = new Node(); int maxValue = GiaTri[0, 0]; Node[] arrMaxNodes = new Node[289]; for (int i = 0; i < 289; i++) { arrMaxNodes[i] = new Node(); } int count = 0; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { if (GiaTri[i, j] > maxValue) { n.Row = i; n.Column = j; maxValue = GiaTri[i, j]; } } } //Với mục đích không lặp lại bước đi giống như lần trước for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { if (GiaTri[i, j] == maxValue) { n.Row = i; n.Column = j; arrMaxNodes[count] = n; count++; } } } //Đường đi sẽ là ngẫu nhiên Random r = new Random(); int soNgauNhien = r.Next(count); return arrMaxNodes[soNgauNhien]; }
// chơi auto public Point AutoPlay() { Node node = new Node(); eBoard.ResetBoard(); LuongGia(CellValues.Player2);//Lượng giá bàn cờ cho máy node = eBoard.GetMaxNode();//lưu vị trí máy sẽ đánh int r = node.Row; int c = node.Column; Cells[r, c] = ActivePlayer; //Lưu loại cờ vừa đánh vào mảng return new Point(r, c); }