패스트캠퍼스 메가바이트스쿨 Day 15 (3주차 금요일 - Javascript 예제 풀기 2)

ctaaag·2022년 5월 1일
0
post-thumbnail

Today Topic : Javascript 예제풀기 2


🗝 Keywords

✅ 숫자야구

✅ 1등 뽑기



1. 숫자야구

// 컴퓨터 무작위 수 출력
let start = function () {
  nums1 = Math.floor(Math.random()*10);
  nums2 = Math.floor(Math.random()*10);
  nums3 = Math.floor(Math.random()*10);
  computer=[]
  computer.push(nums1)
  computer.push(nums2)
  computer.push(nums3)
  return computer
}

computerNum = start()
console.log('컴퓨터값:',computerNum)


// 유저 

function usernum() {
  let user = '512'
  let userNum = new Array(Number(user.charAt(0)),Number(user.charAt(1)),Number(user.charAt(2)))
  let strike=0
  let ball=0
  let out=0
  console.log('사용자값',userNum); 

  //  첫 번째 숫자 비교
  let usernum1 = function(){
    if (userNum === computerNum) {
      console.log('정답입니다')
      return 
    } else if (userNum[0] === computerNum[0]) {
      console.log('1스트라이크:',++strike)
    } else if (userNum[0] === computerNum[1] || userNum[0] === computerNum[2]) {
      console.log('1볼:',++ball)
    } else {
      return ++out
    }
  }
  usernum1()

  // 두 번째 숫자 비교

  let usernum2 = function(){
    if (userNum === computerNum) {
      console.log('정답입니다')
      return 
    } else if (userNum[1] === computerNum[1]) {
      console.log('2스트라이크:',++strike)
      return ++strike
    } else if (userNum[1] === computerNum[0] || userNum[1] === computerNum[2]) {
      console.log('2볼:',++ball)
      return ++ball
    } else {
      return ++out
    }
  }
  usernum2()

    // 세 번째 숫자 비교

    let usernum3 = function(){
      if (userNum === computerNum) {
        console.log('정답입니다')
        return 
      } else if (userNum[2] === computerNum[2]) {
        console.log('3스트라이크:',++strike)
        return ++strike
      } else if (userNum[2] === computerNum[1] || userNum[2] === computerNum[0]) {
        console.log('3볼:',++ball)
        return ++ball
      } else {
        return ++out
      }
    }
    usernum3()

    let result = `${strike}스트라이크 ${ball}${out}아웃입니다`
    console.log('result입니다:',result)
    return result
}

usernum()

더 공부할 것!

  • 각각의 숫자를 비교할 때 조건문을 줄일 수 있는 방법 있는지 확인해볼 것
  • 반복문 안에 입력값을 넣어서 계속 입력받으면서 비교하기
  • 숫자초기화 개념 이해하기


2. 1등 뽑기

// text 입력 및 user 정보 배열 입력
let text1 = prompt("student1의 정보를 '이름 국어 과학'으로 입력하세요'","");
let text2 = prompt("student2의 정보를 '이름 국어 과학'으로 입력하세요''","");
let text3 = prompt("student3의 정보를 '이름 국어 과학'으로 입력하세요''","");
let text4 = prompt("student4의 정보를 '이름 국어 과학'으로 입력하세요''","");
let text5 = prompt("student5의 정보를 '이름 국어 과학'으로 입력하세요''","");

let input1 = text1.split(' ');
let input2 = text2.split(' ');
let input3 = text3.split(' ');
let input4 = text4.split(' ');
let input5 = text5.split(' ');


// user 정보 클래스 생성 및 국어,과학,총합 점수의 개별 배열 호출 생성
class People {
  constructor(name,korean,science) {
    this.name=name
    this.korean=korean
    this.science=science
  }
  scoreKorean(){
    return Number(this.korean);
  }
  scoreScience(){
    return Number(this.science);
  }
  scoreTotal(){
    return Number(this.korean)+Number(this.science);
  }
}

let user1 = new People(input1[0],input1[1],input1[2]);
let user2 = new People(input2[0],input2[1],input2[2]);
let user3 = new People(input3[0],input3[1],input3[2]);
let user4 = new People(input4[0],input4[1],input4[2]);
let user5 = new People(input5[0],input5[1],input5[2]);


// 국어 점수 합 클래스
class totalkorean {
  constructor(k1,k2,k3,k4,k5) {
    this.k1=k1
    this.k2=k2
    this.k3=k3
    this.k4=k4
    this.k5=k5
  }
}

// 국어 1등 뽑기

var koreans = new totalkorean(Number(input1[1]),Number(input2[1]),Number(input3[1]),Number(input4[1]),Number(input5[1]));
var koreaValues = Object.values(koreans);
console.log('2',koreaValues)
var koreaListup = koreaValues.sort((a,b)=> a-b);
console.log('3',koreaListup);
var koreaBest = koreaListup[4]

function showUpKoreanBest(){
    if (koreaBest == user1.scoreKorean()) {
    alert(`${user1.name}${user1.scoreKorean()}으로 국어 1등입니다`);
  } else if (koreaBest == user2.scoreKorean()) {
    alert(`${user2.name}${user2.scoreKorean()}으로 국어 1등입니다`);
  } else if (koreaBest == user3.scoreKorean()) {
    alert(`${user3.name}${user3.scoreKorean()}으로 국어 1등입니다`);
  } else if (koreaBest == user4.scoreKorean()) {
    alert(`${user4.name}${user4.scoreKorean()}으로 국어 1등입니다`);
  } else if (koreaBest == user5.scoreKorean()) {
    alert(`${user5.name}${user5.scoreKorean()}으로 국어 1등입니다`);
  } else {
    alert('다시입력');
  }
  return ; 
}

showUpKoreanBest()


// 과학 점수 합 클래스
class totalscience {
  constructor(s1,s2,s3,s4,s5) {
    this.s1=s1
    this.s2=s2
    this.s3=s3
    this.s4=s4
    this.s5=s5
  }
}

// 과학 1등 뽑기

var sciences = new totalscience(Number(input1[2]),Number(input2[2]),Number(input3[2]),Number(input4[2]),Number(input5[2]));
var scienceValues = Object.values(sciences);
console.log('2',scienceValues)
var scienceListup = scienceValues.sort((a,b)=> a-b);
console.log('3',koreaListup);
var scienceBest = scienceListup[4]

function showUpscienceBest(){
    if (scienceBest == user1.scoreScience()) {
    alert(`${user1.name}${user1.scoreScience()}으로 과학 1등입니다`)
  } else if (scienceBest == user2.scoreScience()) {
    alert(`${user2.name}${user2.scoreScience()}으로 과학 1등입니다`)
  } else if (scienceBest == user3.scoreScience()) {
    alert(`${user3.name}${user3.scoreScience()}으로 과학 1등입니다`)
  } else if (scienceBest == user4.scoreScience()) {
    alert(`${user4.name}${user4.scoreScience()}으로 과학 1등입니다`)
  } else if (scienceBest == user5.scoreScience()) {
    alert(`${user5.name}${user5.scoreScience()}으로 과학 1등입니다`)
  } else {
    alert('다시입력')
  }
  return ;
}

showUpscienceBest();


// 토탈 점수 합 클래스
class total {
  constructor(t1,t2,t3,t4,t5) {
    this.t1=t1
    this.t2=t2
    this.t3=t3
    this.t4=t4
    this.t5=t5
  }
}

// 토탈 1등 뽑기

var totals = new total((Number(input1[1])+Number(input1[2])),(Number(input2[1])+Number(input2[2])),(Number(input3[1])+Number(input3[2])),(Number(input4[1])+Number(input4[2])),(Number(input5[1])+Number(input5[2])));
var totalValues = Object.values(totals);
console.log('2',totalValues)
var totalListup = totalValues.sort((a,b)=> a-b);
console.log('3',totalListup);
var totalBest = totalListup[4]

function showUptotalBest(){
    if (totalBest == user1.scoreTotal()) {
    alert(`${user1.name}${user1.scoreTotal()}으로 과학 1등입니다`)
  } else if (totalBest == user2.scoreTotal()) {
    alert(`${user2.name}${user2.scoreTotal()}으로 과학 1등입니다`)
  } else if (totalBest == user3.scoreTotal()) {
    alert(`${user3.name}${user3.scoreTotal()}으로 과학 1등입니다`)
  } else if (totalBest == user4.scoreTotal()) {
    alert(`${user4.name}${user4.scoreTotal()}으로 과학 1등입니다`)
  } else if (totalBest == user5.scoreTotal()) {
    alert(`${user5.name}${user5.scoreTotal()}으로 과학 1등입니다`)
  } else {
    alert('다시입력')
  }
  return ;
}

showUptotalBest();

리팩토링

  • 클래스를 무조건 이용해서 코딩을 하려고 했었는데, 최선이였는지 고민해보기!
  • 각각 1등을 뽑는 if문 줄일 수 있는 방법 찾기!
profile
프로그래밍으로 지속가능한 세상을 꿈꾸며

0개의 댓글