Skip to content

Commit 19440c4

Browse files
committed
Update code for class on May 12, 2020
1 parent 8be5279 commit 19440c4

10 files changed

Lines changed: 92 additions & 158 deletions

File tree

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
from Examples.example_5_methods import Bike, Condition
22

3-
bike = Bike('Univega Alpina, orange', Condition.OKAY, sale_price=500, cost=100)
3+
my_bike = Bike(description='Univega Alpina, orange',
4+
condition=Condition.OKAY,
5+
sale_price=500,
6+
cost=100)
47

5-
bike.service(spent=30, sale_price=600) # cost=$130, sale_price=$600
8+
my_bike.service(spent=30, sale_price=600) # cost=$130, sale_price=$600
69

7-
print(bike.sale_price) # 600
10+
print(my_bike.sale_price) # 600
811

9-
print(bike.sell()) # sold=True
12+
print(my_bike.sell()) # sold=True

Refactoring/refactoring_1_procedural.py

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,24 @@
33
There are 2 players.
44
Each player takes turn rolling a die and moving that number of spaces.
55
The first person to space 100 wins.
6-
7-
First pass using procedural/imperative programming
86
"""
97
import random
108

11-
player_1_score = 0
12-
player_2_score = 0
13-
14-
print('Start game!')
15-
16-
while True:
17-
dice = random.randint(1, 6)
18-
player_1_score += dice
19-
print(f'Player 1 rolls a {dice} (score: {player_1_score})')
20-
21-
if player_1_score >= 100:
22-
print('Player 1 wins!')
23-
break
24-
25-
dice = random.randint(1, 6)
26-
player_2_score += dice
27-
print(f'Player 2 rolls a {dice} (score: {player_2_score})')
9+
if __name__ == '__main__':
10+
player_1_score = 0
11+
player_2_score = 0
2812

29-
if player_2_score >= 100:
30-
print('Player 2 wins!')
31-
break
13+
while True:
14+
player_1_die = random.randint(1, 6)
15+
player_1_score += player_1_die
16+
print(f'Player 1 score: {player_1_score}')
17+
if player_1_score >= 100:
18+
print('Player 1 wins!')
19+
break
3220

33-
print()
34-
print('Final score:')
35-
print(f'Player 1: {player_1_score}')
36-
print(f'Player 2: {player_2_score}')
21+
player_2_die = random.randint(1, 6)
22+
player_2_score += player_2_die
23+
print(f'Player 2 score: {player_2_score}')
24+
if player_2_score >= 100:
25+
print('Player 2 wins!')
26+
break

Refactoring/refactoring_4_encapsulation.py

Lines changed: 0 additions & 59 deletions
This file was deleted.

Refactoring/refactoring_4_encapsulation/__init__.py

Whitespace-only changes.

Refactoring/refactoring_4_encapsulation/main.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
Each player takes turn rolling a die and moving that number of spaces.
55
The first person to space 100 wins.
66
"""
7-
from game import Game
7+
from __future__ import absolute_import
8+
9+
from game import Game # In PyCharm, mark parent directory as Sources Root for imports to work
810

911
if __name__ == '__main__':
1012
game = Game(num_players=4, max_die_number=20)

Refactoring/refactoring_5_inheritance.py

Lines changed: 0 additions & 68 deletions
This file was deleted.

Refactoring/refactoring_5_inheritance/__init__.py

Whitespace-only changes.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from player import LuckyPlayer, Player
2+
3+
4+
class Game:
5+
def __init__(self, num_players=2, max_die_number=6):
6+
self.target_score = 50
7+
self.dice_type = max_die_number
8+
self.players = []
9+
for i in range(num_players):
10+
if i == 1:
11+
self.players.append(LuckyPlayer())
12+
else:
13+
self.players.append(Player())
14+
15+
def play_game(self):
16+
while True:
17+
for player in self.players:
18+
player.make_move(with_die=self.dice_type)
19+
if player.score >= self.target_score:
20+
print(f'{player} wins!')
21+
return player
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
"""
2+
Simulate a simple board game.
3+
There are 2 players.
4+
Each player takes turn rolling a die and moving that number of spaces.
5+
The first person to space 100 wins.
6+
"""
7+
from game import Game # In PyCharm, mark parent directory as Sources Root for imports to work
8+
9+
if __name__ == '__main__':
10+
game = Game(num_players=4, max_die_number=20)
11+
winner = game.play_game()
12+
print(f'Congratulations {winner}')
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import random
2+
3+
4+
class Player:
5+
num_players = 0
6+
7+
def __init__(self):
8+
Player.num_players += 1
9+
self.score = 0
10+
self.player_number = Player.num_players
11+
12+
def _roll_die(self, dice_number):
13+
die = random.randint(1, dice_number)
14+
print(f'{self} rolled a {die}')
15+
return die
16+
17+
def make_move(self, with_die):
18+
self.score += self._roll_die(with_die)
19+
print(f'{self}: {self.score}')
20+
21+
def __str__(self):
22+
return f'Player {self.player_number}'
23+
24+
25+
class LuckyPlayer(Player):
26+
def _roll_die(self, dice_number):
27+
die = random.randint(dice_number//2, dice_number)
28+
print(f'{self} rolled a {die}')
29+
return die
30+
31+
def __str__(self):
32+
player_string = super().__str__()
33+
return f'{player_string} (lucky)'

0 commit comments

Comments
 (0)