Project_xxx

[Project_] JSROUGE - 3

wakelight23 2024. 11. 13. 21:32

JavaScript로 roguelike 장르의 게임 만들기 - 3

● 포커 게임을 만들고 족보가 필요한데 어떻게 표현해야 할까

→ 족보를 표현하는데는 다양한 방법이 있지만 '객체 리터럴'을 사용했다

 

우선 객체란?

// 객체 기본적인 형태
const obj = {
	name : 'Lee',	// key:value
	age : 21	// key:value
};

 - 'name', 'age' = 프로퍼티(property)

 - obj 라는 객체 안에 있는 왼쪽 = key, 오른쪽 = value

 

// 객체에 함수가 존재할 경우
const obj2 = {
	num : 5,		// 여기는 Property
    decrese : function () {	// 함수일 경우에는 Method
    	this.num--;
    }
};

 - 프로퍼티(property) : 객체의 상태를 나타내는 값

 - 메서드(method) : 프로퍼티를 참조하고 조작할 수 있는 조작

- 참고 사이트 ▼

 

  객체 리터럴 (Object literal)

- literal : 사람이 이해할 수 있는 문자나 약속된 기호를 사용해 값을 생성하는 표기법

const rankings = [
    {
      name: '로얄 스트레이트 플러시',
      description: '같은 무늬의 A, K, Q, J, 10',
      example: [
        { suit: '♠', value: '10' },
        { suit: '♠', value: 'J' },
        { suit: '♠', value: 'Q' },
        { suit: '♠', value: 'K' },
        { suit: '♠', value: 'A' },
      ],
      multiplier: 16.0,
    }, ...

 - 객체 리터럴을 사용해서 포커 족보를 표현

 - name - 포커 패 명칭

 - description - 상세설명

 - example - 포커를 표현하는데 시각적으로 도움을 주는 배열

 - multiplier - 포커 패에 따른 곱 계산

 

// rankings에 저장한 객체 출력
// 여러 개를 출력해야 함으로 forEach 사용
rankings.forEach((ranking) => {
    console.log(chalk.cyan(`${ranking.name} (x${ranking.multiplier})`));
    console.log(chalk.white(ranking.description));
    console.log(displayHand(ranking.example));
    console.log();
  });

 

- 결과물  

name, description, example 순으로 나오는 걸 볼 수 있다

 

※ 포커 그림을 텍스트로 표현한 코드는 따로 있음.