public void Reset() { thuTu = 0; GiaTri = new Node[10]; for (int i = 0; i < 10; i++) { GiaTri[i] = new Node(); } }
public _5O_ChienThang() { 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]; } ///tìm node có giá trị cao nhất và đánh cờ
public void Add(Node n) { GiaTri[thuTu] = n; thuTu++; }
private void txtMay_Change(object sender, TextChangedEventArgs e) { if (BanCo.Option.WhoPlayWith == Player.MayOnline) { if (BanCo.currPlayer == Player.Human && BanCo.end == Player.None) { BanCo.board[BanCo.rows, BanCo.columns] = BanCo.currPlayer;//Lưu loại cờ vừa đánh vào mảng BanCo.DrawDataBoard(BanCo.rows, BanCo.columns, true, true); BanCo.end = BanCo.CheckEnd(BanCo.rows, BanCo.columns);//Kiểm tra xem trận đấu kết thúc chưa if (BanCo.end == Player.Human)//Nếu người chơi 2 thắng { BanCo.OnWin();//Khai báo sư kiện Win BanCo.OWinorLose();//Hiển thị 5 ô Win. btnStartMay.Content = "New game"; newgame = true; } else { BanCo.currPlayer = Player.Com;//Thiết lập lại lượt chơi BanCo.OnComDanhXong();// Khai báo sự kiện người chơi 2 đánh xong } } if (BanCo.currPlayer == Player.Com && BanCo.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 BanCo.eBoard.ResetBoard(); BanCo.LuongGia(Player.Com);//Lượng giá bàn cờ cho máy node = BanCo.eBoard.GetMaxNode();//lưu vị trí máy sẽ đánh int r, c; r = node.Row; c = node.Column; connect.rw1 = r; connect.cl1 = c; BanCo.board[r, c] = BanCo.currPlayer; //Lưu loại cờ vừa đánh vào mảng BanCo.DrawDataBoard(r, c, true, true); //Vẽ con cờ theo lượt chơi connect.guitoado(socket, r, c); BanCo.end = BanCo.CheckEnd(r, c);//Kiểm tra xem trận đấu kết thúc chưa if (BanCo.end == Player.Com)//Nếu máy thắng { BanCo.OnLose();//Khai báo sư kiện Lose BanCo.OWinorLose();//Hiển thị 5 ô Lose. btnStartMay.Content = "New game"; newgame = true; } else if (BanCo.end == Player.None) { BanCo.currPlayer = Player.Human;//Thiết lập lại lượt chơi BanCo.OnComDanhXong();// Khai báo sự kiện người đánh xong } } } }
//Hàm lấy thông tin 5 ô Win hoặc Lose public static void OWinorLose() { Node node = new Node(); for (int i = 0; i < 5; i++) { node = OWin.GiaTri[i]; DanhDau ddau = new DanhDau(); ddau.Height = 40; ddau.Width = 40; ddau.Opacity = 100; ddau.HorizontalAlignment = 0; ddau.VerticalAlignment = 0; ddau.Margin = new Thickness(node.Column * length - 2, node.Row * length - 3, 0, 0); grdBanCo.Children.Add(ddau); } }
public void danh(object sender, RunWorkerCompletedEventArgs e) { 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 { OnLose();//Khai báo sư kiện Lose OWinorLose();//Hiển thị 5 ô 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 } } }