0% found this document useful (0 votes)
145 views

Cricket Score Python Automation Description

This document contains code for a cricket scorecard displayer. It defines classes for Players and Teams. The Team class tracks player objects, overs, and can print scorecards. It has a method to run an innings where it tracks runs, balls, wickets based on user input. The start_match function initializes a match between two teams, runs their innings, and declares a winner.

Uploaded by

Hartaran Panesar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
145 views

Cricket Score Python Automation Description

This document contains code for a cricket scorecard displayer. It defines classes for Players and Teams. The Team class tracks player objects, overs, and can print scorecards. It has a method to run an innings where it tracks runs, balls, wickets based on user input. The start_match function initializes a match between two teams, runs their innings, and declares a winner.

Uploaded by

Hartaran Panesar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

"""

Cricket Score Card Displayer

"""

class Player:
def __init__(self, runs, balls, sixes, fours, player_id, position):
self.runs = runs
self.balls = balls
self.sixes = sixes
self.fours = fours
self.player_id = player_id
self.position = position

def set_runs(self, runs):


self.runs += runs
if runs == 6:
self.sixes += 1
if runs == 4:
self.fours += 1

def dotBalls(self):
self.balls += 1

class Team:
def __init__(self, overs, players: Player):
self.overs = overs
self.players = players

def print_scorecard(self, players: Player, score, over, balls, b1, b2,


wickets):
print(f"Player Name Score 4s 6s Balls")

for player in players:


print(player.player_id, end='')
if (player.position == b1):
print("*", end="")
elif player.position == b2:
print("#", end="")
else:
print("", end="")

print(f" {player.runs} {player.fours} {player.sixes}


{player.balls}")

print(f"Total: {score} / {wickets}")

if balls == 0:
print(f"Overs : {over}")
else:
print(f"Overs : {over}.{balls}")

def match_innings(self, team_number, other_team_score):


print(f"{other_team_score}: other_team_score")
players = []
score = 0
scorecard = []
play_sequence = []
print(f"\nBatting Order for team : {team_number}")
for player in range(self.players):
play_sequence.append(input())

for i, lineup_val in enumerate(play_sequence):


players.append(Player(0, 0, 0, 0, lineup_val, i))
scorecard.append(Player(0, 0, 0, 0, lineup_val, i))

p1 = players.pop(0)
p2 = players.pop(0)

strike = p1
wickets = 0

for over in range(1, self.overs + 1):


balls = 6

print(f"\nOver: {over}")

while (balls > 0):


ball = input()

if ball in "0123456":
strike.set_runs(int(ball))
strike.dotBalls()
score += int(ball)
if id(strike) == id(p1):
p1 = strike
if int(ball) % 2:
strike = p2

else:
p2 = strike
if int(ball) % 2:
strike = p1

balls -= 1
elif ball == "W":
wickets += 1
strike.dotBalls()
scorecard[strike.position] = strike

if id(strike) == id(p1):
p1 = strike

if players:
p1 = players.pop()
strike = p1
else:
scorecard[p2.position] = p2
self.print_scorecard(scorecard, score, over, (6 -
balls) + 1, p2.position, -1, wickets)
return score, wickets

else:
if players:
p2 = players.pop()
strike = p2
else:
scorecard[p1.position] = p1
self.print_scorecard(scorecard, score, over, (6 -
balls) + 1, p1.position, -1, wickets)
return score, wickets

balls -= 1

elif ball == "Wd":


score += 1

if other_team_score:
# print(f"other team score: {other_team_score}")
# # print(f"score: {score}")
if score > other_team_score:
self.print_scorecard(scorecard, score, over, 0,
p1.position, p2.position, wickets)
return score, wickets

if id(strike) == id(p1):
p1 = strike
strike = p2
else:
p2 = strike
strike = p1

scorecard[p1.position] = p1
scorecard[p2.position] = p2

self.print_scorecard(scorecard, score, over, 0, p1.position,


p2.position, wickets)

return score, wickets

# scorecard = [p1 obj, p2 obj,....]

def start_match():
players = int(input("Players: "))
overs = int(input("Overs: "))
t = Team(overs=overs, players=players)
team1 = t.match_innings(team_number=1, other_team_score=None)
team2 = t.match_innings(team_number=2, other_team_score=team1[0])
if team1[0] > team2[0]:
print(f"\nTeam 1 won the match by {team1[0] - team2[0]} runs!")
elif team1[0] < team2[0]:
print(f"\nTeam 2 won the match by {team2[0] - team1[0]} runs!")
else:
print(f"Match is Draw with runs: {team1[0]}")

if __name__ == "__main__":
start_match()

You might also like