Liar's Dice là một trò chơi súc sắc khá đơn giản. Tôi đã thấy một vài biến thể khác nhau của các quy tắc, nhưng đây là phiên bản tôi quen thuộc nhất:
- Mỗi người chơi bắt đầu với 5d6
- Ngoại trừ khi kiểm tra súc sắc ở cuối vòng, mỗi người chơi có thể thấy xúc xắc của riêng mình, nhưng không phải là của bất kỳ đối thủ nào
- Khi bắt đầu bất kỳ vòng nào, tất cả người chơi sẽ tung bất kỳ con xúc xắc nào họ hiện có
- Sau đó, một người chơi (thông thường, đây là người chiến thắng của vòng trước HOẶC người chơi ở bên trái của người chơi đã bắt đầu lần trước; chúng tôi sẽ sử dụng người chơi trước cho KotH này; với một người chơi ngẫu nhiên bắt đầu vòng đầu tiên) đoán xem có bao nhiêu số cụ thể trên bàn (ONES IS WILD)
- Đặt giá thầu tiếp tục ở bên phải, tăng cao hơn mỗi lần (ví dụ: 3 fives, 3 sixes và 4 twos đều cao hơn 3 fours, nhưng 3 threes thì không, 4 cái cũng cao hơn nhưng đấu thầu trên những cái có thể sẽ đưa bạn vào một bất lợi); cho đến khi bất kỳ người chơi nào gọi người chơi trước họ là kẻ nói dối
- Tại thời điểm này, tất cả người chơi tiết lộ súc sắc của họ và đếm số lần đặt giá cuối cùng trên bàn
- Nếu tổng số tiền thấp hơn giá thầu, người chơi đã đặt giá thầu phải chết cho người chơi gọi họ là kẻ nói dối, nếu không, người chơi gọi người trả giá là người nói dối phải chết cho người trả giá (để người trả giá thắng nếu số lượng của họ ít nhất là nhiều như anh ta đã trả giá, thì đó không phải là con số chính xác)
- Khi bạn hết xúc xắc, bạn sẽ thua
- Người chơi cuối cùng đứng thắng
Ví dụ:
Người chơi có 1,1,2,4,6 Người chơi hai có 1,2,2,3,5 Người chơi ba có 1,3,3,4,6 Người chơi một: ba sáu. Người chơi hai: bốn twos. Người chơi ba: bốn chục. Người chơi một: năm twos. Người chơi hai: sáu twos. Người chơi ba: sáu sáu. Người chơi một: sáu bốn. Người chơi hai: Kẻ nói dối! Họ tiết lộ súc sắc của họ và đếm những người (vì những người hoang dã) và bốn người. Thực tế, có sáu chính xác. Vì vậy, người chơi hai cung cấp cho người chơi một chết. Họ reroll và người chơi bắt đầu vòng tiếp theo.
Bạn phải viết một bot để chơi trò chơi này. Nó phải thực hiện lớp java trừu tượng sau:
public abstract class Player {
public Player() {}
public String toString() {
return this.getClass().getSimpleName();
}
public abstract String bid(int yourId, int[] diceEachPlayerHas, int[] yourDice, String[] bids);
}
- Bạn phải thực hiện phương thức đấu thầu
- Đối số đầu tiên là vị trí hiện tại của bot của bạn theo thứ tự lần lượt, thứ hai là một mảng cho biết mỗi người chơi (bao gồm cả chính bạn) hiện có bao nhiêu, thứ ba là một mảng hiển thị các giá trị hiện được hiển thị trên súc sắc của riêng bạn và thứ tư là một mảng của tất cả các giá thầu được thực hiện kể từ khi bắt đầu vòng hiện tại - sẽ có độ dài 0 nếu bạn thực hiện giá thầu đầu tiên của vòng
- Đầu ra phải là một chuỗi có dạng "mặt số" hoặc chuỗi "Kẻ nói dối!" để gọi người trả giá trước đó là kẻ nói dối.
- Nếu đầu ra của bạn được định dạng bất hợp pháp, bạn sẽ bị loại.
- Bạn có thể ghi đè phương thức toString, nhưng không bắt buộc. Tuy nhiên, bạn không thể chỉnh sửa nó theo bất kỳ cách nào cản trở khả năng đọc của đầu ra của bộ điều khiển.
- Bạn được phép gọi bất kỳ phương thức công khai nào khác của bộ điều khiển, nhưng không được gọi là phương thức chính của nó.
- Bạn chỉ có thể đọc và chỉnh sửa các tệp trong thư mục đang chạy có tiền tố tên bot của bạn
- Bạn không được phép lấy đầu vào từ bất kỳ nguồn nào khác
- Biến sơ thẩm được đặt lại khi bắt đầu mỗi trò chơi mới, nhưng biến tĩnh thì không.
Chấm điểm
- Một bộ gồm 1.000 trò chơi, mỗi trò chơi có 3-5 người chơi, sẽ được mô phỏng mỗi lần thêm bot (ngay khi ba hoặc nhiều bot được gửi), được ghi như thể hiện trong nguồn điều khiển (trong bất kỳ trò chơi cụ thể nào, bạn nhận 1 khi bắt đầu mỗi lượt của bạn, 10 mỗi lần bạn bắt được một con súc sắc và 1.000 phần thưởng nếu bạn giành chiến thắng); thi hành giới hạn 5.000 TURNS (không phải vòng) mỗi trò chơi.
- Bot của bạn sẽ được ghi điểm bởi điểm số của nó từ bộ trò chơi mới nhất; cộng với mười lần số phiếu bầu của nó, nếu không âm. (Cái sau không chắc có ảnh hưởng đáng kể đến điểm số)
Nguồn điều khiển có thể được tìm thấy ở đây.
Điểm số của 2015-06-19:
Badnomial: 434,924 + 6x10 = 424,984
Nobody: 282,329 + 6x10 = 282,389
StraightShooter: 265,205 + 5x10 = 265,255
MostlyHonestAbe: 158,958 + 4x10 = 158,998
The Pirate: 157,005 + 1x10 = 157,015
Statistician: 144,012 + 2x10 = 144,032
Fidelio: 49,973 + 2x10 = 49,993
Absurd Bot: 6,831
DrHouse: 2,638 + 3x10 = 2,668
diceEachPlayerHas[yourId]
= số xúc xắc của bạn và bids[yourId]
là giá thầu đầu tiên của bạn (hoặc null nếu đến lượt đầu tiên của bạn). Đúng không?