Nội dung Bài tập
Mã:
ROBOT4
Tên:
OOP Robot
Dạng thi:
oi
Thang điểm:
10 điểm
Giới hạn thời gian:
1 giây
Giới hạn bộ nhớ:
256 MB
Được tạo bởi:
tamtd
Để xây dựng chương trình chơi game, người ta cần xây dựng các con Robot. Mỗi con Robot có các
thành phần sau đây:
- Name: tên của con robot
- UserName: tên của người điều khiển robot
- EnergyLevel: cho biết mức năng lượng hiện hành (kiểu int)
- LocationX: cho biết vị trí hoành độ hiện hành của robot (kiểu int)
- LocationY: cho biết vị trí tung độ hiện hành của robot (kiểu int)

- Hàm khởi tạo Robot(string name, string username, int x, int y). Hai tham số name và
username dùng để gán giá trị lần lượt cho tên robot và tên người điều khiển. EnergyLevel
mặc định là 100. Robot mặc định ở tọa độ (x,y) với x, y là hai tham số truyền vào.

- Hàm khởi tạo Robot(string name, string username). Hai tham số name và username dùng
để gán giá trị lần lượt cho tên robot và tên người điều khiển. EnergyLevel mặc định là 100.
Robot mặc định ở tọa độ (0,0)

- Hàm khởi tạo Robot() mặc định. Tên robot mặc định là “Robot” và tên người điều khiển mặc
định là “NoName”. EnergyLevel mặc định là 100. Robot mặc định ở tọa độ (0,0)

- Hàm khởi tạo sao chép Robot(const Robot)

- Phương thức void Charge(): Dùng để nạp thêm năng lượng. Mỗi lần nạp năng lượng được
tăng thêm 10 đơn vị

- Phương thức bool Move(int direction). Nếu mức năng lượng nhỏ hơn hoặc bằng 0 thì trả về
false và không di chuyển. Nếu direction không phải bằng 0, 1, 2, 3 thì cũng trả về false và
không di chuyển. Ngược lại thì sẽ di chuyển. Tùy vào giá trị của direction mà robot sẽ di
chuyển theo hướng nào đó: 
+ 0 là sang trái (giảm 1 đơn vị hoành độ), 
+ 1 là sang phải (tăng 1 đơn vị hoành độ), 
+ 2 là tiến lên (tăng 1 đơn vị tung độ), 
+ 3 là lùi lại (giảm 1 đơn vị tung độ).
Sau mỗi lần di chuyển, mức năng lượng giảm đi 5 đơn vị.

- Phương thức void Display() in ra chuỗi string có dạng như sau:
{Name}:{UserName}
Ví dụ robot có Name là “ABC” và UserName là “Nguyễn Văn A”
thì chuỗi string in ra là: {ABC}:{Nguyễn Văn A}

Có 1 loại robot đặc biệt tên là AdaptiveRobot. Nó đặc biệt ở hàm Move:
- Nếu mức năng lượng lớn hơn 50 thì mỗi lần di chuyển, robot di chuyển 1 lúc 3 bước và
năng lượng sẽ giảm đi 12 đơn vị.
- Nếu mức năng lượng nhỏ hơn hoặc bằng 50 và lớn hơn 20 thì mỗi lần di chuyển, robot di
chuyển 1 lúc 2 bước và năng lượng sẽ giảm đi 9 đơn vị.
- Nếu mức năng lượng nhỏ hơn hoặc bằng 20 thì mỗi lần di chuyển, robot di chuyển 1 lúc 1
bước và năng lượng sẽ giảm đi 6 đơn vị.

AdaptiveRobot có hàm khởi tạo mặc định tương tư như Robot nhưng tên robot mặc định là
“AdaptiveRobot”.

Yêu cầu: 
- Xây dựng 2 lớp đối tượng vừa mô tả ở trên theo phương pháp lập trình hướng đối tượng với đầy đủ các thành phần cần thiết.
- Sử dụng kĩ thuật kế thừa - đa hình để thực hiện đúng yêu cầu.

Input:
- Dòng 1: số nguyên N cho biết số lượng Robot
- Nx4 dòng tiếp theo lần lượt là thông tin của từng Robot, như sau:
+ Tên Robot: nếu tên Robot bắt đầu bằng chữ 'A' thì đó là AdaptiveRobot
+ Tên người điều khiển
+ 3 số nguyên cho biết: năng lượng, hoành độ X khởi đầu , tung độ Y khởi đầu
+ 1 chuỗi số nguyên cho biết sự di chuyển của Robot, chuỗi này kết thúc bằng giá trị -1: nếu gặp giá trị 0, 1, 2, 3 thì di chuyển theo hướng quy định, nếu gặp giá trị là 4 thì Robot được 1 lần nạp thêm năng lượng.

Output
Nx3 dòng cho biết thông tin mỗi Robot, như sau:
+ {Name}:{UserName}
+ Vị trí hiện tại của Robot sau khi kết thúc di chuyển, theo định dạng (X,Y)
+ Năng lượng hiện tại của Robot sau khi kết thúc di chuyển

Ví dụ 1:
InputOutput
3
WallE
Mark
90 1 0
0 3 2 1 -1
AEve
Lily Ng
55 0 -2
0 0 2 0 2 -1
Super
Jack Evan
50 0 0
1 2 4 1 1 -1
{WallE}:{Mark}
(1,0)
70
{AEve}:{Lily Ng}
(-3,0)
34
{Super}:{Jack Evan}
(3,1)
40

    Quảng cáo
       Ngôn ngữ : 

       Theme : 
Mời bạn soạn code



		



      Ai có thể xem bài này : 

Thông tin



Phần thảo luận