2차원 배열
·
⭐C Sharp/06. 배열
2차원 배열 ( Two - Dimensional Array )2차원 배열은 행 ( Ros )과 열 ( Column ) 로 이루어진 표 형태의 데이터 구조이다.즉 , 여러 개의 1차원 배열을 한 줄씩 묶어 만든 배열로 좌표나 격자 형태 ( 보드판 , 지도 등 ) 데이터를 표현할 때 자주 사용된다. 문법▼선언int[,] arr = new int[행개수, 열개수]; ▼초기화int[,] arr = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 }}; ▼접근Console.WriteLine(arr[0, 1]); // 0행 1열 → 2 출력[ , ] 는 2차원 배열을 의미하며, arr[ 행인덱스 , 열인덱스 ] 형식으로 접근한다. 예시 코드▼for 문을 이용한 출력int..
Array vs List
·
⭐C Sharp/15-2. 배열
Array vs List배열 ( Array )과 리스트 ( List )는 모두 여러 데이터를 한번에 저장하는 자료구조이지만크기 변경 가능 여부 , 메모리 관리 방식 , 성능 및 유연성에서 중요한 차이가 있다. 항목배열 ( Array )리스트 ( List )기본 형태고정 크기 자료구조동적 크기 자료구조네임 스페이스SystemSystem.Collections.Generic 선언 예시 int[ ] arr = new int[3];List list = new List( ); 크기 변경 불가능 ( 고정 )가능 ( 자동 확장 )내부 구조연속된 메모리 블록내부적으로 배열 사용. 필요시 자동 확장인덱스 접근지원 ( arr [ i ] )지원 ( list [ i ] ) 문법▼Arrayint[] numbers = new..
배열 ( Array )
·
⭐C Sharp/15-2. 배열
배열 ( Array )자료구조 ( Data Structure )는 데이터를 효율적으로 저장하고 접근하는 방법을 의미한다.이 관점에서 배열은 기본적이고 단순한 자료구조 중 하나이다.배열은 다음 두 가지 핵심 특징으로 자료구조의 조건을 충족한다.데이터를 연속된 메모리 공간에 저장인덱스를 통해 빠르게 ( 상수 시간 , O(1) ) 접근 가능 자료구조는 크게 선형 ( Linear ) 과 비선형 ( Non - linear ) 로 나눈다.구분자료 구조 예시배열의 위치선형 구조배열 ( Array ) , 연결 리스트 ( Linked List ) , 스택 ( Stack ) , 큐 ( Queue )배열 포함비선형 구조트리 ( Tree ) , 그래프 ( Graph )포함되지 않는다따라서, 배열은 선형 자료구조 ( Lin..
C# 콘솔 색상 제어 ( Console Color Control )
·
⭐C Sharp/00. 문법
C# 콘솔 색상 제어 ( Console Color Control ) Console.ForegroundColor : 콘솔에 출력되는 문자 ( 글자 ) 의 색상을 지정하는 속성이다.Console.BackgroundColor : 콘솔의 배경색을 지정하는 속성이다.이 두 속성은 ConsoleColor 열거형 ( ConsoleColor Enum ) 값을 사용해 색상을 선택한다. 문법Console.ForegroundColor = ConsoleColor.색상명;Console.BackgroundColor = ConsoleColor.색상명; ▼색상 변경 후 기본 색상으로 복원Console.ResetColor(); 예시 코드using System;class Program{ static void Main() ..
프로젝트 진행과정 009
·
📖TIL/🔥Projects
미니게임 005제목 : 스네이크 1. 스네이크 게임의 동작 원리보드 생성뱀 생성매 프레임마다 키 입력 → 이동 → 충돌 판단 → 출력게임 오버 시 종료 2. 보드 초기화board = new char[BoardHeight, BoardWidth];2차원 배열 board[y , x] 에 각 칸의 상태를 저장한다.Wall (#) : 외곽 경계Empty ( ) : 빈 칸Food (●) : 먹이Head (O) : 뱀의 머리Body (o) : 뱀의 몸통콘솔에 그릴 때는 이 board 상태를 한 줄씩 출력한다. 3. 뱀의 데이터 구조snake = new LinkedList();LinkedList 를 채택했다.앞 뒤로 쉽게 추가 / 제거 가 가능해서 , "머리 추가 / 꼬리 제거" 구조에 맞는다. 매 프레임마다 체..
프로젝트 진행과정 008
·
📖TIL/🔥Projects
미니게임 005제목 : 스네이크 발생한 문제와 해결1. 인덱스 배열 범위 벗어남if (nextX = BoardWidth || nextY = BoardHeight){ isGameOver = true; return;}▲벽에 부딪혔는지 , 경계 밖으로 나갔는지 확인하는 충돌 판정 추가 2. 그림이 출력 안되는 문제이거.. 어디서부터 꼬인거지? ▼뱀생성 코드 일부 수정// 뱀 생성LinkedListNode node = snake.First;while (node != null){ Pos p = node.Value; // 마지막 노드 확인 ( 머리 / 몸통 구분 ) bool isHead = (node == snake.Last); if (isHead) { b..
프로젝트 진행과정 007
·
📖TIL/🔥Projects
미니게임 005제목 : 스네이크 지금까지는 아직 나에게 2차원 배열은 생소한 영역이어서 회피했었다.하지만 언제까지 2차원 배열을 안쓸수도 없고, 쓰지 않고 작성하려니 한계가 왔다.요번에는 2차원 배열을 공부하며 열심히 다른 사람 코드도 찾아보면서 구현 또는 구현 시도를 해보자 규칙사방이 막혀있는 네모난 공간에 플레이어가 조종하는 뱀 한마리가 놓여진다뱀은 현재 머리가 향하고 있는 방향으로 멈추지 않고 이동한다플레이어의 조작으로 머리가 진행하는 방향만 바꿀 수 있다.머리 방향은 상하좌우로 방향을 바꿀수 있으며 몸통으로 바로 회전할수 없다.뱀이 벽이나 자신의 몸 일부에 머리를 부딪히면 죽는다목적은 화면에 놓여있는 먹이를 먹는 것이다.먹이를 여러개 스폰해도 되지만, 여기서는 하나를 먹을 때마다 하나가 랜덤으로..
프로젝트 진행과정 006
·
📖TIL/🔥Projects
미니게임 004제목 : 반응속도 테스트▲으악 내가 느림이라니 ㅠㅠ 플레이어의 반응속도를 세번 측정후 평균값을 계산후플레이어의 반응속도의 등급을 출력하자 ▼코드public class Reaction : IGame{ public string Id => "reaction_game"; public string Title => "반응속도 테스트"; public void Run() { Console.Clear(); Console.WriteLine("총 3번의 반응 속도를 측정합니다.\n"); Console.Write("잠시 후 "); Effects.PrintColor("'지금!'", ConsoleColor.Yellow); Cons..
IList<T>
·
⭐C Sharp/00. 문법
List 안에 있는 내용을 피셔 에이츠를 이용해 셔플하고 싶었다.그래서 Util 이란 Class 를 하나 생성해서 따로 관리하려고 한다.private static void shuffle(??? list)그런데 매개변수로 List 을 적게되면,예시로 List 을 적게되면 딱 List 타입만 받을수 있고string[ ] (배열) 같은건 받을수 없게 되는데, 다른 것도 받고 싶으면 어떻게 입력해야 되지? IListIList 는 C# 의 제네릭 컬렉션 인터페이스 중 하나인덱스로 접근 가능한 리스트형 자료구조의 표준 규약 ( 약속 )을 정의한 인터페이스즉, List , T[ ], OvservableColloction 같은 리스트 계열 클래스들이이 인터페이스를 구현 ( implement )해서 동일한 방식으로 ..