Lập trình game Pong với XNA

Pong rất nổi tiếng trong thời kì đầu của ngành game. Nhờ cách chơi khá đơn giản, nó trở nên cực kì phổ biến. Với hai thanh đỡ nằm hai bên mép màn hình và một quả bóng, người chơi phải di chuyển các thanh đỡ để bóng không chạm mép. Nếu bóng chạm mép bên phía ta thì đối thủ sẽ được điểm và ngược lại. Do đó, bằng mọi giá, người chơi phải nhạy bén điều khiển thanh đỡ không để hụt bóng.

Cái khó khi thiết kế Pong là làm sao để máy không quá thông minh, khiến người chơi không bao giờ thắng nổi nó. Ta phải cân nhắc để máy không đón đường đi của banh quá chính xác. Để làm việc này, tôi dùng một số ngẫu nhiên để chỉnh tốc độ di chuyển thanh đỡ do máy điều khiển. Máy sẽ đỡ hụt nếu số ngẫu nhiên quá nhỏ, và đỡ trúng nếu số ngẫu nhiên đủ lớn.

Theo thời gian, tôi có thể tăng độ khó của game bằng cách mở rộng phạm vi của số random. Điều này khiến người chơi phải tập trung cao độ để đáp trả những đòn bóng quyết liệt từ máy. Tuy nhiên, đây cũng là một rủi ro vì nếu không tính toán kỹ sẽ khiến cho máy không bao giờ thua. Người chơi sẽ cảm thấy nản khi tốc độ di chuyển bóng nhanh hơn lúc đầu. Làm cho máy “thông minh” là cần thiết, nhưng quá thông minh cũng là cái hại.

Việc sử dụng số random trong game xảy ra như cơm bữa. Trong game Space Shooter cũng làm bằng XNA, tôi dùng số random để thay đổi hướng đi của kẻ thù một cách ngẫu nhiên. Trong game này, tôi cũng thêm một chút “thông minh” cho phi thuyền do máy điều khiển bằng cách chỉ cho nổ súng khi đối mặt trực diện với người chơi. Dùng số random và một ít “thông minh” khiến người chơi phải suy tính chứ không đơn thuần nhắm và bắn. Nhờ đó, game trở nên thử thách hơn mà không nhàm chán.

Đây một đoạn video ngắn mô tả game: