Csharp 21

Blazor + Efcore로 웹사이트 만들기 (2)

이제 Efcore를 설치할 차례인데, 정식 명칭은 EntityFramework Core로, 나름 Microsoft의 철학이 녹아든 ORM입니다. 초기부터 Code First, Db First 등과 같이 다양한 방법으로 DB를 제어하는 기능해왔으며, 현재는 이 Entity framework와 유사한 접근 방식을 Node.js에 TypeORM이나 Sequelize 같은 orm 들이 따라하고 있습니다. Db 테이블을 하나의 Entity와 매칭하여 관리하는 것은 굉장히 큰 메리트를 제공하며, Dotnet의 linq, lambda와 함께 "아름다운 코드"를 생성하는 극한의 매력을 선사합니다. 저는 2014년도에 처음 이 Entity framework를 접했고, 당시에 java 코드가 C# 코드랑 거의 똑같다고 생..

Blazor + Efcore로 웹사이트 만들기 (1)

Microsoft에서 만든 웹어셈블리 기술이 Blazor 입니다. 웹소켓 기술인 SignalR과 연계되어, 전통적인 서버사이드 방식 외에도 클라이언트 사이드 방식을 제공하여, 프론트엔드 영역으로까지 확장된 기술이라고 볼 수 있습니다. 국내에서는 거의 활용되고 있지 않지만, 가끔씩 만나볼 수 있습니다. 본 프로젝트의 의의는 C# 이라는 언어 하나만 가지고도 온전한 웹사이트를 구성할 수 있다는데 있습니다. 물론 그럼에도 불구하고 웹에 대한 이해는 반드시 필요합니다. (HTML, CSS, Javascript) 웹에 대한 이해를 바탕으로 C#으로 거의 모든 구성이 가능한 웹서비스, 블레이저(Blazor)를 만나봅시다. 먼저 vs2022에서 프로젝트를 생성해 봅시다. Blazor Web App을 선택하고 다음 버..

[공지] 샘플 코드를 온라인에서 공유드립니다.

지금까지 학습한 내용을 온라인에서 공유드립니다. 소스코드 공유 사이트인 깃헙(www.github.com)을 이용해서 공유드립니다. 깃(git)과 깃헙(github)에 관해서는 프로그램에 대한 이해도가 어느정도 수준에 이르면, 전체적으로 한번 포스트를 작성해 보도록 하겠습니다. 샘플코드 : https://github.com/roslyndev/ExampleProject GitHub - roslyndev/ExampleProject: 블로그 예제 코드 블로그 예제 코드. Contribute to roslyndev/ExampleProject development by creating an account on GitHub. github.com 해당 웹사이트에 접속하면 우선적으로 회원가입부터 진행해 주세요. 깃허브 ..

C# 프로그램 예제연습 - 텍스트게임만들기 - 08

자 이제 그동안 배운걸 총동원해서 Program.cs 에서 게임의 흐름을 작성해 봅시다. 먼저 기존에 작성했던 코드 맨 아래에 Dungeon() 함수를 추가해 줍니다. static void Main(string[] args) { Init(); player.Name = GetUserName(); Hello(player.Name); Dungeon(); } 던전함수는 플레이어가 던전에 입장하면 하게될 전체 로직이 작성될 곳입니다. 최초에 등장할 좀비를 포함하여 총 20마리의 몹을 처치하고, 모두 제거하고 나면 보스인 뱀파이어를 만나야 합니다. static void Dungeon() { IMonsterAction monster = null; //현재 상대할 몬스터입니다. Random random = new Ra..

C# 프로그램 예제연습 - 텍스트게임만들기 - 07

자, 이번에는 이제 보스 몹에 대한 클래스를 만들어 봅시다. Entities폴더에서 우클릭하여 [추가] - [클래스]를 선택합니다. Vampire.cs 를 입력하고 다음과 같이 클래스를 작성합니다. using ConsoleExample.Game01.Abstracts; namespace ConsoleExample.Game01.Entities { internal class Vampire : Monster, IMonsterAction { public Vampire() { this.Name = "뱀파이어"; this.IsDead = false; this.Health = 400; this.Attack = 20; this.Guard = 5; } public string GetName() { return this.N..

C# 프로그램 예제연습 - 텍스트게임만들기 - 06

오늘은 몹들을 등장시키기 위한 작업을 할 겁니다. 제 구상은 이렇습니다. 일전에 배운 배열에 몹들을 랜덤하게 담을 겁니다. 총 20마리의 몹을 배열에 담아서 배열에 있는 모든 몹을 물리치면 보스를 만나고, 보스를 이기면 끝나는 형식이 될 겁니다. 그런데 각기 다른 몹들을 배열안에 일관되게 담고, 동일한 행위를 호출하기 위해서는 이들에게 동일한 기능이 있다는 것을 프로그램에게 알려줘야 합니다. 우리는 그걸 인터페이스(interface)라고 부릅니다. 인터페이스는 규칙이에요! 예를 들어, 교실에서 학생들은 선생님이 정한 규칙을 따라야 해요. 그 규칙에는 일어서기, 문을 열고 닫기, 친구에게 인사하기 등이 있을 거에요. 이렇게 학생들이 지켜야 하는 규칙이 바로 '인터페이스'라고 생각할 수 있어요. 컴퓨터 프로..

C# 프로그램 예제연습 - 텍스트게임만들기 - 05

우리는 기초연습때 콘솔로 이름을 입력 받는 것과 프로그램의 흐름을 함수로 나누는 것을 연습해 보았습니다. 아직 잊은 거 아니겠지요? 이제 그 내용을 복습해 보도록 하겠습니다. 프로그램의 진입점에서 함수를 호출해서 게임이 진행되게 할 겁니다. 먼저 Program 함수 내에 나 자신을 선언해 줘야 하므로, User 클래스를 player란 이름으로 선언해 줍니다. static User player; static void Main(string[] args) { Init(); player.Name = GetUserName(); Hello(player.Name); } 기존에 만들었던 함수와 동일한 구조로 작성하되, 달라진 부분은 User 라는 클래스를 player란 이름의 인스턴스로 만들어서 사용한다는 점만 달라졌..

C# 프로그램 예제연습 - 텍스트게임만들기 - 04

지난 시간에 우린 몹(Monster)에게 공격력과 방어력이라는 공통 항목을 추가해 주는 과정을 통해 상속에 대해 이야기 했습니다. 그런데 공격력과 방어력은 사용자에게도 있어야 겠죠? 그러니 우리 User.cs 에도 동일하게 공격력과 방어력을 넣어줍시다. internal class User { public bool IsDead { get; set; } public string Name { get; set; } public int Health { get; set; } public int Attack { get; set; } public int Guard { get; set; } public User() { this.IsDead = false; this.Name = string.Empty; this.Healt..

C# 프로그램 예제연습 - 텍스트게임만들기 - 03

지난 시간에 이어 이번에는 몹(Monster)를 정의해 봅시다. 우리는 이미 User.cs와 동일하게, IsDead, Name, Health 라는 3가지 옵션을 정의했습니다. 하지만 몹은 종류가 다양하죠. 그래서 몹이라는 동일 카테고리 안에 3가지 유형의 몹을 만들어보고자 합니다. 그리고 3가지 몹은 각기 다른 성향을 가지고 있을 겁니다. 하지만 모두가 공통된 "몹(Monster)" 속성을 가지고 있을 겁니다. 세가지 몹이 몹이라는 공통 속성을 가지기 위해 우리는 "상속"이란 개념을 배우게 될겁니다. 상속은 어떤 물건이나 특징을 다른 것에게 물려주는 개념이에요. 예를 들어, 우리가 가족에서 누군가로부터 물려받는 것을 생각해 볼 수 있어요. 상속을 프로그래밍에 적용하면, 새로운 것을 만들 때 이미 있는 것..

C# 프로그램 예제연습 - 텍스트게임만들기 - 02

오늘은 먼저 User.cs 파일을 열어서 코드를 수정해 보겠습니다. 바로 엔티티(Entity)를 어떻게 정의해 나가는지 같이 보겠습니다. 자 플레이어가 있고, 몹을 잡을 겁니다. 플레이어는 게임이 시작되면 던전에 들어갈거고, 그곳에서 만나는 몹들을 하나씩 처치해서 최종 보스를 처치하면 게임이 클리어 되는 형태가 될 것입니다. 그럼 플레이어에게는 상태라는게 존재하게 되죠. 즉, 살았냐, 죽었냐 라는 걸 판별해야 합니다. 죽었다면 게임은 종료되겠죠. 죽는 과정은 플레이어의 생명력이 감소하기 시작해 0에 도달하면 죽는 거라고 할 수 있겠습니다. 그럼 생명력과 상태라는 두가지 지표가 필요해집니다. 이것을 속성, 즉 어트리뷰트(Attribute)라고 할 수 있습니다. 또한 플레이어에게는 이름을 입력받도록 하겠습니..

반응형