Chương trình 'Pac-Man
Cài đặt
Bạn chơi như Pac-Man. Bạn muốn thu thập các viên, trái cây và viên năng lượng trước bất kỳ ai khác, trong khi tránh ma.
Quy tắc
- Mỗi Pac-Man hợp lệ sẽ ở trong một mê cung duy nhất. Người chơi có số điểm tích lũy cao nhất sau 10 trận sẽ giành chiến thắng.
- Một trò chơi kết thúc khi tất cả Pac-Men đã chết, tất cả các viên đã biến mất, hoặc 500 lượt đã trôi qua
- Nếu Pac-Man chết, anh ta tiếp tục chơi như một con ma
- Ăn một viên năng lượng sẽ khiến bạn bất khả chiến bại trong 10 lượt và cho phép bạn ăn ma
- Ăn một con ma sẽ dịch chuyển con ma đến một vị trí ngẫu nhiên
- Ma quỷ không thể ăn bất cứ thứ gì ngoại trừ Pac-Men và không nhận được bất kỳ điểm nào
- Ăn các món sau đây như Pac-Man sẽ giúp bạn có được những điểm sau:
- Viên: 10
- Viên năng lượng: 50
- Quả: 100
- Ma: 200
Mê cung
Nếu có n Pac-Men, sau đó một mê cung của kích thước sqrt(n)*10
bằng sqrt(n)*10
sẽ được tạo ra sử dụng Thuật toán Prim (do yếu tố sông thấp của nó), sau đó bện hoàn toàn, ưu tiên cho những ngõ cụt đã tồn tại. Hơn nữa, việc bện này có thể được thực hiện trên các cạnh, do đó có một vài con đường từ trên xuống dưới và từ trái sang phải.
Sẽ có:
2n
Ma4n
Viên năng lượng2n
Trái câyn
Pac-Men ở những điểm mà các ô vuông lân cận được kết nối trống rỗng.- Tất cả các điểm trống còn lại sẽ được lấp đầy bằng các viên
Do đó, một bản đồ ban đầu với 10 người chơi sẽ trông giống như thế này (Ghosts = green, Pellets = aqua, fruit = red, Pac-Man = yellow):
Đầu ra đầu vào
Khi bắt đầu trò chơi , Bạn sẽ được cung cấp một dòng nhân vật duy nhất, đại diện cho các bức tường ở mỗi ô vuông trên bản đồ. Đối với mỗi hình vuông, bắt đầu từ trên cùng bên trái, di chuyển sang phải và gói sang dòng tiếp theo, bạn sẽ được cung cấp một chữ số hex biểu thị tình huống tường:
0: No walls
1: North wall
2: East wall
3: East & North wall
4: South wall
5: South & North wall
6: South & East wall
7: Won't occur
8: West wall
9: West & North wall
A: West & East wall
B: Won't occur
C: West & South wall
D: Won't occur
E: Won't occur
F: Won't occur
Nói một cách đơn giản, North = 1, East = 2, South = 4 và West = 8, được cộng lại với nhau.
Sau đó, mỗi lượt , bạn sẽ được trao vị trí hiện tại và các vật phẩm trong tầm nhìn của bạn (nếu bạn là Pac-Man. Tất cả các hồn ma đều nhận được tất cả các ô vuông từ -5 đến +5 từ vị trí tương đối của chúng). Tầm nhìn của bạn sẽ dựa trên hướng bạn đi trong lượt cuối. Nếu bạn đi về phía bắc, bạn sẽ được cung cấp tất cả các hình vuông trực tiếp về phía Bắc, Đông và Tây của bạn cho đến khi một bức tường cắt tầm nhìn của bạn cộng với một hình vuông Tây Bắc và Đông Bắc duy nhất, nếu không có bức tường nào cắt tầm nhìn của bạn. Nếu bạn chọn không di chuyển, bạn sẽ được cung cấp các ô vuông theo cả 8 hướng.
Đối với hình ảnh, I
có nghĩa là vô hình, V
có nghĩa là có thể nhìn thấy, P
có nghĩa là Pac-Man (giả sử Pac-Man đang quay mặt về hướng bắc):
|I I|V|I|
|I V|V V|
|V V P|I|
|I I|I|I|
Mỗi ô vuông sẽ được cung cấp bởi một tọa độ, và sau đó là nội dung. Nội dung của nó được thể hiện bằng các ký tự sau:
P
: 1 hoặc nhiều Pac-ManG
: 1 hoặc nhiều mao
: ViênO
: Viên điệnF
: Miếng trái câyX
: Không có gì
Nếu có một con ma và một cái gì đó khác trên một hình vuông, G
sẽ được trả lại.
Do đó, nếu bạn ở trên hình vuông 23,70
, bạn chỉ cần di chuyển về phía bắc, hình vuông phía trên bạn là một ngõ cụt và chứa một viên năng lượng, và bạn có những bức tường ở cả hai bên, đầu vào của bạn sẽ là:
23,70X 22,70O
Trên hình vuông hiện tại của bạn, nó sẽ hiển thị G
nếu bạn là Ghost, P
nếu có một Pac-Man khác trên hình vuông của bạn, nếu không thìX
Sau đó, bạn sẽ trả lại các mục sau qua STDOUT:
Một ký tự duy nhất đại diện cho một hướng ( N
orth, E
ast, S
outh, W
est hoặc X
Stay).
Trước khi đi theo một hướng, bạn cũng có thể chuyển qua bất kỳ tọa độ nào x,y
và các bức tường của hình vuông đó sẽ được chuyển trở lại (như được mô tả ở trên)
Chương trình phải được chạy liên tục cho đến khi Q
được truyền cho nó thông qua STDIN. Các chương trình sẽ được khởi động lại cho mỗi trò chơi.
Không được phép truy cập các thông tin khác bên ngoài những gì được truyền đến STDIN (bao gồm cả dữ liệu Pac-male khác hoặc dữ liệu được giữ bởi chương trình máy chủ).
Việc không trả lại di chuyển trong vòng 1000 ms sẽ chấm dứt chương trình (Chạy trên máy Win8 khá tốt của tôi). Bạn sẽ có 2 giây để xử lý bố cục mê cung ban đầu khi được đưa ra
Máy chủ sẽ được viết bằng Python và mã để kiểm tra bot của bạn sắp ra mắt.
Trường hợp đặc biệt
- Nếu nhiều Pac-Men kết thúc trên cùng một vị trí, không nhận được nội dung của hình vuông hiện tại, trừ khi chính xác 1 trong số đó là bất khả chiến bại, trong trường hợp đó, Pac-Man bất khả chiến bại sẽ nhận được viên.
- Một Pac-Man bị Ghost ăn thịt sẽ không bị dịch chuyển đi nơi khác. Nếu hai Pac-Men ở trên một hình vuông và một là bất khả chiến bại, hồn ma sẽ bị dịch chuyển.
- Được dịch chuyển tức thời như một Ghost ngăn bạn di chuyển trong 1 lượt. Khi chơi như một Ghost, bạn chỉ cần bỏ qua lượt của mình
- Cố gắng di chuyển qua một bức tường sẽ được hiểu là "Ở lại"
Mỗi con ma ban đầu sẽ nhận được một trong 4 đặc điểm tính cách, như được mô tả ở đây , với sửa đổi sau:
- Các lỗi được mô tả sẽ không được nhân đôi
- Tất cả họ sẽ hoạt động ngay từ đầu
- Chúng chỉ dễ bị tổn thương đối với người chơi đã ăn viên
- Họ sẽ chuyển đổi vô hạn từ phân tán sang đuổi theo, mỗi lần có một số lượt cố định trước khi chuyển đổi
- Khi chuyển sang đuổi theo, họ sẽ tìm thấy Pac-Man gần nhất để đuổi theo, và sẽ đuổi theo Pac-Man đó trong suốt thời gian họ đuổi theo. (Nếu có sự ràng buộc cho sự gần gũi, Pac-Man sẽ được chọn giả danh)
- Blinky sẽ không tăng tốc
- Inky sẽ chọn con ma gần nhất để căn cứ vào tính toán của mình sau khi chuyển sang đuổi theo.
- Clyde sẽ tìm tất cả người chơi 8 ô vuông, sau đó theo người chơi xa nhất.
- Tất cả ma trừ Clyde sẽ không nhắm mục tiêu đến một người chơi ở xa hơn 5 ô vuông
Tôi sẽ chấp nhận mã có thể biên dịch từ một ngôn ngữ tiêu chuẩn hoặc .exe (có mã đi kèm).
Mẹo lập trình
Bạn có thể với bộ điều khiển của tôi. Bạn cần đặt thư mục / bot / your_bot_name / trong cùng thư mục với chương trình. Trong thư mục, bạn cần thêm một lệnh.txt chứa lệnh để thực thi chương trình của bạn (ví dụ python my_bot.py
:) và bot của bạn.
Mã điều khiển nằm trên Github (mã Python, yêu cầu Pygame nếu bạn muốn đồ họa.) Đã thử nghiệm trên windows và linux
QUẦN ÁO
ghostbuster: 72.840 điểm
con đường: 54.570 điểm
cận thị: 50.820 điểm
tránh tương tác: 23.580 điểm
nhà vật lý: 18.330 điểm
ngẫu nhiên: 7.760 điểm
dumbpac: 4.880 điểm