일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Database
- ubuntu
- 파이썬 첼린지
- 자바 개념
- Python challenge
- Reversing
- java
- C
- 우분투
- Operating System
- data communication
- Python
- 러스트 예제
- 백준
- 백준 러스트
- 데이터베이스
- 자바
- 자바 기초
- 운영체제
- 오라클
- 파이썬 챌린지
- Rust
- 데이터 통신
- OS
- 러스트
- 러스트 프로그래밍 공식 가이드
- 오라클DB
- 파이썬
- 알고리즘
- 파이썬 알고리즘
- Today
- Total
IT’s Portfolio
[Python] Up&Down 게임을 만들어보자 본문
오늘은 파이썬으로 Up&Down 게임을 만들어보려고 한다.
Up&Down 게임을 모르는 사람은 없을테니 바로 시작해보도록 하자.
준비물: 에픽하이 - 빈차
import
import random
import sys
import getpass
숫자를 랜덤으로 지정하는 random 모듈과 sys 모듈, 입력값을 보이지않게 할 수 있는 getpass 모듈을 import한다.
coding
def main():
print("Game Start!\nPlease select the Mode...\n")
print("=======================")
print("| 1. Easy |")
print("| 2. Normal |")
print("| 3. Hard |")
print("| 4. Hell |")
print("| 5. exit |")
print("=======================")
ran_num, dif = get_ran()
if dif == "1":
print(ran_num)
gamecnt = 20
easyandnormal_game(ran_num, gamecnt)
if dif == "2":
print(ran_num)
gamecnt = 10
easyandnormal_game(ran_num, gamecnt)
if dif == "3":
print(ran_num)
gamecnt = 10
hardandhell_game(ran_num, gamecnt)
if dif == "4":
print(ran_num)
gamecnt = 5
hardandhell_game(ran_num, gamecnt)
main 메소드
게임 난이도를 정할 수 있는 그래픽을 보여준 후 get_ran 메소드를 호출하는 것을 알 수 있다.
get_ran 메소드 실행 후 반환받은 값으로 각 난이도마다 게임 메소드를 호출한다.
코드에는 디버깅을 위해 반환받은 랜덤값을 print해줬다.
def get_ran():
while(True):
dif = input(">>> ")
if dif == "1":
print("You have selected the Easy mode...")
print("Hint: 랜덤 숫자가 1~100까지로 설정됩니다. 기회는 20번입니다.")
ran_num = random.randrange(1, 100)
break
elif dif == "2":
print("You have selected the Normal mode...")
print("Hint: 랜덤 숫자가 1~1000까지로 설정됩니다. 기회는 10번입니다.")
ran_num = random.randrange(1, 1000)
break
elif dif == "3":
print("You have selected the Hard mode...")
print("Hint: 랜덤 숫자가 1~10000까지로 설정됩니다. 자신이 입력한 숫자는 보이지 않습니다. 기회는 10번입니다.")
ran_num = random.randrange(1, 10000)
break
elif dif == "4":
print("You have selected the Hell mode...")
print("Hint: 랜덤 숫자가 1~100000까지로 설정됩니다. 자신이 입력한 숫자는 보이지 않습니다. 기회는 5번입니다.")
ran_num = random.randrange(1, 100000)
break
elif dif == "5":
print("Game Exit!")
sys.exit(0)
else:
print("Error! Please enter the correct Mode number...")
return ran_num, dif
get_ran 메소드
main 메소드에서 본 난이도를 숫자로 선택해 난이도마다 랜덤함수가 정해지는 range값을 알 수 있다.
def easyandnormal_game(ran_num, gamecnt):
cnt = 0
while(1):
try:
my_num = int(input("숫자를 입력하세요 >>> "))
except ValueError:
print("Error!")
sys.exit(1)
except:
continue
cnt = cnt + 1
print(cnt)
if cnt == gamecnt:
print("기회 초과! Game Over...")
break
elif ran_num == my_num:
print(str(cnt) + "번의 시도로 Success!")
break
elif ran_num > my_num:
print("UP!")
else:
print("DOWN!")
def hardandhell_game(ran_num, gamecnt):
cnt = 0
while (1):
try:
my_num = int(getpass.getpass("숫자를 입력하세요 >>> "))
except ValueError:
print("Error!")
sys.exit(1)
except:
continue
cnt = cnt + 1
print(cnt)
if cnt == gamecnt:
print("기회 초과! Game Over...")
break
elif ran_num == my_num:
print(str(cnt) + "번의 시도로 Success!")
break
elif ran_num > my_num:
print("UP!")
else:
print("DOWN!")
if __name__ == '__main__':
main()
easyandnormal_game 메소드 및 hardandhell_game 메소드
easyandnormal_game은 내가 입력한 숫자가 보이도록 input 함수를 사용하지만 hardandhell_game은 내가 입력한 숫자가 보이지않도록 getpass 함수를 사용한다.
두 메소드 다 cnt를 세어서 main 메소드에서 정의한 gamecnt 횟수를 넘으면 게임오버가 된다.
중간에 try~except문은 int형으로 숫자를 입력받는 코드에서 문자를 입력받아 ValueError가 나면 에러 메시지 표시 후 프로그램이 종료된다.
*try~except문
=> 오류가 날 수도 있는 코드를 try문에 넣고 try문 실행 중 오류가 나면 except문으로 넘어가 코드를 실행시킨다. except 다음 오류종류를 지정해서 지정한 오류가 나면 그 때 실행시킬 코드를 코딩하는 것도 가능하다.
실행화면
'Development Study > Python' 카테고리의 다른 글
[Python] 알고리즘 - 3과 5의 배수 합하기 (0) | 2020.06.04 |
---|---|
[Python] Class 생성 시 self 인자에 대해서 (0) | 2020.05.19 |
[Python] bs4와 selenium 같이 써보기 (0) | 2020.04.13 |
[Python] selenium으로 페이스북 자동 로그인/로그아웃 하기 (0) | 2020.04.12 |
[Python] selenium 입문하기 (2) | 2020.04.10 |