1. 조건
1. 만들었던 가위바위보 개선
2. 유저와 컴퓨터 초기금 만원
3. 10라운드로 설정, 각 라운드마다 배팅진행
4. 유저가 이길시 배팅금액 x2 획득, 무승부시 배팅금액 날아감, 패배시 배팅금액 x2 뺏김
5. 구경꾼이 옆에 있는데 일정 확률로 구경꾼은 배팅금액만큼 유저에게 돈을 줌
2. 결과
let moneyUser = 10000; //유저 초기금액
let moneyComputer = 10000; //컴퓨터 초기금액
let round = 0; //라운드 설정
let reuslt;
let canbetmoney;
// 유저 이겼을때 유저 돈
function restmoneyUser (a,b){
if (result == "win"){
return a = a + b*2;
}
else if (result == "lose"){
return a = a - b*2;
}
else {
return a = a - b;
}
}
// 유저 이겼을때 컴퓨터 돈
function restmoneyComputer (a,b){
if (result == "win"){
return a = a - b*2;
}
else if (result == "lose"){
return a = a + b*2;
}
else{
return a = a;
}
}
// 최대 배팅 가능 금액
function canbetmoneycalculator (a,b){
if (2*a< b){
return a;
}
if (2*a>=b){
return b/2;
}
}
while (round<10){
round += 1;
//배팅 가능 금액
canbetmoney = canbetmoneycalculator(moneyUser,moneyComputer)
let inspiretype = Number((prompt(round + "라운드 : " + "배팅할 돈을 입력하세요. 최대 배팅가능금액 :" + canbetmoney + "원" + " 내 돈 : " + moneyUser + " 컴퓨터 돈 : " + moneyComputer, "숫자로만 입력하세요")))
let betmoney;
if (inspiretype > 0 || inspiretype < 20000){
betmoney = inspiretype;
}
else {
alert ("잘못 입력하셨습니다. 다음 라운드부터는 올바른 숫자로만 입력해주세요.")
continue;
}
//구경꾼 확률 : 10프로
let freemoney = Math.random()
if (freemoney <= 0.1){
moneyUser = moneyUser + betmoney;
alert("옆에서 지켜보던 구경꾼에게 팁을 받았습니다.")
}
// 내가가진돈 보다 더 많이 배팅한 경우, 최대배팅금액보다 많이 배팅한 경우
if (betmoney > moneyUser){
alert("컴퓨터가 당신이 돈이 없다는걸 눈치챘습니다. 다음 라운드에 가지고 있는 금액안에서 배팅해주세요.");
continue;
}
else if (betmoney > canbetmoney){
alert("욕심이 그득한 당신을 컴퓨터가 째려봅니다. 다음 라운드에 최대 배팅금액 안에서 배팅해주세요.");
continue;
}
const userPick = prompt("가위, 바위, 보 중 하나를 내세요");
const computerPick = Math.floor(Math.random()*3);
if (computerPick == 0){
console.log("컴퓨터는 가위를 냈습니다.");
switch (userPick) {
case "가위":
result = "draw"
break;
case "바위":
result = "win"
break;
case "보" :
result = "lose"
break;
default:
result = "error"
break;
}
}
else if (computerPick == 1){
console.log("컴퓨터는 바위를 냈습니다.");
switch (userPick) {
case "가위":
result = "lose"
break;
case "바위":
result = "draw"
break;
case "보" :
result = "win"
break;
default:
result = "error"
break;
}
}
else if (computerPick == 2){
console.log("컴퓨터는 보를 냈습니다.")
switch (userPick) {
case "가위":
result = "win"
break;
case "바위":
result = "lose"
break;
case "보" :
result = "draw"
break;
default:
result = "error"
break;
}
}
if (result == "win"){
alert("결과 : 승리, 남은 금액 : " + restmoneyUser(moneyUser,betmoney));
console.log("결과 : 승리, 남은 금액 : " + restmoneyUser(moneyUser,betmoney));
}
else if(result == "lose"){
alert("결과 : 패배, 남은 금액 : " + restmoneyUser(moneyUser,betmoney));
console.log("결과 : 패배, 남은 금액 : " + restmoneyUser(moneyUser,betmoney));
}
else if (result == "draw"){
alert("결과 : 무승부, 남은 금액 : " + restmoneyUser(moneyUser,betmoney));
console.log("결과 : 무승부, 남은 금액 : " + restmoneyUser(moneyUser,betmoney));
}
else {
alert("결과 : 실격패, 남은 금액 : " + restmoneyUser(moneyUser,betmoney));
console.log("결과 : 실격패, 남은 금액 : " + restmoneyUser(moneyUser,betmoney));
}
moneyUser = restmoneyUser(moneyUser,betmoney);
moneyComputer = restmoneyComputer(moneyComputer,betmoney);
if (moneyUser <= 0){
alert("파산하셨습니다. 다시 도전하세요");
break;
}
else if (moneyComputer <= 0){
alert("컴퓨터를 파산시켰습니다. 축하드립니다.");
break;
}
}
alert("게임이 끝났습니다. 다음에 또 오세요");
3. 과정
처음 가위바위바위보에 result 라는 변수를 추가하여 이겼을때, 졌을때, 비겼을때, 다른것을 냈을때 4가지 경우로 나누었다.
while문을 이용하여 10라운드를 돌게끔 만들었다.
if문을 이용하여 result의 값에 따라 배팅금액을 이용하여 유저의 돈이 계산되게 function을 만들었다.
구경꾼은 10프로의 확률로 나타나게 만들었다.
4. 디버깅
오류가 나는곳은 너무 많았다.
1. 배팅머니를 숫자로만 입력하게 했는데 숫자가 아니라 문자를 입력할시 나타나는 오류
if (inspiretype > 0 || inspiretype < 20000){
betmoney = inspiretype;
}
else {
alert ("잘못 입력하셨습니다. 다음 라운드부터는 올바른 숫자로만 입력해주세요.")
continue;
}
배팅금액의 범위를 정하여 변수로 할당했다.
그 범위의 값이 아닌경우 오류 문자가 나타나게 한후 continue를 통해 while문을 스킵하고 다음 loop가 시작되게 했다.
2. 가위,바위,보가 아닌 다른것을 냈을때 (초기 가위바위보 버전에서 해결함)
if (computerPick == 0){
console.log("컴퓨터는 가위를 냈습니다.");
switch (userPick) {
case "가위":
result = "draw"
break;
case "바위":
result = "win"
break;
case "보" :
result = "lose"
break;
default:
result = "error"
break;
}
}
switch문 안에 default 값을 설정하여 해결했다.
3. 유저가 가진돈보다 많은 돈을 배팅한 경우, 배팅한 후 져서 내야할 돈이 가지고 있는 돈보다 많은 경우 (반대의 경우도 마찬가지)
// 유저 이겼을때 유저 돈
function restmoneyUser (a,b){
if (result == "win"){
return a = a + b*2;
}
else if (result == "lose"){
return a = a - b*2;
}
else {
return a = a - b;
}
}
// 유저 이겼을때 컴퓨터 돈
function restmoneyComputer (a,b){
if (result == "win"){
return a = a - b*2;
}
else if (result == "lose"){
return a = a + b*2;
}
else{
return a = a;
}
}
// 최대 배팅 가능 금액
function canbetmoneycalculator (a,b){
if (2*a< b){
return a;
}
if (2*a>=b){
return b/2;
}
}
canbetmoney = canbetmoneycalculator(moneyUser,moneyComputer)
if (betmoney > moneyUser){
alert("컴퓨터가 당신이 돈이 없다는걸 눈치챘습니다. 다음 라운드에 가지고 있는 금액안에서 배팅해주세요.");
continue;
}
else if (betmoney > canbetmoney){
alert("욕심이 그득한 당신을 컴퓨터가 째려봅니다. 다음 라운드에 최대 배팅금액 안에서 배팅해주세요.");
continue;
}
유저돈, 컴퓨터 돈을 설정했다.
최대 배팅할수 있는 금액을 함수로 설정했다.
if문을 작성하여 가진 돈보다 많이 배팅한 경우, 최대배팅금액을 설정하였다.
4. 유저 돈, 컴퓨터 돈이 모두 소진된 경우
if (moneyUser <= 0){
alert("파산하셨습니다. 다시 도전하세요");
break;
}
else if (moneyComputer <= 0){
alert("컴퓨터를 파산시켰습니다. 축하드립니다.");
break;
}
if 문을 넣고 break를 이용하여 while문을 종료시켰다.
'개발 > html, css, js' 카테고리의 다른 글
[JavaScript] 배열 (0) | 2022.05.25 |
---|---|
[JavaScript] 최솟값, 제곱반환 함수 만들기 (0) | 2022.05.25 |
[JavaScript] 반복문 (0) | 2022.05.25 |
[JavaScript] 지역변수, 전역변수 (0) | 2022.05.25 |
[JavaScript] 컴퓨터랑 가위바위보 만들기 (0) | 2022.05.23 |