본문 바로가기
JavaScript

[Javascript] 함수를 활용한 묵찌빠 게임 만들기

by 동복이 2023. 3. 14.

Javascript 함수

기본 구성 요소 중 하나로 실행할 코드들을 필요할 때마다 호출해서 사용할 수 있다.

반복 사용 되는 기능들을 함수로 작성하여 사용 할 수 있으며 코드를 여러번 쓸 필요 없이 함수를 가져다 쓰면 되기 때문에 코드가 간결 해지며 관리하기가 편하다.

 

javascript 함수 실행식

기본적인 함수 실행식은 다음과 같다.

 

# 함수 생성
function hi() {
  console.log("안녕하세요");
}

# 함수 호출
hi();

 

let temp = "전역변수";

function test() {
  console.log(temp); # temp는 전역 변수이기 때문에 temp의 값인 "전역변수" 가 출력된다.
}

test();

 

매개변수를 활용한 함수 사용

함수를 호출 할때 데이터를 받는 변수로 매개변수의 타입을 따로 명시하지 않아도 된다.

 

let num1 = 1;
let num2 = 2;
let num3 = 3;
function test1(a, b, c) { # 매개변수의 타입을 명시 하지 않아도 된다.
  console.log(a + b + c);
}

test1(num1, num2, num3); # 매개변수와 변수의 이름을 맞춰주지 않아도 된다.

  • 변수를 따로 작성하지 않고 함수 호출시 값을 직접 입력해 줄 수 있다.
function test2(a) {
  console.log(`${a}`); # 백틱을 활용해서 매개변수 출력 
}

test2("사과"); # 변수를 따로 만들지 않고 직접 값을 넘겨 줄 수 있다.
test2("나무");

  • return을 활용하여 값을 반환해 줄 수 있다.
function test3() {
  return "test3 반환됨"; # return 을 사용하여 값을 반환
  console.log("아아아아아아아아아"); # 함수는 return에서 끝내고 값을 반환하기 때문에 return 아래 코드는 실행 하지 않음
}
let num4 = test3();

console.log(num4);

 

함수를 사용한 구구단 만들기

function gugudan(num) {
  for (let i = 1; i < 10; i++) {
    console.log(`${num}단 ${num} x ${i} = ${num * i}`);
  }
}
gugudan(3);

 

함수를 사용한 묵찌빠 만들기

  • 묵찌빠 게임은 총 20판 가능 하며 가위바위보에서 이기면 묵찌빠를 진행하는 형식
  • 한판 할때마다 배팅 할 수 있으며 최소 금액은 2,000원이고 기본 소지금은 20,000원이다.
  • 가위바위보에서 무승부가 되면 다음 게임으로 넘어가게 된다.
  • 게임에서 사용자가 승리할 시 배팅 금액의 2배를 가져가게 되며 지게 되면 2배를 잃는다.
  • 소지금액을 전부 소모하거나 20판이 넘어가면 게임은 종료
// 묵찌빠 게임(함수)

let comArr = ["가위", "바위", "보", "묵", "찌", "빠"];
let com1 = comArr[parseInt(Math.random() * 3)];
let com2;
let user1 = "";
let user2 = "";

let pp = true;
let chk = true;

let lsptxt = "";
let userWin = 0;
let comWin = 0;
let smsm = 0;
let wintxt = "";
let cnt = true;

let userCnt = 0;
let comCnt = 0;
let maxCnt = 0;

let money = 0;
let maxmoney = 20000;

// 가위바위보 함수
function lsp(a, b) {
  if (`${a}` == `${b}`) {
    console.log(`${maxCnt + 1} 회차 사용자 : ${a}, 컴퓨터 : ${b} > 무승부 승`);
    smsm++;
  }

  if (a == "가위") {
    if (a == "가위" && b == "바위") {
      console.log(
        `${maxCnt + 1} 회차 사용자 : ${a}, 컴퓨터 : ${b} > 가위바위보 컴퓨터 승`
      );
      comWin++;
    } else if (a == "가위" && b == "보") {
      console.log(
        `${maxCnt + 1} 회차 사용자 : ${a}, 컴퓨터 : ${b} > 가위바위보 사용자 승`
      );
      userWin++;
    }
  }

  if (a == "바위") {
    if (a == "바위" && b == "가위") {
      console.log(
        `${maxCnt + 1} 회차 사용자 : ${a}, 컴퓨터 : ${b} > 가위바위보 사용자 승`
      );
      userWin++;
    } else if (a == "바위" && b == "보") {
      console.log(
        `${maxCnt + 1} 회차 사용자 : ${a}, 컴퓨터 : ${b} > 가위바위보 컴퓨터 승`
      );
      comWin++;
    }
  }

  if (a == "보") {
    if (a == "보" && b == "가위") {
      console.log(
        `${maxCnt + 1} 회차 사용자 : ${a}, 컴퓨터 : ${b} > 가위바위보 컴퓨터 승`
      );
      comWin++;
    } else if (a == "보" && b == "바위") {
      console.log(
        `${maxCnt + 1} 회차 사용자 : ${a}, 컴퓨터 : ${b} > 가위바위보 사용자 승`
      );
      userWin++;
    }
  }

  if (userWin > 0) {
    wintxt = `${
      maxCnt + 1
    } 회차 사용자 : ${a}, 컴퓨터 : ${b} > 가위바위보 사용자 승`;
  }
  if (comWin > 0) {
    wintxt = `${
      maxCnt + 1
    } 회차 사용자 : ${a}, 컴퓨터 : ${b} > 가위바위보 컴퓨터 승`;
  }
}

// 묵찌빠 함수
function mjb() {
  // 가위바위보에서 유저가 이겼을때
  if (user1 != com1) {
    while (cnt) {
      if (userWin == 1) {
        user2check();
        com2 = comArr[parseInt(Math.random() * 3 + 3)];

        if (`${user2}` == `${com2}`) {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 사용자 승`
          );
          userWin = 0;
          comWin = 0;

          userCnt++;
          maxmoney = maxmoney + money * 2;
          cnt = false;
        } else if (user2 == "묵" && com2 == "찌") {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 가위바위보 사용자 승리 다시 묵찌빠 입력`
          );
        } else if (user2 == "찌" && com2 == "빠") {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 가위바위보 사용자 승리 다시 묵찌빠 입력`
          );
        } else if (user2 == "빠" && com2 == "묵") {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 가위바위보 사용자 승리 다시 묵찌빠 입력`
          );
        } else if (user2 == "묵" && com2 == "빠") {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 가위바위보 컴퓨터 승리 공수전환 묵찌빠 입력`
          );
          uesrWin = 0;
          comWin++;
        } else if (user2 == "찌" && com2 == "묵") {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 가위바위보 컴퓨터 승리 공수전환 묵찌빠 입력`
          );
          uesrWin = 0;
          comWin++;
        } else if (user2 == "빠" && com2 == "찌") {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 가위바위보 컴퓨터 승리 공수전환 묵찌빠 입력`
          );
          uesrWin = 0;
          comWin++;
        }
      }

      // 가위바위보에서 컴퓨터가 이겼을떄
      if (comWin == 1) {
        user2check();
        com2 = comArr[parseInt(Math.random() * 3 + 3)];
        if (`${user2}` == `${com2}`) {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 컴퓨터 승`
          );
          comWin = 0;
          userWin = 0;

          comCnt++;
          maxmoney = maxmoney - money * 2;
          cnt = false;
        } else if (user2 == "묵" && com2 == "빠") {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 가위바위보 컴퓨터 승리 다시 묵찌빠 입력`
          );
        } else if (user2 == "찌" && com2 == "묵") {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 가위바위보 컴퓨터 승리 다시 묵찌빠 입력`
          );
        } else if (user2 == "빠" && com2 == "찌") {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 가위바위보 컴퓨터 승리 다시 묵찌빠 입력`
          );
        } else if (user2 == "묵" && com2 == "찌") {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 가위바위보 사용자 승리 공수전환 묵찌빠 입력`
          );
          comWin = 0;
          userWin++;
        } else if (user2 == "찌" && com2 == "묵") {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 가위바위보 사용자 승리 공수전환 묵찌빠 입력`
          );
          comWin = 0;
          userWin++;
        } else if (user2 == "빠" && com2 == "찌") {
          console.log(
            `${
              maxCnt + 1
            } 회차 사용자 : ${user2}, 컴퓨터 : ${com2} > 묵찌빠 가위바위보 사용자 승리 공수전환 묵찌빠 입력`
          );
          comWin = 0;
          userWin++;
        }
      }
    }
    cnt = true;
  }
}

function don() {
  money = parseInt(prompt(`배팅 금액 입력 최소 : 2000 최대 : ${maxmoney}`));

  if (money > `${maxmoney}` || money < 2000) {
    while (cnt) {
      if (money > `${maxmoney}`) {
        money = parseInt(
          prompt(
            `배팅 최대 금액은 ${maxmoney} 입니다.\n배팅 금액 입력 최소 : 2000 최대 : ${maxmoney}`
          )
        );
      } else if (money < 2000) {
        money = parseInt(
          prompt(
            `배팅 최소 금액은 2000 입니다.\n배팅 금액 입력 최소 : 2000 최대 : ${maxmoney}`
          )
        );
      } else if (money <= `${maxmoney}` && money >= 2000) {
        cnt = false;
      }
    }
  }
  cnt = true;
}

function endgame() {
  if (maxCnt >= 20) {
    pp = false;
  }
  if (maxmoney <= 0) {
    pp = false;
  }
}
function user1check() {
  user1 = prompt("가위 바위 보 입력 ");
  if (user1 !== "가위" && user1 !== "바위" && user1 !== "보") {
    while (chk) {
      user1 = prompt(`잘못입력하셧습니다.\n가위 바위 보 입력 `);
      if (user1 == "가위" || user1 == "바위" || user1 == "보") {
        chk = false;
      }
    }
  }
  chk = true;
}
function user2check() {
  user2 = prompt(`${wintxt}\n묵 찌 빠 입력`);

  if (user2 !== "묵" && user2 !== "찌" && user2 !== "빠") {
    while (chk) {
      user2 = prompt(`잘못입력하셧습니다.\n${wintxt}\n묵 찌 빠 입력`);
      if (user2 == "묵" || user1 == "찌" || user1 == "빠") {
        chk = false;
      }
    }
  }
  chk = true;
}

// 메인
while (pp) {
  don();

  user1check();

  lsp(user1, com1);

  mjb();

  maxCnt++;

  endgame();
}

console.log(
  `${maxCnt}번 진행 \n 무승부 : ${smsm}번 \n 사용자 승 : ${userCnt}번 \n 컴퓨터 승 : ${comCnt}번\n 남은 금액 : ${maxmoney}`
);
728x90