출처 : https://www.youtube.com/watch?v=z6FcZum9_ek&list=PL4SIC1d_ab-Y-bBKojxhtFWwNpawMM1h5&index=8
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// 객체 지향 프로그래밍에서는 가장 처음으로 해야할 일
// ex) 내가 RPG 게임을 만들고 싶다.
// 클래스를 선언한다.
// class Dragon
// {
// int AT; // 멤버변수
// int HP; // 멤버변수
//
// 멤버함수
// void Damage()
// {
// HP = HP - 10;
// }
// }
class Player
{
// 접근 제한 지정자를 입력하지 않으면 디폴트 값은 privae다.
// private이 일반적이기 때문이다.
// 속성들은 외부에서 접근하지 못하는게 일반적으로 좋다.
// 공격력은 공격력 그 자체만으로 의미가 있지만
// 그 의미가 명확해지지 않는다.
// 레벨업을 해서 공격력이 증가한다.
private int LV = 1;
private int AT = 10;
private int HP = 100;
// 플레이어의 레벨이 얼마인지 알고 싶다.
// 인자 값이 아니고 리턴값을 사용한다.
// 리턴값이란 객체가 자신의 상태를 외부에 알려주는 용도로 사용한다.
// 외부에 알려줘야 하기 때문에 알려주는 순간 함수가 끝나게 된다.
// return이라는 문장을 사용하면 얼마나 많은 코드가 return 아래에 있든 함수가 종료하게 된다.
public int GetLv()
{
// 리턴을 하는 순간 함수가 끝나고
// 아래에 친 코드들은 모두 의미가 없다.
LV = 1000;
return LV;
LV = 10000; // 의미가 없는 코드
}
// 상태라는건 멤버변수
// 어떤 상태가 변화하는 순간
public void LVUP()
{
AT = 100;
HP = 1000;
}
public void SetHP(int _HP)
{
// 내가 HP가 0이 되는 순간만 체크할 수도 있고
// 100이 되는 순간만 체크할 수도 있다.
// 가장 큰 핵심은 디버깅이 된다.
HP = _HP;
}
// 함수는 보통 선언과 내용으로 나뉘게 되는데
// void[리턴값] Func[이름 혹은 식별자] ()[인자값]
public void Func()
{
}
// 함수란 보통 클래스 외부와의 소통을 위해서 만든다.
// Damage는 맞는다라는 뜻
// int _Dmg를 넣는다는 것은 외부에서
// 한개의 int 값을 넣어서
// 플레이어에게 전달한다는 의미
public void Damage1(int _Dmg)
{
HP = HP - _Dmg;
}
// 리턴값은 자신이 리턴해주려는 자료형과 동일한 자료형이어야 한다.
public int DamageToHPReturn(int _Dmg)
{
HP = HP - _Dmg;
return HP;
}
// 두개가 될 수도 있다.
// 개수는 신경 안써도 될 정도로
// 100개 이상은 넣어줄 수 있다.
public void Damage2(int _Dmg, int _SubDmg)
{
HP = HP - _Dmg;
HP = HP - _SubDmg;
}
}
// 플레이어가 어떤 사양과 내용을 가졌다
// 만든건 아니다
namespace FuncEx
{
class Program
{
static void Main(string[] args)
{
Player NewPlayer = new Player();
// 그래서 필요한 것이 함수!
// NewPlayer.SetHP = 0;
// NewPlayer.LVUP();
// NewPlayer.SetHP(1000);
// 이런식으로 외부의 값을 받아서
// 객체가 내부의 상태를 변화시키기 위해서
// 함수를 선언하는 경우가 많다.
// NewPlayer.Damage1(10);
// NewPlayer.Damage1(20);
// NewPlayer.Damage2(10, 20);
Console.WriteLine(NewPlayer.GetLv());
Console.WriteLine(NewPlayer.DamageToHPReturn(50));
}
}
}
'C# 개인 공부 기록용 > 어소트락 게임아카데미 - C# 무료강의[2019] 총48강' 카테고리의 다른 글
[C# 강의 11화] !중요! 값형의 메모리 구조 및 처리 개념 (0) | 2022.07.04 |
---|---|
[C# 강의 10화]실행되는 함수의 메모리 구조 (0) | 2022.07.04 |
[C# 강의 7화]맴버함수, 지역변수의 기본개념 & 클래스 접근제한 지정자 (0) | 2022.07.01 |
[C# 강의 6화] 맴버변수와 상수 기본 개념 (0) | 2022.07.01 |
[C# 강의 2 . 3 . 4화] using . class . namespace (0) | 2022.06.29 |