[Python] 파이썬으로 빙고 게임을 만들어보자

빙고 게임 파이썬으로 만들기

https://bingobaker.com/view/2551671

빙고 게임 만들기 조건

  1. 함수를 실행하면 자동으로 1부터 25까지 5x5 격자 형태의 빙고판을 생성한다.
  2. 호출자는 1부터 25까지의 숫자를 랜덤하게 숫자를 입력할 수 있다.
  3. 호출 된 숫자는 이 후 0으로 간주되며, 이미 한 번 호출한 숫자라면 "이미 부른 숫자"라는 오류가 호출된다.
  4. 가로, 세로, 대각선 방향으로 5개의 숫자를 연속해서 체크하고 3줄이면 '빙고'로 게임이 종료된다.

빙고 파이썬 함수 작성 코드 

1. 빙고판을 생성하고, 빙고의 조건 함수를 만들기

# 빙고판 자동 생성
def gen_bingo():
    numbers = list(range(1,26))
    import random as rnd
    rows = []
    for _ in range(5):
        row = []
        for _ in range(5):
            index = rnd.randint(0,len(numbers)-1)
            number = numbers.pop(index)
            row.append(number)
        rows.append(row)
    return rows

def set_0(game, search_num):
    for row in game:
        if search_num in row:
            index = row.index(search_num)
            row[index] = 0
            break
    else:
        print("이미 한번 찾은 숫자입니다.")

# 빙고 조건 만들기
def get_bingocount(game):
    bingo_count = 0
    # 한줄이 빙고인지?
    for row in game:
        if row.count(0) == 5:
            print("1 row bingo")
            bingo_count += 1

    # 한 컬럼이 빙고인지?
    for column in range(5):
        row_count = 0
        for row in game:
            if row[column] == 0:
                row_count+=1
        if row_count == 5:
            print("1 column bingo")
            bingo_count += 1

    count = 0
    for index in range(5):
        if game[index][index] == 0:
            count += 1
    if count == 5:
        print("대각선 bingo")
        bingo_count += 1

    count = 0
    for index in range(5):
        if game[index][4-index] == 0:
            count += 1
    if count == 5:
        print("대각선 bingo")
        bingo_count += 1

    print("총 빙고 갯수", bingo_count)
    return bingo_count
gen_bingo()

 

2. 맞출 숫자 입력칸을 만들어주고 빙고 확인 조건 만들기

game = gen_bingo() # 원본 게임판 준비

while True:
    # 맞출 숫자 하나 입력하기
    number = input("숫자 : ")
    number = int(number)
    # 그 숫자가 있다면 0으로 체크
    set_0(game, number)
    # 빙고가 됐는지 확인
    game_count = get_bingocount(game)
    
    print(game) # 원본 게임판 재 출력
    if game_count == 3:
        print("Bingo!!!!")
        break

 

 

 

생각보다 쉽지 않아서 한줄한줄 만들기 어려웠다. 그래도 파이썬 코드 짤 때 도움이 많이 되니 한줄한줄 익혀보자