Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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
Archives
Today
Total
관리 메뉴

시작은 0부터

15. 클래스 배열화, 클래스 상속, 접근제한자, 드래그, 드래그 영역 줄위치 변경 본문

C# 학습일지

15. 클래스 배열화, 클래스 상속, 접근제한자, 드래그, 드래그 영역 줄위치 변경

0base 2022. 7. 21. 00:34

클래스의 개념에 대해 배우고 그것을 실제로 응용하여 게임을 만들어보고 있다.

클래스는 붕어빵 틀이고 객체는 그 붕어빵 틀로 찍어낸 붕어빵이다.

객체를 생성할 때는 클래스 객체이름(클래스명) = new 클래스(); 식을 사용한다. new 는 새로운 메모리 할당을 의미하니 여기서 생성된 객체는 클래스의 한 종류이긴 하지만 엄연히 클래스와는 다르다는 것을 숙지해야한다. 이걸 자꾸 혼동해서 클래스 안에서 다른 클래스를 불러올 때, 객체를 생성하는 코드를 쓰고 그 객체의 값을 불러오면서 왜 클래스의 값이 바뀌지 않는지 이해하지 못하는 착각을 하게됐다. 그리고 클래스를 배열로 사용할 때는 각 배열마다 new 클래스를 선언해줘야한다.

 

클래스 배열은 다음과 같다.

클래스[ ] 클래스이름 = new 클래스[개수];

이 식은 클래스 데이터형을 나타내는 배열을 선언하는 것이다. 선언 구조를 보면 클래스를 클래스를 새로 생성할 때 나타내는 ( ) 괄호를 찾아볼 수 없다. 즉, 이 식은 클래스를 담을 수 있는 배열만 만들었을 뿐, 그 배열마다 클래스를 생성한 것은 아니다. 따라서 각 배열에 클래스를 만들기 위해서는 배열마다 초기화를 해주어야 한다. ▼

 

Class[] cl = new Class[10];

for(int i = 0; i < array.Length; i++)	{  cl[i] = new Class();  }

 

클래스 상속은 자식 : 부모 형식으로 클래스명을 사용하면 된다.

ex) internal class Car : Gear <= 클래스 Car는 클래스Gear의 자식클래스로 부모클래스인 Gear 내부값을 사용할 수 있다.

 

클래스, 또는 클래스 내 멤버변수를 선언할 때, 접근제한자를 활용할 수 있다.

 

Public 

: 외부 클래스에서 값을 가져갈 수 있는 접근제한자.

 

Internal

: 해당 프로젝트 내에서만 Public처럼 사용될 수 있는 접근제한자. 클래스에 아무런 접근제한자를 사용하지 않으면 기본값으로 사용된다.

 

Protacted

:  상속받은 자식 클래스에서만 값을 가져갈 수 있는 접근제한자. 

 

Private

: 내부 클래스에서만 값을 사용할 수 있는 접근제한자.

 

 

Shift 누른 상태 + 방향키

: 방향키 방향으로 드래그

 

Alt 누른 상태 + 방향키

: 방향키 방향으로 드래그된 코드들의 줄위치를 이동시킨다.

 

 

지렁이게임 만들기 이후 지렁이게임을 2인용 버전으로 만들고 아이템을 여러 범위에서 생성되게 만들었다.

기존의 지렁이게임에서 루프 클래스 안에 플레이어 클래스를 하나 더 생성하고, 키입력조건을 다르게 하고, 처음 시작 위치를 랜덤으로 돌려 각각 다른 위치에 넣어주었다. 아이템은 클래스 배열을 사용해서 여러 아이템 클래스를 만들어 각 아이템 클래스가 호출될 때마다 랜덤값을 지정하는 함수를 실행시킨다. 처음에 랜덤값을 설정할 때 플레이어 클래스 내부에 랜덤값을 생성하는 함수를 만들고 플레이어 클래스를 활용한 객체 2개를 만들어 특정 함수가 호출되면 플레이어 객체 2개에 각각 랜덤값을 넣어서 위치를 설정해주려고 했으나 계속 똑같은 위치에 생성되었다. 이게 안되는 이유는 Random 함수 자체의 문제이다.  Random 함수는 주어진 값이 없으면 시드값을 사용하는데, 이 시드값이 틱카운트에서 가져오는 값이다. 즉, 각각 다른 객체에서 해당 랜덤함수를 따로 호출하더라도 그 호출이 같은 함수에 안에서 이뤄진다면 동시에 이뤄지기 때문에 위치값이 둘 다 동일하게 넣어지는 현상이 발생한다.