File tree Expand file tree Collapse file tree 2 files changed +68
-0
lines changed
Expand file tree Collapse file tree 2 files changed +68
-0
lines changed Original file line number Diff line number Diff line change 1+ class Tank (object ):
2+ def __init__ (self , name ):
3+ self .name = name
4+ self .alive = True
5+ self .ammo = 5
6+ self .armor = 60
7+
8+ def __str__ (self ):
9+ if self .alive :
10+ return "%s (%i armor, %i shells)" % (self .name , self .armor , self .ammo )
11+ else :
12+ return "%s (DEAD)" % self .name
13+
14+ def fire_at (self , enemy ):
15+ if self .ammo >= 1 :
16+ self .ammo -= 1
17+ print (self .name , "fires on" , enemy .name )
18+ enemy .hit ()
19+ else :
20+ print (self .name , "has no shells!" )
21+
22+ def hit (self ):
23+ self .armor -= 20
24+ print (self .name , "is hit!" )
25+ if self .armor <= 0 :
26+ self .explode ()
27+
28+ def explode (self ):
29+ self .alive = False
30+ print (self .name , "explodes!" )
Original file line number Diff line number Diff line change 1+ from tank import Tank
2+
3+ tanks = {"a" :Tank ("Alice" ), "b" :Tank ("Bob" ), "c" :Tank ("Carol" ) }
4+ alive_tanks = len (tanks )
5+
6+ while alive_tanks > 1 :
7+
8+
9+ for tank_name in sorted ( tanks .keys () ):
10+ print (tank_name , tanks [tank_name ])
11+
12+ first = input ("Who fires? " ).lower ()
13+ second = input ("Who at? " ).lower ()
14+
15+ try :
16+ first_tank = tanks [first ]
17+ second_tank = tanks [second ]
18+ except KeyError as name :
19+ print ("No such tank!" , name )
20+ continue
21+
22+ if not first_tank .alive or not second_tank .alive :
23+ print ("One of those tanks is dead!" )
24+ continue
25+
26+
27+ print ("*" * 30 )
28+
29+ first_tank .fire_at (second_tank )
30+ if not second_tank .alive :
31+ alive_tanks -= 1
32+
33+ print ("*" * 30 )
34+
35+ for tank in tanks .values ():
36+ if tank .alive :
37+ print (tank .name , "is the winner!" )
38+ break
You can’t perform that action at this time.
0 commit comments