일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 시나공
- 1과목
- CJ UNIT
- 파이썬
- python
- 정보처리산업기사
- 문제풀이
- programmers
- C++
- 공부일지
- 백준
- BFS
- 백준 알고리즘
- 프로그래머스
- 자바
- SQL
- 알고리즘
- 회고
- MYSQL
- 소프티어
- 데이터베이스
- softeer
- 코틀린
- 백준알고리즘
- 코딩교육봉사
- kotlin
- 스프링
- SW봉사
- 코딩봉사
- java
- Today
- Total
JIE0025
Java Script 객체지향 텍스트RPG 실습과 기능 추가 본문
오늘은 JavaScript 객체지향 실습을 하기로 했다
실습 소스코드 게시글 : https://www.zerocho.com/category/JavaScript/post/573d876380f0b9102dc370b8
객체지향을 실습해볼 수 있으며, 추가 기능을 통해 JavaScript의 객체지향 프로그래밍을 연습 해 볼 수 있다.
먼저 게시 되어 있는 소스를 직접 작성해보면서 작성자분의 빌드 화면이 나오도록 만들었다.
<기존 : 소스코드>
< 기존 : Build 화면 >
이름을 입력하면 결과가 나온다.
그럼 이제부터 기능추가를 해보겠다.
----------------------------------------------------------------------------------------------------------------
< 추가할 기능 목록 >
1. Monster의 아이템 소유 (랜덤하게)
2. 아이템 소유한 Monster를 죽였을 때 Hero가 아이템 Get!
3. Hero가 현재 소유한 아이템의 개수 표시. (console)
4. 아이템 목록:
- potion : hp 30
- cake : hp 50
5. 공격하는 몬스터의 att가 내 체력보다 클 경우 죽게 되므로 소유한 아이템 먹기.
< 기능 추가한 전체 코드 >
- Hero객체에 itemBox 라는 Hero가 얻는 Item들을 담을 객체를 만들어주었다.
- Hero가 Monster를 공격했을 때 (attack), 몬스터가 죽게 되면, 아이템 소유 여부를 확인하여 getItem하게 하였다.
- Hero가 Monster에게 공격 당했을 때 (attacked), 몬스터의 공격력보다 나의 체력이 조금 남았을 경우엔 소유한 아이템을 사용한다. potion보다 cake의 hp가 더 크기 때문에 cake의 개수가 더 많을 경우나 같을 경우엔 cake을 소비하는 식으로 작성해보았다.
- Hero가 Item을 얻을 때와 Item을 사용할 때를 각각 함수를 만들었다.
두 함수 모두 item을 매개변수로 받는데 이는 몬스터가 소유했었던 item object이며 item.type으로 구분한다.
- getItem 에서 numOfPotion과 numOfCake를 1씩 올려주고, item이 한개도 없었을 경우엔 할당해준다.
- useItem에선 numOfPotion과 numOfCake를 1씩 감소시키고, 감소시킨 후에 0개가 되면 다시 기본Object로 할당한다.
또, Hero의 hp가 item이 소유한 hp 만큼 증가되게 하였다.
- makeMonster에서 랜덤으로 생성한 몬스터와 아이템 소유 여부가 매개변수로 들어왔다.
hasItem == true인 경우 아이템생성자를 통해 아이템을 만들어주고 this로서 객체 고유의 것으로 만들었다.
- Item도 type과 hp라는 정보를 갖는 객체로 만들어 주었다.
- Item은 몬스터가 50:50의 확률로 가질 수도 있고 가지지 못할 수도 있다.
makeMonster (몬스터 생성)에서 hasItem이라는 변수를 이용해 생성되는 몬스터의 아이템 소유 여부를 넣어주었다.
- makeItem에서는 두가지 타입의 아이템을 생성하여 역시 랜덤한 Item을 리턴해주었다. 아이템 객체의 매개변수가 type과 hp 이므로 배열의 첫번째 index와 두번째 index로 구분하여 생성하였다.
-itemBox 는 Hero가 소유한 아이템상자이며, potion, cake를 기본 객체로 초기화 하였다. Hero가 getItem하게 될 경우 potion, cake에 각 Item object가 할당된다.
numOfPotion과 numOfCake는 소유한 아이템 개수이다.
- 메인과 같은부분, logMessage 에 <br>을 추가함으로서 가독성을 높였다.
< 기능 추가 : Build 화면 >
20-01-23, 20-01-28 (2일 진행)
'기타 학습 > Language' 카테고리의 다른 글
[BOJ - 자료구조] 1927 번 : 최소 힙 ( C++) (0) | 2022.05.06 |
---|---|
[C++] string::find, string::npos 단어 존재 여부 확인 (1) | 2022.05.05 |
[Python] 파이참에서 API 사용하기 : Twilio API를 이용한 문자 메시지 전송 실습 (0) | 2020.04.17 |
[Assembly] 함수 호출(call)과 메모리 반환(return) 개념 (0) | 2020.03.19 |
[Assembly] 기초 어셈블리명령어와 레지스터, Pointer Register, Push, Pop, Call, Retn, Mov (3) | 2020.03.18 |