练习专区

今天的一小步就是明天的一大步
Problem 1651 坦克大战
Accepted: 8   Total Submit: 26
Time Limit: 1000ms   Memory Limit: 30720KB
Description
坦克是种能够自行的火炮,它具有车辆的特点,又具有火炮的特点。现在要求你先创建一个车辆类Vehicle,该车辆类具有属性车重weight,能在陆地上前进forward,后退backward,左转turnLeft和右转turnRight。在车辆类Vehicle的基础上创建一个坦克类Tank,它还具有属性炮弹数目shell,此外它还能够发射炮弹fire,每发射一枚炮弹,其炮弹数目要减1,当没有炮弹时发射不能成功。在键盘上有对应的字母来控制坦克: N表示新建一辆坦克,每辆新坦克默认具有30发炮弹,坦克的车重由用户输入一个数字给定,输出“新建一辆*吨重的坦克,炮弹30发”。 W表示前进,每次前进时往前移动100米,并输出“前进100米”。 X表示后退,每次后退时往后移动50米,并输出“后退50米”。 A表示左转,每次左转时炮口往左转向5度,并输出“左转5度”。 D表示右转,每次右转时炮口往右转向5度,并输出“右转5度”。 F表示开火,每次开火会发射一发炮弹,并输出“炮弹剩余*发”,若没有炮弹可供发射时要提示炮手“炮弹为0,请装填炮弹”。 L表示装填炮弹,每次装填将装满30炮弹,装填后输出“可供发射的炮弹数目为30发”。 供参考main()函数: void main() { int n; int m; char cz; char ch; Tank *pt = NULL; while(cin>>cz>>n) { pt = new Tank(n); cin>>m; for(int i = 0;i < m;i++) { cin>>ch; switch(ch) { case 'W': pt->forward(); break; case 'X': pt->backward(); break; case 'A': pt->turnLeft(); break; case 'D': pt->turnRight(); break; case 'F': pt->fire(); break; case 'L': pt->load(); break; } } } }
Input
输入有多组,每组由若干行数据。 每组的第1行是有字母“N”和数字Z组合的数据,表示新建一辆坦克,其车重为Z吨。 接下来一行是个正整数M,表示下面有M个坦克的操作。随后是M行数据,每行数据都是一个字母:字母的意义见上述内容。
Output
输出对应的信息。格式见范例。
Sample Input
N 10
6
W
A
F
F
F
L
Sample Output
新建一辆10吨重的坦克,炮弹30发
前进100米
左转5度
炮弹剩余29发
炮弹剩余28发
炮弹剩余27发
可供发射的炮弹数目为30发
Hint
提交     返回