Main 메서드 [공통]
using System;
namespace LearnDotnet
{
internal class Program
{
static void Main(string[] args)
{
new App(); //new: 인스턴스 호출[값이라 변수에 넣을 수 있음]
}
}
}
1. App 클래스 [TerranCommandCenter]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class App
{
//데이터
//생성자
public App()
{
TerranCommandCenter terranCommandCenter = new TerranCommandCenter();
terranCommandCenter.Liftoff();
terranCommandCenter.Land();
}
//기능
}
}
1. TerranCommandCenter 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class TerranCommandCenter
{
//열거형식 정의
enum eState
{
Land,
Liftoff
}
//멤버 변수(데이터)
int hp; // 멤버 변수는 TerranCommandCenter인스턴스가 끝날 때까지 안사라짐 [힙에 저장]
int maxHp = 1500;
//상태 (Land, Liftoff)
//int state; // 0 , 1
//bool state; // true, false
//eState state = eState.Land;
eState state; // 상태
//생성자 메서드
public TerranCommandCenter()
{
state = eState.Land;
hp = maxHp;
//int hp = 1500; 지역 변수는 메서드의 호출이 끝나면 사라짐
Console.WriteLine("커맨드 센터가 생성되었습니다. ({0}/{1})", hp, maxHp);
Console.WriteLine("State: {0}", state);
}
//멤버 메서드 (기능)
public void Liftoff()
{
if (state == eState.Land)
{
Console.WriteLine("올라갑니다.");
state = eState.Liftoff;
}
}
public void Land()
{
if (state == eState.Liftoff)
{
Console.WriteLine("내려갑니다.");
state = eState.Land;
}
}
}
}
2. App 클래스 [TerranSCV]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class App
{
//데이터
//생성자
public App()
{
TerranSCV scv = new TerranSCV();
scv.Move();
}
//기능
}
}
2. TerranSCV 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class TerranSCV
{
//멤버변수(데이터)
int hp;
int maxHp = 60;
int damage = 6;
int armor = 0;
//생성자 메서드
public TerranSCV()
{
hp = maxHp;
Console.WriteLine("SCV가 생성되었습니다.");
Console.WriteLine("체력 : {0}/{1}", hp, maxHp);
Console.WriteLine("공격력 : {0}", damage);
Console.WriteLine("방어력 : {0}", armor);
}
//멤버 메서드(기능)
public void Move()
{
Console.WriteLine("SCV가 이동합니다.");
}
}
}
3. App 클래스 [TerranTank]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class App
{
//데이터
//생성자
public App()
{
TerranTank tank = new TerranTank();
tank.SiegeMode();
tank.Move();
tank.TankMode();
tank.Move();
}
//기능
}
}
3. TerranTank 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
//열거형식
enum eState
{
TankMode,
SiegeMode
}
internal class TerranTank
{
//멤버변수 (데이터)
int hp;
int maxHp = 150;
int tankDamage = 30;
int siegeDamage = 70;
int armor = 1;
eState state;
//생성자 메서드
public TerranTank()
{
state = eState.TankMode;
hp = maxHp;
Console.WriteLine("시즈탱크가 생성되었습니다.");
Console.WriteLine("체력 : {0}/{1}", hp, maxHp);
Console.WriteLine("공격력 : {0} / {1}", tankDamage, siegeDamage);
Console.WriteLine("방어력 : {0}", armor);
Console.WriteLine("현재 TankMode 입니다.\n");
}
//멤버 메서드 (기능)
public void Move()
{
if (state == eState.SiegeMode)
{
Console.WriteLine("SiegeMode에서는 이동할 수 없습니다.\n");
}
if(state == eState.TankMode)
{
Console.WriteLine("이동했습니다.\n");
}
}
public void TankMode()
{
Console.WriteLine("모드를 변경했습니다 SiegeMode > TankMode ");
Console.WriteLine("공격력 {0} > {1} 변경되었습니다", siegeDamage, tankDamage);
Console.WriteLine("현재 TankMode 입니다.");
state = eState.TankMode;
}
public void SiegeMode()
{
Console.WriteLine("모드를 변경했습니다 TankMode > SiegeMode");
Console.WriteLine("공격력 {0} > {1} 변경되었습니다", tankDamage, siegeDamage);
Console.WriteLine("현재 SiegeMode 입니다.");
state = eState.SiegeMode;
}
}
}
'C#프로그래밍' 카테고리의 다른 글
플레이어, 몬스터, 무기[출력만, 입력포함] (0) | 2023.07.21 |
---|---|
this , 매개변수 있는 메서드, 매개변수도 있고 반환값도 있는 메서드, 반환값만 있는 메서드, 메서드의 종류 (0) | 2023.07.21 |
클래스 정의[중요] (0) | 2023.07.21 |
메서드 (0) | 2023.07.21 |
static (0) | 2023.07.21 |