프로젝트 진행과정 005
·
📖TIL/🔥Projects
미니게임 003제목 : 숫자 야구이전에 제작 시도하려다가 포기한 숫자 야구를 다시 만들어보자▲직접 해보니 너무 어렵다! 3자리로 하는게 좀더 쉬우려나.. 규칙컴퓨터가 0~9 사이의 서로 다른 숫자를 정해 정해진 개수 ( 4자리 ) 의 숫자를 만든다플레이어는 컴퓨터가 고른 숫자를 추측하여 맞춰야한다.플레이어가 4자리 숫자를 골라 입력스트라이크 : 숫자와 위치가 모두 맞는 경우볼 : 숫자만 맞고 위치가 다른 경우아웃 : 숫자가 하나도 포함 되어있지 않은 경우이전 시도의 결과를 토대로 다음 숫자를 추측하며 입력입력 시도에는 10번의 기회가 주어짐컴퓨터가 고른 숫자를 정확히 맞추면 성공 이번 미니게임의 핵심 코드▼처음 사용해보는 ListList answer = Answer(4); ▼중복 없는 4자리 정답 ..
생략 ( 언더바 " _ " )
·
⭐C Sharp/00. 문법
생략 , 무시 ( _ )다른 프로그래머들의 블로그롤 참고해보다가 이상한 걸 발견했다보통 변수명 앞에 언더바 ( _ ) 를 붙이는 경우는 코딩 스타일이라 배웠다.그런데 변수명도 아닌데 언더바 단독으로 있는 경우는 뭐지?검색해보니 "무시해도 되는 코드" 라고 한다.무시해도 될 코드면 처음부터 안쓰면 되는거 아닌가? 의아했는데 사용처가 굉장히 많았다int.TryParse(input, out _) ▲여기서 out_ 의 의미결과 값을 받을 변수가 필요 없으니 무시한다.라는 뜻이다TryParse 는 성공 / 실패 여부만 확인하고 싶을 때 자주 사용한다변환된 실제 숫자는 안 쓰니까 굳이 변수 만들어서 저장할 필요가 없다그래서 ( _ ) 는 버려지는 자리 ( Discard ) 를 써서 처리한다 1. Discard (..
프로젝트 진행과정 004
·
📖TIL/🔥Projects
미니 게임 002제목 : 가위 바위 보 규칙컴퓨터가 임의로 가위 , 바위 , 보 중 하나를 택플레이어가 셋 중 하나를 선택바위는 가위를 이긴다보는 바위를 이긴다가위는 보를 이긴다서로 같으면 비긴다 가위 = 0 , 바위 = 1 , 보 = 2 비교연산으로 승부를 연산 ▼코드 작성public class RPS : IGame{ public string Id => "rps"; public string Title => "가위 바위 보"; public void Run() { int win = 0; int lose = 0; int draw = 0; // 통계 int round = 0; Console.WriteLine("가위 바위 보..
프로젝트 진행과정 003
·
📖TIL/🔥Projects
메인메뉴는 틀은 완성했다.이제 미니게임을 하나씩 제작해서 넣어보자.먼저 이전에 작업 했었던 Up and Down 을 업그레이드해보자. 미니 게임 001제목 : UP & DOWN규칙Random.Next ( 1, 101 ) 로 1부터 100까지 난수 생성입력 검증은 Input.cs 1부터 100까지 숫자중 컴퓨터가 임의로 하나 선정 ( 플레이어에게 비공개 )플레이어는 콘솔에 1부터 100까지 숫자를 입력(플레이어가 입력한 수) 낮으면 DOWN! 출력플레이어가 유추할 수 있는 기회는 7번7번 안에 성공시 성공 출력실패시 실패 출력 public class UpAndDown : IGame{ public string Id => "up_and_down"; public string Title => "UP..
프로젝트 진행과정 002
·
📖TIL/🔥Projects
분리해서 관리할 클래스 정리IGame ( 인터페이스 )Input ( 콘솔에서 받아올 입력 값 , 처리 , 예외 )GameManager ( 게임 전체 흐름 / 메인 메뉴 / 루프 담당 )그리고 각 미니게임들.. 어제는 GameManager 를 조금 작성했었는데 오늘은 최대한 마무리할수 있게 작성해보자MainMenu 나 RunGameLoop 는 같은 메서드는 GameManager 에서 작성하는게 좋을것 같다 GameManager 의 역할크게 세가지로 나눠 작업게임 등록 관리 ( ID 중복 되면 안됨 )메인 메뉴 표시 , 사용자 선택 처리 ( 미니 게임 선택 , 종료 )선택된 게임의 실행 루프 관리 ( 재도전 / 메인메뉴로 복귀 ) public class GameManager{ private read..
Console.Title
·
⭐C Sharp/00. 문법
키워드 Console.TitleConsole.Title 은 C# 콘솔 창의 제목 ( 타이틀 바에 보이는 문자열 ) 을 설정하는 기능이다.Console.Title = "호찬의 콘솔 프로젝트"; 주의할 점Console.Title 에 null 이나 너무 긴 문자열을 넣으면 에러 발생콘솔 환경이 없는 경우에는 동작하지 않을 수 있다 get set 으로 제목 변경Console.Title 은 string 타입의 프로퍼티이다.get 과 set 둘 다 사용이 가능하다.string currentTitle = Console.Title;Console.WriteLine("현재 제목: " + currentTitle);// Title 값 바꾸기Console.Title = "내 콘솔 프로젝트"; 정리Console.Title ..
제네릭 사용 예시 코드
·
⭐C Sharp/15-1. 제네릭
제네릭 사용 예시 코드▼제네릭 계산기using System;namespace GenericCalculator{ // 제네릭 델리게이트 선언 delegate T Operation(T a, T b); class Program { // 제네릭 연산 메서드 static T Add(T a, T b) => (dynamic)a + (dynamic)b; static T Subtract(T a, T b) => (dynamic)a - (dynamic)b; static T Multiply(T a, T b) => (dynamic)a * (dynamic)b; static T Divide(T a, T b) { if..
콘솔 프로젝트 진행과정 001
·
📖TIL/🔥Projects
목적메뉴 → 게임 실행 → 결과 / 재도전 → 메뉴 흐름을 표준화IGame 인터페이스를 만들고 새 게임을 제작할때 IGame 인터페이스를 상속하자입력 / 예외 / 유지보스 구조를 연습하면서 객체지향 감각을 익히자 메인 메뉴를 작업하고 싶다메인 메뉴가 이 프로젝트 작업에서 나에게는 생소한 작업이고 어려울 것 같아 먼저 시도해보자이 메인 메뉴가 완성되면 앞으로 미니 게임을 추가할 때 더 수월해질 것 같다 세 파트로 나눠서 메인 메뉴를 제작해보려고 한다Interface : 모든 미니게임이 따라야 하는 규칙Input : 콘솔에서 입력받은 값을 판단 , 예외 처리GameManager : 프로그램 전체 실행을 담당하는 클래스 그나마 코드 작성이 빠를것 같은 Input 과 Interface 를 먼저 작업하자 ▼I..
readonly
·
⭐C Sharp/11. 객체 지향
ReadOnly C# 에서 readonly 는 주로 필드 ( field ) 앞에 붙여서 사용하는 키워드이다.readonly 의 역할은 , 한 번 값을 정하면 이후에는 바꿀 수 없도록 제한하는 역할이다. ▼문법class ClassName{ public readonly 데이터형 필드이름; public readonly 데이터형 필드이름 = 초기값; public ClassName(매개변수) { 필드이름 = 값; // 생성자 안에서 초기화 가능 }} readonly 는 필드 ( 클래스나 구조체의 멤버 변수 ) 에만 사용할 수 있다.값을 할당할 수 있는 시점은 딱 두 군데이다.선언과 동시에 초기화할 때생성자 ( Constructor ) 안에서 초기화할 때그 외에는 값을 변경..