2024/02 58
-
문제 설명 프로그래머스의 마스코트인 머쓱이는 최근 취미로 당구를 치기 시작했습니다. 머쓱이는 손 대신 날개를 사용해야 해서 당구를 잘 못 칩니다. 하지만 끈기가 강한 머쓱이는 열심히 노력해서 당구를 잘 치려고 당구 학원에 다니고 있습니다. 오늘도 당구 학원에 나온 머쓱이에게 당구 선생님이"원쿠션"(당구에서 공을 쳐서 벽에 맞히는 걸 쿠션이라고 부르고, 벽에 한 번 맞힌 후 공에 맞히면 원쿠션이라고 부릅니다) 연습을 하라면서 당구공의 위치가 담긴 리스트를 건네줬습니다. 리스트에는 머쓱이가 맞춰야 하는 공들의 위치가 담겨있습니다. 머쓱이는 리스트에 담긴 각 위치에 순서대로 공을 놓아가며 "원쿠션" 연습을 하면 됩니다. 이때, 머쓱이는 항상 같은 위치에 공을 놓고 쳐서 리스트에 담긴 위치에 놓인 공을 맞춥니다..
-
9.5 다중 상속 다중 상속은 객체지향 프로그래밍에서 다소 꺼려지는 부분이다. 다중 상속은 복잡하기만 하고 불필요할 수도 있다. 9.5.1 복수 클래스로부터의 상속 문법적으로는 여러 클래스를 동시에 부모로 두는 것이 그리 복잡하지 않다. 다음처럼 베이스 클래스의 이름을 나열하기만 하면 된다. class Baz : pulbic Foo, pulbic Bar { // 기타 정의... }; 이렇게 부모 이름을 나열함으로써 Baz로부터 생성된 객체는 다음과 같은 특징을 가지게 된다. Baz객체는 Foo와 Bar의 모든 public멤버와 메서드를 지원한다. Baz객체는 메서드 구현부에서 Foo와 Bar의 protected멤버와 메서드에 접근할 수 있다. Baz객체는 Foo또는 Bar로 업케스팅 될 수 있다. 새로운..
-
마법 스킬에 대한 위젯 인터페이스를 구현해보자. WB_SlotMaster 우선, 위젯을 저장할 폴더를 생성하고, 위젯을 관리할 위젯 마스터를 생성한다. WB_SlotMaster가 WB_Slot을 가지고, 플레이어에게 표시해준다. WB_Slot Slot디자인은 위와같다. SizeBox->Border->Overlay->BG_Image, Image 로, SizeBox로 위젯 자체의 위치를 조정한다. Border로 Overlay된 Image의 Padding의 여유분 위치를 색으로 표현한다. 이부분은 선택시 빨간색, 선택 해제시 흰색으로 표기되게 할 것 이다. BG_Image는 기본 이미지의 백그라운드로, 검정을 베이스로 선택 디자인한다. Item_Image는, 아이템의 이미지를 표현함으로, 아이템 자체의 RGB..
-
9.4 다형성을 위한 상속 지금까지 파생 클래스와 그 부모간의 관계에 대해 배웠다. 이제는 가장 강력한 시나리오인 다형성 구현에 상속을 어떻게 이용하는지 알아볼 차례다. 전에 사용했던 다형성의 활용은, 공통의 부모를 가지는 객체를 부모타입의 객체가 필요한 자리에 마음대로 바꿔 넣어 사용한 예 이다. 9.4.1 스프레드 시트 다시보기 7장과 8장에서는 객체지향 프로그래밍을 설명하기 위해 스프레드 시트 예제를 활용했다. SpreadSheetCell은 데이터의 한 항목을 나타내고, 각 항목의 값은 double또는 string타입 이다. 다음은 SpreadSheetCell클래스의 정의로, 셀의 값을 세팅할 때 double이나 string중 어떤 값이든 이용할 수 있다. 단, 현재 셀의 데이터 값을 읽어올 때는 ..
-
문제 설명 시침, 분침, 초침이 있는 아날로그시계가 있습니다. 시계의 시침은 12시간마다, 분침은 60분마다, 초침은 60초마다 시계를 한 바퀴 돕니다. 따라서 시침, 분침, 초침이 움직이는 속도는 일정하며 각각 다릅니다. 이 시계에는 초침이 시침/분침과 겹칠 때마다 알람이 울리는 기능이 있습니다. 당신은 특정 시간 동안 알람이 울린 횟수를 알고 싶습니다. 다음은 0시 5분 30초부터 0시 7분 0초까지 알람이 울린 횟수를 세는 예시입니다. 가장 짧은 바늘이 시침, 중간 길이인 바늘이 분침, 가장 긴 바늘이 초침입니다. 알람이 울리는 횟수를 세기 시작한 시각은 0시 5분 30초입니다. 이후 0시 6분 0초까지 초침과 시침/분침이 겹치는 일은 없습니다. 약 0시 6분 0.501초에 초침과 시침이 겹칩니다...
-
마법을 사용하는 객체의 스왑을 구현한다. Wizard 위자드에서 스왑을 구현하고, 마법에서 종류를 Q나 E 또는 지정된 키 값으로 스왑시킬 수 있게 한다. 마법은, 스왑전에 Visival을 꺼주고, 스왑후에 손에 들게 되었을 때, Visival을 켜주게 된다. 즉, 변수목록에 Skill_list로 데이터를 삽입하고, 현재 사용하는 중인 Skill은, Skill에 들어가서 사용된다. 객체의 Switch_To_List는 int값으로, Skill_list의 size에 대응되어 현제 사용중인 Skill의 위치값을 나타낸다. BP_Player BP_Player에서 사용되는 Swap 동작이다. LeftSwap과 RightSwap을 호출하며, 해당 함수는 현재 장착중인 Weapon에 대응된다. 현재 Weapon을 들..