수~금 : 팀과제 (게임 고도화 시키기)
계획표
gitHub -> 사용
-> repository 만들어서 clone -> branch
9시~13시: 알고리즘
14시~18시: 팀플
19시~20시 : 팀회의(수정사항 말하거나 주석달기)
20시~21시: 개인 공부
--------------------------------------------------
스토리
용감한 모험가 여러분, 마법의 세계 에테리아에 오신 것을 환영합니다!
전례 없는 아름다움과 위험한 도전의 땅이 여러분을 기다리고 있습니다.
백성들의 마지막 희망인 여러분은 도전에 맞서 왕국의 존재 자체를 위협하는 어둠의 세력으로부터
왕국을 지켜야 합니다.
환상적인 생물, 고대 유물, 숨겨진 비밀이 가득한 울창한 숲, 신비로운 동굴, 저주받은 늪을
통과하는 잊을 수 없는 여정을 시작하세요. 턴제 전투에서 위험한 적과 맞서 싸우세요.
용감한 모험가여, 에테리아의 운명은 여러분의 손에 달려 있습니다.
빛이 여러분의 장대한 여정을 인도하길 바랍니다. 여정을 시작하세요!
-------------------------------------------------
함수 컨벤션
내부 변수는 내부 메서드에서만 접근
내부 변수 protected '_'붙여주기
기능
-------------------------------------------------
플레이어 생성 3명 (구민정, 장소은, 최준영)
*상위클래스 : player
-> 회피력(random 함수),
-> attack 함수의 return값 attack_info(공격 성공 T/F ->회피 여부 출력, damage)
ex)
class player:
def attack:
return attack_info
하위 클래스: 직업 (도적, 전사, 마법사)
-> 클래스 나누기 (thief, knight, magician)
-직업 별 특수 능력 (스킬이름 다르게 설정, 도적dex, 마법사magic_power, 전사power)
-1:n으로 전투 (랜덤)
keyword argument 사용 (입력받은 만큼 해준다)
-보상(경험치, 골드)
-레벨업(체력 회복)
------------------------------------------------
*몬스터는 정해두기 (rank를 2) (우소라)
dictionary 사용하기/ class상속 (몬스터 세마리)
level-up에 따라서 몬스터 다르게?
몬스터 한마리 죽일 때: (층 세개, 1층에 제일 쉬운 몬스터 8중 n, 2충에 5마리중 n, 3층에 보스몹)
rank 1
경험치,골드
rank 2
----------------------------------------------
전투구현 1명 (김경수)
--> 파트 나누고 함수를 정하기
- 알고리즘 세션 강의를 들었다. 튜터님께서 알고리즘 공부의 중요성을 알려주셨다. 매일 아침에 한 두 문제씩 푸는 습관을 들이는 것이 목표
- 알고리즘의 기초지식에 대해 글을 작성했다.
Today I Learned
1) Python에서의 캡슐화
객체지향 프로그래밍에서는 캡슐화를 하여 클래스 내부메소드나 변수에 접근할 수 있는가를 결정하는 3가지 권한이 있음
- Public : 외부에서 클래스 내부의 메소드나 변수에 접근과 변경이 가능
- Protected : 상속관계일 때 접근이 가능
- Private : 해당 클래스에서만 접근 가능 -> 메소드 오버라이딩 불가
=> Java나 C++에서는 접근 권한이 강제적인 반면, Python은 암묵적인 규칙정도로 권장하고 있다.
#<Public>
class PublicUser:
def __init__(self, name):
self.name = name
public_user = PublicUser('Soeun')
print (public_user.name) # Soeun
#<Protected> '_', 언더바 한 개를 붙여주면 Protected 메소드, 속성으로 사용
class PublicUser:
def __init__(self, name):
self._name = name
public_user = PublicUser('Soeun')
print (public_user._name) # Soeun
#<Private> '__', 언더바 두 개를 붙여주면 Privated 메소드, 속성
class PublicUser:
def __init__(self, name):
self.__name = name
public_user = PublicUser('Soeun')
print (public_user.__name) # Soeun
2)
문제
d = {딕셔너리 값}
h = sorted(d.items(), key=lambda x: x[1], reverse=True) 의 문장에 대해 고민했다.
해결 : 기술매니저님의 도움
1) 단순히 이 함수가 어떤 식으로 해석하는 지가 아닌 함수를 파악할 때 어떤 input, output이 있는가? 를 살펴봐야한다.
2) 먼저 sorted()안에 3개의 매개변수를 받아서 h라는 변수에 리턴 값을 할당하였는데, 그렇다면 이 sorted함수는 어떤 매개변수를 받고, 어떤 결과를 출력하는 지를 알아본다.
3) 1번 째 매개변수인 items()도 함수. -> print(d.items())로 확인해보니, iterable 자료형을 반환함을 알 수 있다.
4) lambda()도 함수 -> lambda x: x[1]에서 input이 x, output이 x[1]을 나타냄을 알 수 있다.
5) sorted()함수에서 key 매개변수를 받는다. key 함수는 정렬 기준이 될 함수를 지정할 수 있음
-> 여기서는 x[1]의 값이 key가 되어 각 요소 정렬에 대한 기준 값이 되는 것
6) 마지막 매개변수인 reverse=True는 Boolean 값을 반환함
+) vscode에서 정의된 함수 내용으로도 확인가능하다. sorted()함수를 Ctrl+click하면 이 함수가 정의되어 있는 파일이 열리는데,
def sorted(__iterable: Iterable[_T], *, key: Callable[[_T], SupportsRichComparison], reverse: bool = False) -> list[_T]: ...
def sorted (iterable 객체, key : Callable(호출가능한, 곧 함수를 의미), reverse=T/F(bool) 라고 적힌 글을 볼 수가 있다.
내가 처음 보는 코드가 생겼을 때 어떤 식으로 접근을 해야하는 지, 함수를 파악할 때 어떤 인자를 받는지, input과 output은 어떤 값을 넣고, 도출하는 지 알 수 있었다.
'내일배움캠프 > 내일배움캠프 TIL' 카테고리의 다른 글
내일배움캠프 AI 5기 TIL 15일차 (0) | 2023.03.31 |
---|---|
내일배움캠프 AI 5기 TIL 14일차 (2) | 2023.03.30 |
내일배움캠프 AI 5기 TIL 12일차 (4) | 2023.03.28 |
내일배움캠프 AI 5기 TIL 11일차 (2) | 2023.03.27 |
내일배움캠프 AI 5기 TIL 10일차 (4) | 2023.03.24 |