Python study

9일차

랜덤연산게임

import random 사용
랜덤으로 뽑은 두 수의 덧셈과 뺄셈 문제가 반복적으로 나오는 프로그램

  • 20%의 확률로 200점 짜리 문제가 나오고 25%의 확률로 목숨 2개 짜리 문제가 나오게 한다.
  • 쉬움(한자리 수 연산), 노멀(두자리 수 연산), 어려움(세자리 수 연산)으로 난이도 조정을 한다.
  • Game out이 될 경우 사용자에게 다시 할 건지 물어보고 yes로 답할 경우 난이도 설정부터 다시 반복되도록 한다.

import random
import os
import time

while 1:
    life = 5
    score = 0
    nan = int(input("난이도 선택 1. 쉬움, 2. 노멀, 3. 어려움 : "))

    if nan == 1:
        r1 = 1
        r2 = 9
    elif nan == 2:
        r1 = 10
        r2 = 99
    else :
        r1 = 100
        r2 = 999

    while 1:
        print("현재 점수 : {}, 현재 목숨 : {}".format(score, life))
        if life <= 0:                   
            break
        
        A = random.randint(r1, r2)
        B = random.randint(r1, r2)

        op = random.randint(0,1)  
        l2 = random.randint(1,4)    
        s200 = random.randint(1,5)  

        if l2 == 1:
            print("목숨 2개 짜리 문제")
            목숨 = 2                    
        else :
            목숨 = 1

        if s200 == 1:
            print("200점 짜리 문제")
            점수 = 200
        else :
            점수 = 100

        if op == 0:
            user = int(input("{} + {} = ".format(A,B)))
            C = A+B
        else :
            user = int(input("{} - {} = ".format(A,B)))
            C = A-B
        
        if user == C:
            score += 점수
            print("정답입니다.")
        else : 
            life -= 목숨
            print("오답입니다.")

        time.sleep(1)
        os.system('cls')

    x = input("다시 게임을 시작하시겠습니까? (y/n) : ")
    if x == 'n':        
        print("게임 종료!")     
        break
  • A = random.randint(r1, r2) : 범위를 미리 지정한 변수를 대입 해서 랜덤 함수를 반복해서 점검할 필요 없이 처리해준다.
  • op = random.randint(0,1) : 덧셈(0), 뺄셈(1)로 지정해서 랜덤 함수 사용
  • l2 = random.randint(1,4) : 1~4까지의 수 중 하나를 목숨 두개 문제로 지정하면 25% 확률로 다룰 수 있다.
  • s200 = random.randint(1,5) : 1~5까지의 수 중 하나를 200점 문제로 지정하면 20% 확률로 다룰 수 있다.
  • if l2 == 1 : if문에서 목숨 = 2 이렇게 변수로 저장을 해준 뒤 if user == C 답을 비교해주는 구문에서 처리해준다.
  • x = input("다시 게임을 시작하시겠습니까? (y/n) : ") 게임이 끝난 후에 물어봐야하기에 while문 내부의 while문이 break된 후에 작성해 준다.
profile
내 꿈은 멋쟁이개발자

0개의 댓글