유니티 부트캠프 8기/Ch02. 프로그래밍 기초(C#) 14

3주차 과제1. 스네이크 게임3. 먹이 추가, 게임 종료 조건

먹이 추가(먹이를 먹으면 길이+1), 종료조건을 추가하면 완성된다 6. 먹이 추가 static int food_x, food_y; //food의 좌표값을 저장 const string sign_Food = "☆"; // 먹이 static int length; // 길이길이는 먹을 때마다 1씩 올라간다 먹이 배치 // 랜덤위치에 음식 추가 static void Food() { bool food_crush_on = false; // food가 뱀 몸통 좌표에 생길 경우 true Console.WriteLine($" Score : {score} Last Score : {la..

3주차 과제1. 스네이크 게임2. 맵 만들기, 몸통 추가

맵 만들기, 몸통 붙이기 4. 맵 만들기 const int MAP_X = 0; const int MAP_Y = 0; const int MAP_XSIZE = 30; const int MAP_YSIZE = 20;  // 맵 테두리 그리는 메서드 static void DrawMap() { for (int i = 0; i   5. 몸통길이 추가 static int length = 5; // 길이(일단 5 고정) 일단 5의 길이를 만든다  static void Reset() { Console.Clear(); // 화면을 지움 Dr..

3주차 과제1. 스네이크 게임1. 프로토 타입 만들기

스네이크 게임이 뭔지 알아보자 3-1 스네이크콘솔 기반의 간단한 뱀 게임을 구현하는 것입니다. 기본적인 뱀 게임의 동작 방식은 아래와 같습니다:뱀은 매 턴마다 자신의 앞으로 이동합니다.사용자는 방향키를 이용하여 뱀의 이동 방향을 제어할 수 있습니다.뱀은 맵에 무작위로 생성되는 음식을 먹을 수 있습니다. 뱀이 음식을 먹으면 점수가 올라가고, 뱀의 길이가 늘어납니다.뱀이 벽이나 자신의 몸에 부딪히면 게임이 끝나고 'Game Over' 메시지를 출력합니다.요구사항:Snake 클래스를 만듭니다. 이 클래스는 뱀의 상태와 이동, 음식 먹기, 자신의 몸에 부딪혔는지 확인 등의 기능을 담당합니다.FoodCreator 클래스를 만듭니다. 이 클래스는 맵의 크기 내에서 무작위 위치에 음식을 생성하는 역할을 합니다.Mai..

Console.KeyAvailable()

키 입력을 검사한다 키 입력이 있을 때만 Console.ReadKey으로 키를 읽는다  while (Console.KeyAvailable) // 키 입력이 있으면 true { Console.ReadKey(true); // 키 버퍼 비우기 } 키 입력이 있을 때만 Console.ReadKey로 입력한 키를 하나씩 읽어서 버퍼에서 제거한다매개변수 true는 입력된 키를 화면에 표시하지 않는다모든 버퍼가 비어 있게 되면 루프를 종료한다 버퍼에 남아 있는 모든 키 입력을 제거하여 게임이 이전 입력에 영향을 받지 않도록 초기화한다 목적1. 키 입력 버퍼 정리: 이전에 입력된 키 값들이 남아 있는 경우 버퍼를 비워서 새로운..

디버깅 심화: 직접 실행창 사용하기

직접 실행창 특정 시점에 원하는 코드를 작성할 수 있다 코드가 작동하기 "전"에, 값을 미리 바꾸는거다 for문에서 i가 0인데, 아직 실행을 안했어 이때 직접 실행창에서 i를 3으로 바꿀 수있다 현재 line이 실행되기 전에 i = 0이다 이제 직접 실행창에서 i = 3으로 바꾸면i 가 3으로 바뀐 뒤에 진입할 수 있다 불필요한 반복의 횟수를 줄일 수 있다

문자열의 저장방식

문자열을 배열에 저장할때 직접 저장하지 않고 주소를 저장한다 ★ c++에서는const char* strings[] = {"Hello", "World", "C++"}; 64bit 기준으로 각 포인터는 8byte이므로 이웃한 주소간의 간격이 8byte이다실제 문자열은 Heap에 저장되기 때문에 문자열의 길이가 늘어나도(8byte 보다 커져도) 주소침범이 일어나지 않는다  c#도 비슷하다string[] arr = new string[] { "Hello", "World", "C#" }; string은 참조타입이므로 실제 문자열은 Heap에 저장되며, 배열에는 참조를 저장한다이웃한 주소의 크기는 마찬가지로 똑같으며 64bit 기준으로 8byte이다실제 문자열은 Heap에 저장되기 때문에 문자열의 길이가 늘어나도(..

try catch를 사용한 예외처리

상속에서 예외처리할 때 상위(부모 클래스)의 예외 타입이의 catch 블록이 먼저 실행된다  catch 블록에서는 예외 객체를 사용하여 예외에 대한 정보를 가져올 수 있다 finally는 예외 발생 유무와 관계없이 "항상" 실행된다생략 가능하다 사용자 정의 예외 처리를 만들고 싶을때는, Exception 클래스를 상속받아 작성하면 된다 public class NegativeNumberException : Exception { public NegativeNumberException(string message) : base(message) { } } static void Main(string[] ar..

클래스, 구조체, 프로퍼티

클래스와 구조체는 사용자 정의타입이다 https://asta8080.tistory.com/5 1. c#에서의 struct 와 class 의 new에 대한 이야기C++에서는 struct 와 class 의 차이가 멤버들의 기본 접근 제어 지시자(private, public, protect)를 제외하고는 없습니다. 다만 c#에는 struct이냐? 혹은 class이냐? 에 따라서 값 타입과 참조타입의 개념의 차asta8080.tistory.com  구조체는 값형값형(Value type)1. 변수에 값을 "직접" 저장한다2. 변수가 실제 데이터를 보유하고 있다3. 해당 변수를 다른 변수에 할당하거나 전달할 때는 "값"이 복사된다4. 값형 변수의 수정은 해당 변수의 값만 변경하므로 다른 변수에 영향을 주지 않는다5..