[ 목차 ]
안녕하세요~
visual studio 설치도 끝났겠다, 본격적인 코드를 입력해볼 시간!
하지만..
코드를 알아야 작성을 하겠지..?
디자인과 출신의 험난한 코드 찍먹 시간
내가 선택한 길 즐겨!!!!
그럼 기초 of 기초 시작
1. 변수란?
- 데이터를 저장하는 이름이 있는 공간 단, 하나의 값만 저장이 가능
- 데이터 타입에 따라 저장할 수 있는 값의 종류와 크기가 결정이 된다.
- int = 정수형 변수
- double, float = 실수형 변수
- char = 단일 문자
- string = 문자열 (여러 글자)
변수는 데이터를 저장할 '그릇'이라고 생각하면 된다.
그릇 안에 데이터 타입을 넣어줘야 한다.
int hp = 100; //정수형
double att = 56.7; //실수형
char st = 'S'; //단일 문자
string name = "Ace"; //문자열
변수는 알겠는데, int 옆에 hp는 무엇인가?
바로 변수명이다. 변수에게 이름을 지어주는 것이다.
그렇다면 변수명에게 정해준 고정된 값을 뭐라고 하는 것인가?
그것은 리터럴이다.
이것을 이제 화면에 보여주려면 출력!을 해야한다.
출력은 간단했다.
마법의 출력 문장
- Console.WriteLine();
- Console.Write();
Console.WriteLine(hp); //출력: 100
Console.WriteLine(att); //출력 56.7
Console.WriteLine(st); // 출력: S
Console.WriteLine(name); // 출력: Ace
❓ 문장 두개가 무엇이 다른가요?
- WriteLine은 줄바꿈을 해주는 것이고, Write는 줄바꿈을 안 한다는 것이다.
- 고로 상황에 따라 선택해서 쓰면 되는 것이다.
그렇다면 변수 여러 개를 적을 때, 하나씩 다 치기엔 귀찮고 많다.
int a = 100;
int b = 300;
int c = 500;
int b = 600;
이걸 빠르게 하는 방법은 없을까?
중복되는 같은 데이터 타입 int (정수형) 변수를 한 번에 선언하는 것이다.
int a = 100, b = 300, c = 500, d = 600;
편 - 안
그리고 이 값을 변경할 수 없는 것이 있다고 한다.
그것은 상수(const).
//상수 사용
const int score = 100;
추후에도 변동이 전혀 없어 값을 변경할 수 없다.
2. 데이터 형식
이제 여러 데이터 형식을 알아야 그에 맞는 리터럴을 입력할 테니 알아야 한다.
데이터 형식도 여러 종류이다.
(1) 숫자 데이터 형식 (정수와 실수)
→ 음수 양수 모두 표현 가능
- sbyte : 부호 있는 정수 (1바이트)
- short : 부호 있는 정수 (2바이트)
- int : 정수 데이터 ( 4바이트 정수 )
- long : 정수 데이터 ( int 보다 정교한 값, 8바이트 정수)
→ 양수
- byte (1바이트)
- ushort (2바이트)
- uint (4바이트)
- ulong (8바이트)
→ 실수
- float : 단정밀도 실수 (작은 값)
- double : 배정밀도 (float보다 많은 값, 더욱 정밀)
- decimal : 고정밀도 (매우 정밀, 금융 계산, 시뮬레이터 쪽에 많이 쓰임)
→ 리터럴 접미사 (숫자의 데이터 형식을 명시)
보통의 데이터 형식은 리터럴 값을 입력하면 세미콜론(;)을 입력해 마무리를 한다.
하지만 리터럴 접미사는? 리터럴 뒤에 접미사를 사용한다는 말이다.
이유는? 구분을 위함!
ex) 기본 정수형과 기본 실수형 (리터럴 접미사x)
int integerValue = 100;
double doublValue = 3.14;
ex) 리터럴 접미사가 붙은 정수형과 실수형
long longValue = 100L;
float floatValue = 3.14f;
decimal decimalValue = 3.14m;
(2) 문자열 데이터 형식
→ char : 단일 문자 데이터 형식
char number = '9';
같은 경우는 숫자를 입력해도 숫자 데이터가 아닌 '문자 데이터'로 문자9이다.
char letter = 'A'; // 문자 A 저장
char symbol = '#'; // 특수 기호 저장
char number = '9'; // 숫자 9가 아닌 문자 9 저장
→ string : 0개 이상의 문자열
(3) 논리 데이터 형식
→ bool : 참(true) 또는 거짓(false) 값을 저장한다.
조건문 및 논리 연산에 사용된다.
// bool 형식: 참(True) 또는 거짓(False)
bool isRunning = true; // 프로그램 실행 상태
bool isFinished = false; // 프로그램 종료 상태
Console.WriteLine(isRunning); // 출력: True
Console.WriteLine(isFinished); // 출력: False
(4) 닷넷 데이터 형식
난 처음에 닷넷이 무슨 말인지 몰랐다. 처음 들어보는 말이었기 때문..
검색해서 알아보니 닷 = 점, 넷 = .NET
프로젝트를 생성하면 맨 위에
using System
코드가 있는 것을 확인할 수 있다.
이게 무엇을 의미하냐면 코드를 입력할 때 System을 생략해주는 것이다.
위의 코드가 있을 시에
Console.WriteLine();
위의 코드가 없을 시에
System.Console.WriteLine();
결국 가독성과 유지 보수성 향상 시키는 데에 중요한 역할을 하는 것이다.
(5) 래퍼 형식
기본 데이터 형식을 클래스 형태로 감싸서 객체 취급
string numberAsString = number.ToString();
Tostring() 메서드 덕분에 숫자를 문자로 변경하는 것이다.
3. 문자열 입력 관련 메서드
전부터 계속 봐왔던 출력 메서드
Console.Write();
Console.WriteLine();
이외에도 출력 메서드가 있다.
Console.ReadLine(); //사용자로부터 입력 받는 메서드
Console.Clear(); //초기화 (화면 지우기)
Console.Read(); //사용자가 아무 문자를 입력하면 한 글자만 출력해줌
Console.ReadKey(); //사용자가 해당 문자를 입력하기 전까지 기다리는 것
쓸 일이 많으니 꼭 기억해두어야 한다.. (종종 잊어먹어서 많이 되돌아봄)
❓출력할때 문자열과 변수명을 같이 출력하고 싶은데 어떻게 하나요
: 괄호 안에 $ 를 넣으면 여러 변수를 입력할 수 있게 된다.
ex) 문자열 안에 정수형을 입력하고 싶을때
Console.WriteLine($"안녕하세요, {userName}님!"); //입력값 출력
4. 형식 변환
입력된 문자열을 숫자 등 다른 데이터 형식으로 변환하고 싶을때 쓰는!
- Convert (클래스)
- int.Parse() (메서드)
//문자열을 정수로 변환
Console.WriteLine("나이를 입력하세요: ");
string input = Console.ReadLine(); //사용자로 부터 입력 받기
int age = int.Parse(input); //문자열을 정수로 변환
Console.WriteLine($"내년에는 {age + 1} 살이 되겠군요!"); //변환된 값 사용
Console.WriteLine("내년에는 " + age + "살이 되겠군요!");
Console.WriteLine("내년에는 {0} 살이 되겠군요!", age);
예시 코드를 보면 string을 사용자로부터 입력을 받아 '문자열'로 받았다.
int.Parse() 메서드를 통해서 이 문자열을 정수로 변환한다.
그래서 최종적으로 정수형으로 출력한다.
5. 실습
(1) 사진의 내용을 입력 받아서 출력하기
우선 보아야 할 것은
실수와 정수가 섞여있는 것
그리고
사용자로부터 입력을 받아야하는 것
이 두가지가 핵심이다.
그렇게 작성한 코드는 아래와 같다.
float skill = 0.0f;
float Card = 0.0f;
float MaxSkill = 0.0f;
int MP = 0;
int FMpHeal = 0;
int NFMpHeal = 0;
float Speed = 0.0f;
float hicleSpeed = 0.0f;
float CarrySpeed = 0.0f;
float Cooldown = 0.0f;
Console.WriteLine("루인 스킬 피해량을 입력하세요 : ");
skill = float.Parse(Console.ReadLine());
Console.WriteLine("카드 게이지 획득량을 입력하세요 : ");
Card = float.Parse(Console.ReadLine());
Console.WriteLine("각성기 피해량을 입력하세요 : ");
MaxSkill = float.Parse(Console.ReadLine());
Console.WriteLine("최대 마나 입력하세요 : ");
MP = int.Parse(Console.ReadLine());
Console.WriteLine("전투 중 마나 회복량 : ");
FMpHeal = int.Parse(Console.ReadLine());
Console.WriteLine("비전투 중 마나 회복량 : ");
NFMpHeal = int.Parse(Console.ReadLine());
Console.WriteLine("이동 속도 : ");
Speed = float.Parse(Console.ReadLine());
Console.WriteLine("탈 것 속도 : ");
hicleSpeed = float.Parse(Console.ReadLine());
Console.WriteLine("운반 속도 : ");
CarrySpeed = float.Parse(Console.ReadLine());
Console.WriteLine("스킬 재사용 대기시간 감소 : ");
Cooldown = float.Parse(Console.ReadLine());
Console.WriteLine("활동");
Console.WriteLine($"루인 스킬 피해: {skill} % ");
Console.WriteLine($"카드 게이지 획득량: {Card} % ");
Console.WriteLine($"각성기 피해 : {MaxSkill} % ");
Console.WriteLine($"최대 마나 : {MP} ");
Console.WriteLine($"전투 중 마나 회복량 : {FMpHeal} ");
Console.WriteLine($"비전투 중 마나 회복량 : {NFMpHeal} ");
Console.WriteLine($"이동 속도 : {Speed} % ");
Console.WriteLine($"탈 것 속도 : {hicleSpeed} % ");
Console.WriteLine($"운반 속도 : {CarrySpeed} % ");
Console.WriteLine($"스킬 재사용 대기시간 감소 : {Cooldown} % ");
(2) 콘솔로 텍스트노벨 만들기
콘솔로 실행했을때 미연시의 게임에서 쓰이는 비주얼 노벨을 비주얼이 아닌 텍스트노벨로 만드는 것을 실습하였다.
여기에서 새롭게 알게된 코드는 n초 뒤에 다음 코드를 실행하는 코드이다.
Thread.Sleep(1000); //1000 1초다 (1000밀리초)
이것도 활용해서 작성한 전체코드이다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace lion_study10_story
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter를 입력하면 스토리가 시작됩니다. ");
Console.ReadLine();
Console.Clear();
Console.WriteLine("로딩중");
Thread.Sleep(1000); //1000 1초다 (1000밀리초)
Console.Clear();
Console.WriteLine("로딩중.");
Thread.Sleep(1000); //1000 1초다 (1000밀리초)
Console.Clear();
Console.WriteLine("로딩중..");
Thread.Sleep(1000); //1000 1초다 (1000밀리초)
Console.Clear();
Console.WriteLine("로딩중...");
Thread.Sleep(1000); //1000 1초다 (1000밀리초)
Console.Clear();
Console.WriteLine("아침이 되었다.");
Console.ReadLine();
Console.Clear();
Console.WriteLine("(*^ω^*)/ 안녕!");
Console.ReadLine();
Console.Clear();
Console.WriteLine("(*^ω^*)/ 난 너의 행복이! 오늘도 활기차게!");
Console.ReadLine();
Console.Clear();
Console.WriteLine("Q_Q.. 안녕.. 난 슬픔이.. 비가 오는 날처럼 슬픈 건 없지");
Console.ReadLine();
Console.Clear();
Console.WriteLine("(-_-#) " +
"난 버럭이야, " +
"아~ 기분이 꿀꿀한 게 화가 치솟아!");
Console.ReadLine();
Console.Clear();
Console.WriteLine("(*^ω^*)/ 버럭아 그럴때일수록 좋은 생각을 해~!");
Console.ReadLine();
Console.Clear();
Console.WriteLine("(-_-#) 화나는 일 밖에 없는데 좋은 생각이라니! 제정신이야?!");
Console.ReadLine();
Console.Clear();
Console.WriteLine("Q_Q.. 얘들아.. 싸우지마.. 싸우면 슬퍼");
Console.ReadLine();
Console.Clear();
Console.WriteLine("오늘도 왠지 시끄러운 하루가 될 것 같다.");
}
}
}
이상으로 여러 데이터와 간단 실습을 해보았다.
점점 정보가 많아지면서 이것을 다 기억해낼 수 있을까....? 라는 생각이 든다..
그렇지만 한편으로는 실습하면서 재밌다는 생각도 한다.
디자인할 땐 창작의 고통에 시달렸는데..............
재밌어.. 새로워..
하지만 점점 어려워지는 느낌..
아자아자.. 화이팅해보자고..~~
요즘은 코드를 물어볼 때 왜 안 되는지 모르는 GPT를 힐링 칭찬 받을 때 쓴다.
이렇게라도 공부의 뿌듯함을 느끼는 중이다😊
'Development > 멋쟁이사자처럼 게임개발 부트캠프' 카테고리의 다른 글
[멋쟁이사자처럼 Unity 게임 부트캠프 4기] 4일차 (1) - switch 문 (0) | 2025.03.05 |
---|---|
[멋쟁이사자처럼 Unity 게임 부트캠프 4기] 3일차 (2) - 조건문 (0) | 2025.03.04 |
[멋쟁이사자처럼 Unity 게임 부트캠프 4기] 3일차 (1) - 이진수 & 연산자 (4) | 2025.02.27 |
[멋쟁이사자처럼 Unity 게임 부트캠프 4기] 2일차 (1) - Github 설치 및 연결 (0) | 2025.02.26 |
[멋쟁이사자처럼 Unity 게임 부트캠프 4기] 1일차 - Visual Studio 2022 설치 (0) | 2025.02.25 |