반응형

 

 

 

 

 

 

 

제작 기간

- 총 9일

 

 

 

게임 클래스 구성

 

 

 

GameManager

- 클래스 멤버는 Player, Monster, DataManager를 가지고 있다.

- Main 함수에서 GameManager의 객체를 생성한 뒤, 게임을 시작하게된다.

- 각 화면은 정적 클래스(Draw)에 화면을 그리는 함수를 정의해서 GameManager에서 호출하여 그린다.

 

 

 

DataManager

- Weapon, Player, Monster의 데이터 문자열, Monster 배열, Weapon 배열 벡터를 멤버로 가지고있다.

- 기본 데이터들(Weapon, Player, Monster)의 데이터를 가지고 있다.

- 저장하기, 불러오기 기능으로 데이터들을 파일로 입출력하는 기능을 가지고 있다.

 

 

 

Unit

- 추상 클래스

- Player와 Monster에 상속한다.

- 저장이 될 데이터 값들을 멤버로 두고 있다. (이름, 체력, 레벨, 경험치 등)

- 데미지를 주고받는 기능, 정보 보기 기능 등을 추상 함수로 가지고 있다.

 

 

 

Player

- Unit을 상속 받는다. (Unit의 추상 함수를 재정의해서 사용)

- Weapon을 포인터 멤버로 가지고 있다.

- 레벨 업, 스킬 기능을 가지고있다.

 

 

 

Monster

- Unit을 상속 받는다. (Unit의 추상 함수를 재정의해서 사용)

 

 

 

Weapon

- 추상 클래스

- 각 무기 클래스에 상속한다.

- Player와 DataManager에서 업캐스팅해서 사용한다.

- 무기 이름, 무기 데미지, 무기 값을 멤버로 가지고있다.

- 무기의 스킬, 무기 종류 확인 등을 추상 함수로 가지고 있다.

 

 

 

각 무기 클래스

- Weapon을 상속 받는다. (Weapon의 추상 함수를 재정의해서 사용)

 

 

 

Draw

- 게임 화면을 그리기 위한 함수를 정의해놓았다.

- 콘솔 좌표 이동, 게임 문자열 중앙 정렬로 그리는 등의 함수가 정의되어 있다.

 

 

 

저장되어있는 데이터 구조

- 기본 유저, 몬스터의 데이터, 유저의 플레이 데이터, 무기 데이터

 

 

 

 

 

반응형

'Game > Personal development' 카테고리의 다른 글

[WIN API] 서커스 찰리 게임  (0) 2022.02.05
[WIN API] 카드 맞추기 게임  (0) 2022.01.30
산성비 게임 제작 (C++)  (4) 2022.01.23
뱀 게임 제작 (C++)  (0) 2022.01.22
오목 게임 제작 (C++)  (0) 2022.01.21
반응형

 

 

 

 

 

 

 

제작 기간

- 총 2일

 

 

 

게임 클래스 구성

 

 

 

 

GameManager

- 클래스 멤버는 Snake를 가지고 있고, 나머지는 점수, 장애물 좌표 배열, 음식 좌표 배열을 멤버로 가지고 있다.

- 장애물, 음식의 좌표 배열은 게임을 할 때마다 새로 만들지 않고 풀링을 하여 객체를 재사용했다.

- 각 화면은 정적 클래스(Draw)를 정의하여 GameManager에서 호출하여 그린다.

 

 

 

Snake

- Snake의 몸체 좌표(List), 꼬리 좌표, 방향 정보, 이동 속도(시간)를 멤버로 가지고있다.

- Snake에서 키 입력을 받아서 방향을 바꾼다.

- 음식을 먹어 몸체가 길어질때마다 이동 기준 시간을 줄여 Snake의 이동 속도를 높인다.

- 방향 정보(enum)을 정의해서 반대방향으로 이동하지 못하게 예외처리를 한다.

 

 

 

Draw

- 게임 화면을 그리기 위한 함수를 정의해 놓았다.

- 콘솔 좌표 이동, 벽과 장애물, Snake등을 그리는 함수가 정의되어 있다.

 

 

 

 

 

반응형

'Game > Personal development' 카테고리의 다른 글

[WIN API] 서커스 찰리 게임  (0) 2022.02.05
[WIN API] 카드 맞추기 게임  (0) 2022.01.30
산성비 게임 제작 (C++)  (4) 2022.01.23
RPG 게임 제작 (C++)  (0) 2022.01.22
오목 게임 제작 (C++)  (0) 2022.01.21
반응형

 

 

 

 

 

 

제작 기간

- 오목 : 2일

- 데이터 저장, 파일 입출력 적용에 따른 기존 코드 수정 : 2일

- 총 4일

 

 

 

 

게임 클래스 구성

 

 

 

 

GameManager

- 클래스 멤버는 Player를 가지고있고, 나머지는 바둑판의 가로와 세로, 되돌리기 수, 턴 수, 돌과 커서 종류, 플레이모드 멤버 변수를 가지고 있다.

- Main함수에서 GameManager의 객체를 생성한 뒤, 게임을 시작하게된다.

- 각 화면은 정적 클래스(MapDraw)에 화면을 그리는 함수를 구성해서 GameManager에서 호출하여 그린다.

- 게임이 중간에 게임을 그만두거나, 한판 이상 마무리된 게임에 대해 정보를 txt파일로 저장하고 불러올 수 있다.

 

 

 

Player

- 구조체 멤버 Stone을 가지고 있고, 나머지는 커서 위치, 무르기 수, 돌을 둔 기록(리스트), 리플레이 기록(리스트)를 멤버로 가지고 있다.

- Player에서 키 입력을 받아서 커서를 움직인다.

- 각 리스트 멤버는 게임 중간에 그만두거나, 한판 이상 마무리 되었을때 데이터를 저장하기 위한 멤버이다.

 

 

 

Stone

- 돌이 두어진 좌표를 멤버로 가지고 있다.

 

 

 

MapDraw

- 화면에 게임을 그리기 위한 함수들을 정의해 놓았다.

- 콘솔 좌표를 이동시키기, 바둑판 그리기, 바둑알 그리기, 커서 그리기 등의 기등이 정의되어있다.

 

 

 

Replayer

- 플레이어 이름, 돌 모양 정보, 돌을 둔 좌표 구조체(Stone)리스트를 멤버로 가지고 있다.

- GameManager에 멤버로 있지 않고, 게임 내에서 다시보기 기능을 실행할 때 지역변수로 선언된다.

 

 

 

저장되어있는 데이터 구조

- 플레이중 데이터와 게임이 끝난 데이터 2가지를 저장한다.

 

 

 

 

 

반응형

'Game > Personal development' 카테고리의 다른 글

[WIN API] 서커스 찰리 게임  (0) 2022.02.05
[WIN API] 카드 맞추기 게임  (0) 2022.01.30
산성비 게임 제작 (C++)  (4) 2022.01.23
RPG 게임 제작 (C++)  (0) 2022.01.22
뱀 게임 제작 (C++)  (0) 2022.01.22
반응형

 

 

 

 

풀이코드

using System;

public class Solution {
    public int solution(int[] citations) {
        int answer = GetAnswer(citations);
        return answer;
    }
    
    private int GetAnswer(int[] citations)
    {
        Array.Sort(citations, (a, b) => {return b.CompareTo(a);});
        if(citations[0] == 0)
        {
            return 0;
        }
        
        int returnValue = 0;
        for(int i = 0; i < citations.Length; i++)
        {
            if(citations[i] < i + 1)
            {
                returnValue = i;
                break;
            }
        }
        
        return returnValue == 0 ? citations.Length : returnValue;
    }
}
  • 내림차순 정렬을 한 뒤, 첫번째 원소가 0이면 H-Index는 0이다.
  • 인용이 한번이상 되었다면 발표한 논문의 수와 인용된 수를 비교해서 인용된 수가 논문의 수보다 작으면 index값이 H-Index가 된다.
  • 발표한 모든 논문의 인용된 수가 같으면 논문의 수가 H-Index가 된다.

 

 

 

기타

- H-Index만 제대로 이해하면 어려운 문제는 아닌데, 태어나서 처음보는 개념이라 헤맸다.

- H-Index

 

h-index - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Metric that attempts to measure the productivity and citation impact of a person's publications The h-index is an author-level metric that measures both the productivity and citation i

en.wikipedia.org

 

 

 

 

 

반응형

'Stack > Coding test' 카테고리의 다른 글

[C++ / Lv2] 전화번호 목록  (0) 2022.02.05
[C++ / Lv1] 완주하지 못한 선수  (0) 2022.02.04
[C++ / Lv2] 문자열 압축  (0) 2022.02.02
[C# / Lv2] 가장 큰 수  (0) 2022.01.18
[C# / Lv1] k번째 수  (0) 2022.01.17
반응형

 

 

 

 

풀이 코드

using System;

public class Solution {
    public string solution(int[] numbers) {
        string answer = GetAnswer(numbers);
        return answer;
    }

    private string GetAnswer(int[] numbers)
    {
        Array.Sort(numbers, (a, b) =>
                   {
                       string combineAB = string.Format("{0}{1}", a, b);
                       string combineBA = string.Format("{0}{1}", b, a);
                       return combineBA.CompareTo(combineAB);
                   });

        return (GetZeroCount(numbers) == numbers.Length) ? 
            "0" : string.Join("", numbers);
    }

    private int GetZeroCount(int[] sortedNumbers)
    {
        int returnVal = 0;
        for(int i = 0; i < sortedNumbers.Length; i++)
        {
            if(sortedNumbers[i] == 0)
            {
                returnVal++;
            }
        }

        return returnVal;
    }
}
  • 처음에는 문제에 나와있는대로 모든 경우의 수를 구하려다가 낭비가 너무 커지는것 같아서 포기했다.
  • 원소의 자릿수가 같으면 내림차순 정렬이 가장 큰 값을 가지지만 원소의 자릿수가 달라지면 오름차순의 수가 가장 큰 값을 가지게된다. (ex. [10, 9], [9, 10] ▶ "109" < "910"), (ex. [2, 1], [1, 2] ▶ "21" > "12")
  • 그래서 수로 정렬하지 않고, 두 원소의 값을 문자열로 합친 값을 비교하여 정렬함.
  • 정렬한 배열의 값이 0만 있을경우 "0"으로만 반환되게끔 예외 처리를 함.

 

 

 

기타 사용한 함수들

- string.CompareTo(string)

 

String.CompareTo 메서드 (System)

이 인스턴스를 지정된 개체 또는 String과 비교하고 정렬 순서에서 이 인스턴스의 위치가 지정된 개체 또는 String보다 앞인지, 뒤인지 또는 동일한지를 나타내는 정수를 반환합니다.Compares this insta

docs.microsoft.com

- string.Join(string, object[])

 

String.Join 메서드 (System)

각 요소 또는 멤버 사이에 지정된 구분 기호를 사용하여 지정된 배열 요소나 컬렉션 멤버를 연결합니다.Concatenates the elements of a specified array or the members of a collection, using the specified separator between e

docs.microsoft.com

 

반응형

'Stack > Coding test' 카테고리의 다른 글

[C++ / Lv2] 전화번호 목록  (0) 2022.02.05
[C++ / Lv1] 완주하지 못한 선수  (0) 2022.02.04
[C++ / Lv2] 문자열 압축  (0) 2022.02.02
[C# / Lv2] H-Index  (0) 2022.01.19
[C# / Lv1] k번째 수  (0) 2022.01.17

+ Recent posts