Cricket Match

Fri 09 January 2026
# pylint: disable=missing-function-docstring, pointless-string-statement, missing-class-docstring

#Gonna try this using the game of chess

"""
@author: Shankar P

"""

import random
import time

canadian_player_names = [
    "Akhil Kumar",
    "Jaskaran Singh",
    "Shreyas Movva",
    "Saad Bin Zafar"
]

australian_player_names = [
    "Tim David",
    "Cummins",
    "Green"
]

team_a_name = "Canada"
team_b_name = "Australia"

# Cricket Constants
SLEEP_GAP_SECONDS = 0.7
OVERS_PER_INNINGS = 2

def get_random_player_name():

    return random.choice(canadian_player_names)

def print_line_gap():

    print(f"")

def get_random_run():
    # TODO: improve the weights so we can get wicket as well.
    # However, getting a wicket should be 1/25 balls.
    return random.randint(0, 6)

def play_single_ball(
    c_player_name,
    c_ball_index
):

    current_run = get_random_run()
    print(f"[{c_ball_index}]: {c_player_name} scored: {current_run}")

    return current_run

def play_single_over(team_name, over_index):

    current_player = get_random_player_name()

    score_this_over = 0
    for i in range(6):
        current_over_and_ball = f"{over_index}.{ (i+1)}"
        c_run = play_single_ball(current_player, current_over_and_ball)

        score_this_over += c_run
        time.sleep(SLEEP_GAP_SECONDS)

    print_line_gap()
    print(f"{team_name} Scored: {score_this_over} / 0 in {over_index+1} overs")

    return score_this_over


def play_single_innings(team_name):

    print(f"{team_name} is batting now!")
    print_line_gap()

    innings_score = 0
    for i in range(OVERS_PER_INNINGS):
        score_per_over = play_single_over(team_name, i)
        print('-' * 30)

        innings_score += score_per_over

    print(f"{team_name} Final Score: {innings_score}")

    return innings_score

def play_single_match():

    team_a_final_score = play_single_innings(team_a_name)
    print_line_gap()
    print_line_gap()
    team_b_final_score = play_single_innings(team_b_name)

    if(team_b_final_score > team_a_final_score):
        print(f"{team_b_name} wins")
    elif(team_b_final_score == team_a_final_score):
        print(f"It's a tie between {team_a_name} and {team_b_name}")
    else:
        print(f"{team_a_name} wins")

def startpy():
    # print("Tact101")

    # play_single_ball()

    # play_single_over()

    play_single_match()

if __name__ == "__main__":
    startpy()

# startpy()
Canada is batting now!

[0.1]: Saad Bin Zafar scored: 6
[0.2]: Saad Bin Zafar scored: 2
[0.3]: Saad Bin Zafar scored: 0
[0.4]: Saad Bin Zafar scored: 6
[0.5]: Saad Bin Zafar scored: 6
[0.6]: Saad Bin Zafar scored: 6

Canada Scored: 26 / 0 in 1 overs
------------------------------
[1.1]: Akhil Kumar scored: 3
[1.2]: Akhil Kumar scored: 4
[1.3]: Akhil Kumar scored: 4
[1.4]: Akhil Kumar scored: 6
[1.5]: Akhil Kumar scored: 5
[1.6]: Akhil Kumar scored: 3

Canada Scored: 25 / 0 in 2 overs
------------------------------
Canada Final Score: 51


Australia is batting now!

[0.1]: Shreyas Movva scored: 6
[0.2]: Shreyas Movva scored: 2
[0.3]: Shreyas Movva scored: 3
[0.4]: Shreyas Movva scored: 4
[0.5]: Shreyas Movva scored: 2
[0.6]: Shreyas Movva scored: 3

Australia Scored: 20 / 0 in 1 overs
------------------------------
[1.1]: Saad Bin Zafar scored: 2
[1.2]: Saad Bin Zafar scored: 1
[1.3]: Saad Bin Zafar scored: 2
[1.4]: Saad Bin Zafar scored: 2
[1.5]: Saad Bin Zafar scored: 1
[1.6]: Saad Bin Zafar scored: 5

Australia Scored: 13 / 0 in 2 overs
------------------------------
Australia Final Score: 33
Canada wins


Score: 0

Category: python-cricket