SlideShare a Scribd company logo
- 1 -
1. 프로그램 개요
확률 조정이 가능한 가위바위보 게임 기계
Ÿ 1부터 10까지 난이도 설정 가능
Ÿ 난이도에 따라 이길 확률과 질 확률이 달라짐
Ÿ 이기거나 졌을 때만 코인 감소
Ÿ 사실 이름은 가위바위보지만 사용자의 입력 값은 전혀 상관없는 프로그램
2. 소스 코드
프로그램 명 : 확률 조정이 가능한 가위바위보 게임 기계
작성자 : 16038020 김희진 
- 2 -
## 추억의 짱깸뽀 기계 - 확률 조정 가능, 초기자본 : 코인5개##
## 16038020 김희진 ##
## 변수 선언 부분
numbers=[1,1,1,1,2,2,2,4,4,7,7,20] #당첨금액
num,select,get=0,0,0
difficulty=1 #어려움 설정(1~10) 숫자가 높을수록 당첨되기 어려움
coin = 5 #초기 자본
a=3+(difficulty-1)*2 #분모
b=(a//2+1)//2+1 #분자
## 메인(main) 코드 부분
import random
import time
while coin>0 :
print("~ 추억의 짱깸뽀 기계 ~ 나의 코인 : %d" % coin)
select = int(input("1.가위 2.바위 3.보 : "))
if (select<1) or (select>3) :
print("1,2,3 중에서 다시 선택하세요!n")
continue
print("가위..")
- 3 -
time.sleep(1)
print("바위..")
time.sleep(1)
print("보..!")
time.sleep(1)
num=random.randrange(1,a)
if num==1 : #이긴 경우
get=numbers[random.randrange(0,len(numbers))] #랜덤한 당첨금액
print("이겼습니다! %d 코인을 획득했습니다!n" % get)
coin+=get #당첨금액만큼 코인에 추가
elif (1<num) and (num<=b) : #비긴 경우
print("비겼습니다!n")
continue #코인 감소 없이 리게임
else :
print("졌습니다!n")
coin-=1 #한 게임이 끝나면 코인 감소
print("GAME OVER! 코인이 다 떨어졌어요..:(")
3. 변수 선언
난이도 a 이길 확률 b 비길 확률 질 확률
1 3 1/3(0.33) 2 1/3(0.33) 1/3(0.33)
2 4 1/4(0.25) 2 1/4(0.25) 2/4(0.5)
3 6 1/6(0.17) 3 2/6(0.33) 3/6(0.5)
4 8 1/8(0.13) 3 2/8(0.25) 5/8(0.63)
5 10 1/10(0.1) 4 3/10(0.33) 6/10(0.6)
6 12 1/12(0.08) 4 3/12(0.25) 8/12(0.66)
7 14 1/14(0.07) 5 4/14(0.28) 9/14(0.64)
8 16 1/16(0.06) 5 4/16(0.25) 11/16(0.69)
9 18 1/18(0.06) 6 5/18(0.28) 12/18(0.67)
10 20 1/20(0.05) 6 5/20(0.25) 14/20(0.7)
§ numbers 라는 리스트에 당첨금액을 저장해놓았다. 1개의 경우 제일 당첨되기 쉽고
20이 제일 당첨되기 어렵게 개수를 조정해놓았다. 랜덤하게 get에 저장된다.
§ select는 제대로 된 값을 입력했는지 확인하기 위한 값이다.
§ difficulty에 따라 num값의 범위와 이에 따른 확률이 달라진다.
§ a는 전체적인 확률을 위해 만든 변수이며 2씩 증가한다.
§ b는 비길 확률을 만들기 위해서 만들어진 변수이며 두 수가 한 쌍일 때 1씩 증가한
다.
4. 메인 코드
- 4 -
§ 코인이 0이 되면 while문을 빠져나가 프로그램이 종료된다.
§ select로 값을 입력받고 잘못 입력받았을 경우 while문의 처음으로 되돌아간다.
§ num은 1에서 a까지의 값 중 하나를 랜덤으로 받는다. 1인 경우 이기고 1보다 크고
b보다 작은 경우 비기고 나머지의 경우 진다.
§ 이겼을 경우 numbers 리스트에서 값 하나를 랜덤하게 받아 get에 저장하고 그 값만
큼 coin에 추가하고 coin을 1만큼 감소시키고 다시 while문을 수행한다.
§ 비겼을 경우 while문의 처음으로 되돌아간다.
§ 졌을 경우 coin을 1만큼 감소시키고 다시 while문을 수행한다.
§ 마지막에 coin을 1만큼 감소시키는 이유는 게임비용만큼 감소하는 것이다.
5. 실행 결과
잘못 입력했을 경우 난이도 1 난이도 10
- 5 -
6. 평가
§ 난이도 1과 10의 차이가 크다.
§ 이길 확률은 난이도가 높아질수록 확실히 낮아지지만 비길 확률은 불규칙하다. 질 확
률은 난이도가 높아질수록 높아지는 편이긴 하지만 일정하지는 않아서 아쉽다.
§ 변수 a,b의 경우 확률을 맞추려고 임의로 만든 변수라서 처음 본 사람은 이해하기 어
려울 것 같다.
§ 변수 선언 부분과 메인 코드 부분을 나눠서 가독성이 좋다.

More Related Content

PDF
[Unity3D] Cat RPG game
PDF
[APM] Homepage bbs
PDF
[C# Winform] make vocabulary test using excel
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
PDF
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
PDF
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
PDF
2024 State of Marketing Report – by Hubspot
[Unity3D] Cat RPG game
[APM] Homepage bbs
[C# Winform] make vocabulary test using excel
2024 Trend Updates: What Really Works In SEO & Content Marketing
Storytelling For The Web: Integrate Storytelling in your Design Process
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
2024 State of Marketing Report – by Hubspot
Ad

[Python] Controllable rock-paper-scissors game

  • 1. - 1 - 1. 프로그램 개요 확률 조정이 가능한 가위바위보 게임 기계 Ÿ 1부터 10까지 난이도 설정 가능 Ÿ 난이도에 따라 이길 확률과 질 확률이 달라짐 Ÿ 이기거나 졌을 때만 코인 감소 Ÿ 사실 이름은 가위바위보지만 사용자의 입력 값은 전혀 상관없는 프로그램 2. 소스 코드 프로그램 명 : 확률 조정이 가능한 가위바위보 게임 기계 작성자 : 16038020 김희진 
  • 2. - 2 - ## 추억의 짱깸뽀 기계 - 확률 조정 가능, 초기자본 : 코인5개## ## 16038020 김희진 ## ## 변수 선언 부분 numbers=[1,1,1,1,2,2,2,4,4,7,7,20] #당첨금액 num,select,get=0,0,0 difficulty=1 #어려움 설정(1~10) 숫자가 높을수록 당첨되기 어려움 coin = 5 #초기 자본 a=3+(difficulty-1)*2 #분모 b=(a//2+1)//2+1 #분자 ## 메인(main) 코드 부분 import random import time while coin>0 : print("~ 추억의 짱깸뽀 기계 ~ 나의 코인 : %d" % coin) select = int(input("1.가위 2.바위 3.보 : ")) if (select<1) or (select>3) : print("1,2,3 중에서 다시 선택하세요!n") continue print("가위..")
  • 3. - 3 - time.sleep(1) print("바위..") time.sleep(1) print("보..!") time.sleep(1) num=random.randrange(1,a) if num==1 : #이긴 경우 get=numbers[random.randrange(0,len(numbers))] #랜덤한 당첨금액 print("이겼습니다! %d 코인을 획득했습니다!n" % get) coin+=get #당첨금액만큼 코인에 추가 elif (1<num) and (num<=b) : #비긴 경우 print("비겼습니다!n") continue #코인 감소 없이 리게임 else : print("졌습니다!n") coin-=1 #한 게임이 끝나면 코인 감소 print("GAME OVER! 코인이 다 떨어졌어요..:(") 3. 변수 선언 난이도 a 이길 확률 b 비길 확률 질 확률 1 3 1/3(0.33) 2 1/3(0.33) 1/3(0.33) 2 4 1/4(0.25) 2 1/4(0.25) 2/4(0.5) 3 6 1/6(0.17) 3 2/6(0.33) 3/6(0.5) 4 8 1/8(0.13) 3 2/8(0.25) 5/8(0.63) 5 10 1/10(0.1) 4 3/10(0.33) 6/10(0.6) 6 12 1/12(0.08) 4 3/12(0.25) 8/12(0.66) 7 14 1/14(0.07) 5 4/14(0.28) 9/14(0.64) 8 16 1/16(0.06) 5 4/16(0.25) 11/16(0.69) 9 18 1/18(0.06) 6 5/18(0.28) 12/18(0.67) 10 20 1/20(0.05) 6 5/20(0.25) 14/20(0.7) § numbers 라는 리스트에 당첨금액을 저장해놓았다. 1개의 경우 제일 당첨되기 쉽고 20이 제일 당첨되기 어렵게 개수를 조정해놓았다. 랜덤하게 get에 저장된다. § select는 제대로 된 값을 입력했는지 확인하기 위한 값이다. § difficulty에 따라 num값의 범위와 이에 따른 확률이 달라진다. § a는 전체적인 확률을 위해 만든 변수이며 2씩 증가한다. § b는 비길 확률을 만들기 위해서 만들어진 변수이며 두 수가 한 쌍일 때 1씩 증가한 다. 4. 메인 코드
  • 4. - 4 - § 코인이 0이 되면 while문을 빠져나가 프로그램이 종료된다. § select로 값을 입력받고 잘못 입력받았을 경우 while문의 처음으로 되돌아간다. § num은 1에서 a까지의 값 중 하나를 랜덤으로 받는다. 1인 경우 이기고 1보다 크고 b보다 작은 경우 비기고 나머지의 경우 진다. § 이겼을 경우 numbers 리스트에서 값 하나를 랜덤하게 받아 get에 저장하고 그 값만 큼 coin에 추가하고 coin을 1만큼 감소시키고 다시 while문을 수행한다. § 비겼을 경우 while문의 처음으로 되돌아간다. § 졌을 경우 coin을 1만큼 감소시키고 다시 while문을 수행한다. § 마지막에 coin을 1만큼 감소시키는 이유는 게임비용만큼 감소하는 것이다. 5. 실행 결과 잘못 입력했을 경우 난이도 1 난이도 10
  • 5. - 5 - 6. 평가 § 난이도 1과 10의 차이가 크다. § 이길 확률은 난이도가 높아질수록 확실히 낮아지지만 비길 확률은 불규칙하다. 질 확 률은 난이도가 높아질수록 높아지는 편이긴 하지만 일정하지는 않아서 아쉽다. § 변수 a,b의 경우 확률을 맞추려고 임의로 만든 변수라서 처음 본 사람은 이해하기 어 려울 것 같다. § 변수 선언 부분과 메인 코드 부분을 나눠서 가독성이 좋다.