using System;
namespace LearnDotnet
{
internal class Program
{
static void Main(string[] args)
{
Console.Write("구매 하고자 하는 아이템 이름을 입력하세요. : ");
string input = Console.ReadLine();
//if
if (input == "장검")
{
}
else if (input == "단검")
{
}
else if (input == "활")
{
}
else
{
Console.WriteLine("구매할수 없는 아이템 입니다.");
}
//switch
switch (input)
{
case "장검":
break;
case "단검":
break;
case "활":
break;
default:
Console.WriteLine("구매할수 없는 아이템 입니다.");
break;
}
}
}
}
위에거를 enum 써보고싶어서 쓰다 만 코드..
using System;
namespace LearnDotnet
{
using System;
namespace LearnDotnet
{
internal class Program
{
enum eWeaponType
{
LongSword = 200,
장검 = 100,
ShortSword,
단검 = 80,
Bow,
활 = 120
}
static void Main(string[] args)
{
Console.Write("구매하고자 하는 아이템 이름을 입력하세요: ");
string input = Console.ReadLine();
int gold = 500;
//선택문 switch
switch (input)
{
case "장검":
//실행
eWeaponType weaponType = eWeaponType.장검;
int intWeaponType = Convert.ToInt32(eWeaponType.장검);
Console.WriteLine("{0}을 구매 했습니다. (-{1}골드)", weaponType,intWeaponType);
gold -= intWeaponType;
Console.WriteLine("소지골드 : {0}골드",gold);
break;
case "단검":
//실행
weaponType = eWeaponType.단검;
intWeaponType = Convert.ToInt32(eWeaponType.단검);
Console.WriteLine("{0}을 구매 했습니다. (-{1}골드)", weaponType, intWeaponType);
gold -= intWeaponType;
Console.WriteLine("소지골드 : {0}골드", gold);
break;
case "활":
//실행
weaponType = eWeaponType.활;
intWeaponType = Convert.ToInt32(eWeaponType.활);
Console.WriteLine("{0}을 구매 했습니다. (-{1}골드)", weaponType, intWeaponType);
gold -= intWeaponType;
Console.WriteLine("소지골드 : {0}골드", gold);
break;
}
}
}
}
}
static -> 실행될 때 가장 먼저 메모리에 올라간다.프로그램이 종료될때까지
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/static
static 한정자 - C# 참조
static(C# 참조) 아티클 04/07/2023 기여자 13명 피드백 이 문서의 내용 --> 이 페이지에서는 static 한정자 키워드를 다룹니다. static 키워드는 using static 지시문의 일부이기도 합니다. static 한정자를 사용
learn.microsoft.com
메서드 예제
using System;
namespace LearnDotnet
{
using System;
namespace LearnDotnet
{
internal class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 3; i++)
{
PrintSayHello();
}
//메서드: 메서드는 일련의 문을 포함하는 코드 블록입니다(기능)
//0. 기능정의
//1. 메서드 정의(class 내부에), 메서드 명은 반드시 첫글자 대문자
//2. 메서드 사용 (호출)
//기본형
//"안녕하세요"를 출력하는 기능
void PrintSayHello()
{
Console.WriteLine("안녕하세요!"); //기능구현
}
}
}
}
}
메서드 작성법
메서드: 메서드는 일련의 문을 포함하는 코드 블록
0. 기능정의
1. 메서드 정의(class 내부에), 메서드 명은 반드시 첫글자 대문자
2. 메서드 사용 (호출)
클래스는 참조 형식이다.
https://www.youtube.com/watch?v=PBVEWcqggiQ&list=PLTFRwWXfOIYBmr3fK17E0VhKPyYrGy75z&index=30
new 연산자는 새 유형의 인스턴스를 만든다. 인스턴스:객체 -> 실체화
https://www.youtube.com/watch?v=S8oQU_FENLw&list=PLTFRwWXfOIYBmr3fK17E0VhKPyYrGy75z&index=31
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
public class Champion
{
//데이터
string name;
//생성자 메서드
public Champion()
{
Console.WriteLine("챔피언이 생성되었습니다.");
}
//기능 : 춤을 춘다
public void Dance()
{
Console.WriteLine("댄스");
}
}
}
Champion.cs 챔피언 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class App
{
//생성자
public App()
{
Console.WriteLine("App 생성자 호출됨");
//챔피언을 생성
Champion champion = new Champion();
champion.Dance();
Console.WriteLine(champion);
}
}
}
App.cs
using System;
namespace LearnDotnet
{
internal class Program
{
static void Main(string[] args)
{
new App();
}
}
}
Program.cs
예제의 Program.cs는 모두 같다.
예2
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;
int maxHp = 1500;
eState state;//상태
//생성자 메서드
public TerranCommandCenter()
{
state = eState.Land;//생성되면 land상태
hp = maxHp; //생성시 hp는 maxHp
Console.WriteLine("커맨드 센터가 생성되었습니다.({0}/{1})",hp,maxHp);
Console.WriteLine("state: {0}\n",state);
}
//메서드(기능)
public void LiftOff()
{
if (state == eState.Land)
{
Console.WriteLine("올라갑니다.");
state = eState.Liftoff;//상태가 liftoff됨.
}
}
public void Land()
{
if (state == eState.Liftoff)
{
Console.WriteLine("내려갑니다.");
state = eState.Land;//상태가 land됨.
}
}
}
}
TerranCommandCenter.cs
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.LiftOff();
terranCommandCenter.Land();
terranCommandCenter.Land();
terranCommandCenter.Land();
}
}
}
App.cs
예3
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class SCV
{
//멤버 변수(데이터)
int hp;
int maxHp = 60;
int damage;
int armor;
//생성자 메서드
public SCV()
{
hp = maxHp;
damage = 6;
armor = 0;
Console.WriteLine("SCV가 생성되었습니다.");
Console.WriteLine("체력: {0}/{1}", hp, maxHp);
Console.WriteLine("공격력: {0}", damage);
Console.WriteLine("방어력: {0}\n", armor);
}
public void move()
{
Console.WriteLine("SCV가 이동합니다.");
}
}
}
SCV.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class App
{
//생성자
public App()
{
SCV SCV = new SCV();
SCV.move();
}
}
}
App.cs
예4.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class SiegeTank
{
//멤버 변수(데이터)
int hp = 150;
int defaultDamage = 0;
int damage1 = 30;
int damage2 = 70;
bool moveable = true;
//생성자 메서드
public SiegeTank()
{
Console.WriteLine("시즈탱크가 생성되었습니다.");
Console.WriteLine("현재 탱크 모드 입니다.\n");
}
//기능
public void SiegeMode()
{
defaultDamage = damage2;
moveable = false;
Console.WriteLine("모드를 변경했습니다. TankMode > SiegeMode");
Console.WriteLine("공격력이 {0} > {1} 변경되었습니다.",damage1,defaultDamage);
Console.WriteLine("현재 SiegeMode 입니다.\n");
}
public void TankMode()
{
defaultDamage = damage1;
moveable = true;
Console.WriteLine("모드를 변경했습니다. SiegeMode > TankMode");
Console.WriteLine("공격력이 {0} > {1} 변경되었습니다.", damage2, defaultDamage);
Console.WriteLine("현재 TankMode 입니다.\n");
}
public void move()
{
if(moveable == true)
{
Console.WriteLine("이동했습니다.\n");
}
else
{
Console.WriteLine("SiegeMode에서는 이동할 수 없습니다.\n");
}
}
}
}
SiegeTank.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class App
{
//생성자
public App()
{
SiegeTank siegeTank = new SiegeTank();
siegeTank.SiegeMode();
siegeTank.move();
siegeTank.TankMode();
siegeTank.move();
}
}
}
App.cs
'C# 기초' 카테고리의 다른 글
상속, virtual, override, overload, 연결(chaining), casting (0) | 2023.07.24 |
---|---|
void, 메서드 매개변수, 생성자 연습 (0) | 2023.07.21 |
for문 연습문제 나머지(5~14)+도전문제 (0) | 2023.07.20 |
비교 연산자, if문, for문 (0) | 2023.07.20 |
input, enum의 활용, 값 형식,참조 형식, Boxing,산술연산 (0) | 2023.07.20 |