본문 바로가기
개발/카카오톡 봇

카카오톡 봇 만들기 - 9 - 숫자 야구게임

by 문둘기 2020. 4. 21.

오랜만에 카카오톡봇 글이네요

const scriptName = "야구게임";

let answer = [];
let is_start = 0; 
let count = 0;
function response(room,msg,sender,isGroupChat,replier,imageDB,packageName) {

  if (msg.startsWith("숫자야구시작") && is_start === 0) {
    answer = setNumber();
    replier.reply("숫자야구게임을 시작합니다.");
    is_start = 1;
    count = 10;
  }

  if (is_start === 1) {
    if (!isNaN(Number(msg)) && msg.length == 4) {
      let result = compare(msg);
      count -= 1;

      if (result[0] == 4) {
        replier.reply(sender + "님, 정답입니다!\n게임을 종료합니다.");
        is_start = 0;
        count = 10;
      } else if (result[0] == 0 && result[1] == 0) {
        replier.reply("아웃!\n\n남은기회 " + count + "번");
      } else {
        replier.reply(result[0] +" 스트라이크\n" +result[1] +" 볼\n\n남은기회 " +count +"번");
      }
    }
    if (count == 0) {
      replier.reply("기회를 모두 사용했습니다\n패배! \n정답 : " +String(answer[0]) +String(answer[1]) +String(answer[2]) +String(answer[3]));
      is_start = 0;
      count = 10;
    }
    if (msg == "/포기") {
      replier.reply("정답 : " +String(answer[0]) +String(answer[1]) +String(answer[2]) +String(answer[3]));
      is_start = 0;
      count = 10;
    }
  }
}

function setNumber() {
  let answer = [];
  let check = true;

  while (answer.length < 4) {
    let randomNumber = Math.floor(Math.random() * 10); 
    for (let data of answer) {
      if (data == randomNumber) {
        check = false;
        break;
      }
    }
    if (check) {
      answer.push(randomNumber);
    }
    check = true;
  }
  return answer;
}

function compare(msg) {
  let SB = [0, 0];
  for (let i = 0; i < 4; i++) {
    for (let j = 0; j < 4; j++) {
      if (answer[i] == msg[j]) {
        if (i == j) {
          SB[0] += 1;
        } else {
          SB[1] += 1;
        }
      }
    }
  }
  return SB;
}

선코드공개

업무시간 지난후 회사에 남아 잠깐 시간투자해서 만든 소스입니다

생각없이 막짜서 코드퀄리티가 많이 낮습니다 그야말로 되긴하는 코드 입니다 

나중에 적절한 코드로 수정할수도있긴한데 아마 안할거같습니다 

 

 

하다보니 제 JS 실력의 한계와 알고리즘의 중요성을 느꼈습니다
어쨌든 일단 작동은 하니까 그냥 쓰실분들은 쓰시고

코드수준 도저히 못봐주겠다싶은분들은 고쳐서 쓰시면됩니다

 
 
 
 
 
https://k.kakaocdn.net/dn/X8Tuz/btqDzj98SjH/7V751AFNcEyIwxhDHmZuR1/img.png

봇은 기존시리즈에서 쓰던앱이 아닌 "메신저봇" 이라는 앱을 사용했습니다 자유도가 훨씬높더라구요

이미 사용하시던분은 야구게임 이라는 봇하나만들고 전체다 지우고 소스코드 복붙하면됩니다

 

 

https://k.kakaocdn.net/dn/dVKCMm/btqDzk87l3T/pWOkJeT52KN65AMtTPwg0k/img.png

작동은 이런식으로하고

https://k.kakaocdn.net/dn/bnNCW6/btqDDvOAyuw/foQPnnAbRswDhGzekKVGh0/img.png

/포기 하면 답알려줍니다

 

너무 쉬우면 재미없으니까 10번이내로 맞춰야 승리하게 설정했습니다