public void Reset() { thuTu = 0; GiaTri = new Node[10]; for (int i = 0; i < 10; i++) { GiaTri[i] = new Node(); } }
public cls5OWin() { GiaTri = new Node[10]; for (int i = 0; i < 10; i++) { GiaTri[i] = new Node(); } thuTu = 0; }
//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]; }
private void AI_play(object sender, RunWorkerCompletedEventArgs e) //Máy đánh { if (currPlayer == Player.Com && end == Player.None)//Nếu lượt đi là máy và trận đấu chưa kết thúc { //Tìm đường đi cho máy eBoard.ResetBoard(); LuongGia(Player.Com);//Lượng giá bàn cờ cho máy node = eBoard.GetMaxNode();//lưu vị trí máy sẽ đánh int r, c; r = node.Row; c = node.Column; board[r, c] = currPlayer; //Lưu loại cờ vừa đánh vào mảng DrawDataBoard(r, c, true, true); //Vẽ con cờ theo lượt chơi end = CheckEnd(r, c);//Kiểm tra xem trận đấu kết thúc chưa if (end == Player.Com)//Nếu máy thắng { OnWin();//Khai báo sư kiện Lose } else if (end == Player.None) { currPlayer = Player.Human;//Thiết lập lại lượt chơi OnComDanhXong();// Khai báo sự kiện người đánh xong } } }
public void Add(Node n) { GiaTri[thuTu] = n; thuTu++; }