The rules:
- The points rolled on each player’s dice are added to their score.
- If the total is an even number, an additional 10 points are added to their score.
- If the total is an odd number, 5 points are subtracted from their score.
- If they roll a double, they get to roll one extra die and get the number of points rolled added to their score.
- The score of a player cannot go below 0 at any point.
- The person with the highest score at the end of the 5 rounds wins.
- If both players have the same score at the end of the 5 rounds, they each roll 1 die and whoever gets the highest score wins (this repeats until someone wins)
import pickle
import random
import time
print("")
print("welcome to the dice game")
print("")
with open('users.pickle', 'rb') as f:
users = pickle.load(f)
print(users)
def login():
logged_in = False
username = input('please enter username: ')
while not logged_in:
if username in users:
password = input("enter password: ")
if password == users[username]:
print("access granted")
logged_in = True
else:
print("access denied")
exit()
return username
print(" ")
rounds = 0
def roll():
die1 = random.randint(1, 7)
die2 = random.randint(1, 7)
change = 10 if (die1 + die2) % 2 == 0 else -5
points = die1 + die2 + change
if die1 == die2:
points += random.randint(1, 6)
return points
def game():
player1_points = 0
player2_points = 0
for i in range(1, 6):
player1_points += roll()
print(f'After this round user1 you now have: {player1_points} Points')
# time.sleep(1)
player2_points += roll()
print(f'After this round user2 you now have: {player2_points} Points')
player1_tiebreaker = 0
player2_tiebreaker = 0
if player1_points == player2_tiebreaker:
while player1_tiebreaker == player2_tiebreaker:
player1_tiebreaker = random.randint(1, 6)
player2_tiebreaker = random.randint(1, 6)
player2_win = (player2_points + player2_tiebreaker)
player1_win = (player1_points + player1_tiebreaker) \
return (player1_points, player1_win), (player2_points, player2_win)
def add_winner(winner):
with open('Winner.txt', 'a') as i:
i.write(','.join(map(str, winner)))
i.write('\n')
def get_leaderboard():
with open('Leaderboard.txt', 'r+') as g:
return [line.replace('\n', '') for line in g.readlines()]
def update_leaderboard(leaderboard, winner):
for idx, item in enumerate(leaderboard):
if item.split(',')[1] == winner[1] and int(item.split(',')[0]) < int(winner[0]):
leaderboard[idx] = '{}, {}'.format(winner[0], winner[1])
else:
pass
leaderboard.sort(reverse=True)
def save_leaderboard(leaderboard):
with open('Leaderboard.txt', 'r+') as h:
for item in leaderboard:
h.write(f'{item}\n')
def main():
user1 = login()
user2 = login()
(player1, player1_win), (player2, player2_win) = game()
if player1_win:
winner = [player1, user1]
else:
winner = [player2, user2]
print("Well done: ", winner[1], "you won with", winner[0], "Points")
add_winner(winner)
leaderboard = get_leaderboard()
update_leaderboard(leaderboard, winner)
save_leaderboard(leaderboard)
if __name__ == '__main__':
main()