-
01-03-2013, 07:06 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
thuật toán Alphabeta trong game cờ tướng
Mình làm game bằng j2me trên mobile.Mình đã làm được hai người chơi trên cùng 1 máy.bây giờ phải dùng thuật toán để sinh nước đi cho máy tự đánh
vấn đề của mình là khi sinh nước đi cho mỗi bên mthuwrminhf không biết lưu và duyệt nó như thế nào cho đúng.
Ai làm rồi giúp mình với
Mình code thuật toán như sau:
public int is = 1;
public Pos bestMove;
int u = 0;
int LEVER = 2;
Vector listMove = new Vector();
public int AlphaBeta(int alpha, int beta, int depth) {
if (depth == 0) {
return Eval(depth);
} else {
int best, value = 0;
best = -100000;
is = 1 - is;
if (depth == LEVER) {
listMove = genPos(is);
u = listMove.size() - 1;
}
if (depth > 0 && depth < LEVER) {
Vector m = new Vector();
m = genPos(is);
if (m.size() != 0) {
for (int i = 0; i < m.size(); i++) {
listMove.addElement(m.elementAt(i));
}
}
u = listMove.size() - 1;
}
while (u > 0 && (best < beta)) {
if (best > alpha) {
alpha = best;
}
doMove(((Pos) listMove.elementAt(u)).p, ((Pos) listMove.elementAt(u)).hangcu, ((Pos) listMove.elementAt(u)).cotcu, ((Pos) listMove.elementAt(u)).hangmoi, ((Pos) listMove.elementAt(u)).cotmoi);
if (depth > 1) {
((Pos) listMove.elementAt(u)).cha = true;
}
value = -AlphaBeta(-beta, -alpha, depth - 1);
undoMove(((Pos) listMove.elementAt(u)).p, ((Pos) listMove.elementAt(u)).hangcu, ((Pos) listMove.elementAt(u)).cotcu, ((Pos) listMove.elementAt(u)).hangmoi, ((Pos) listMove.elementAt(u)).cotmoi);
if (value > best) {
best = value;
if (depth == LEVER) {
bestMove = new Pos(((Pos) listMove.elementAt(u)).p, ((Pos) listMove.elementAt(u)).hangcu, ((Pos) listMove.elementAt(u)).cotcu, ((Pos) listMove.elementAt(u)).hangmoi, ((Pos) listMove.elementAt(u)).cotmoi,((Pos) listMove.elementAt(u)).cha);
}
}
listMove.removeElementAt(u);
u--;
if (u >= 0) {
if (((Pos) listMove.elementAt(u)).cha == true) {
undoMove(((Pos) listMove.elementAt(u)).p, ((Pos) listMove.elementAt(u)).hangcu, ((Pos) listMove.elementAt(u)).cotcu, ((Pos) listMove.elementAt(u)).hangmoi, ((Pos) listMove.elementAt(u)).cotmoi);
depth = depth + 1;
listMove.removeElementAt(u);
u--;
is = 0;
}
}
return best;
}
}
}View more random threads:
- Vẽ đường thẳng bằng chuột với WPF trong C#
- VietOCR.NET - nhận dạng ký tự quang học
- Source code Total Commander C#
- [3 layer model] minh họa trong bài tính tổng phân số
- Source Game Xếp hình C#
- Quản lý cửa hàng bán xe máy
- Chương Trình Tử Vi viết bằng C# [Đầy đủ mã nguồn]
- Share hàng loạt source code asp net
- Chương trình Chat qua mạng Lan cơ bản
- Chương trình quản lý khách sạn viết bằng C# 2003 [Đầy đủ mã nguồn]
Với sự đa dạng và phong phú về mẫu mã và giá cả, choxeonline.vn hứa hẹn sẽ là địa chỉ tin cậy cho những ai đang tìm kiếm chiếc xe ô tô ưng ý. Từ những mẫu xe hạng sang đến những chiếc xe gia đình...
Khám Phá Đa Dạng Sản Phẩm Xe Ô Tô...