티스토리 뷰

C#/수업 내용

1.16 수업내용

Game Client Lee Hwanguk 2023. 1. 16. 18:29

*복습 필요
1.대리자 (익명메서드,람다식/문, Action/Func)
2.컬렉션(딕셔너리), for문과 foreach문을 이용하기
3.파일 직렬화,역직렬회
4.알고리즘문제나머지
#다이어그램을 그리면서 만들어보자
면접을 위한 cs전공지식 노트(도서)
---------------------------------------------------------------------
---------------------------------------------------------------------
#1.16 수업내용
#연습1 (Hero,Inventory,Item(Item Data) ItemInfo,GameInfo(저장)
1.아이템 데이터 테이블(exel)
2.exel을 json으로 가공한다->맵핑 클래스 만들기(xxx.Data.cs)
3.필요한 클래스 정의 ->클래스 생성(어떤 기능? )
4.신규유저/기존유저 판단, GameInfo객체 생성
5.세부 기능 구현
6.저장기능 구현


*game_info.json 파일을 가지고 신규유저/기존유저 판별
신규유저-> game_info.json 생성/저장
기존유저->game_info.json 파일 불러와서 역직렬화
*신규유저일경우
GameInfo 객체에 item들이 없다
*기존유저일경우
GameInfo 객체에 획득한 item들이 있다
---------------------------------------------------

GameInfo
-List<Item>

{
   "items"
[
{
"name":장검, "damage":10
}

*아이템 데이터 테이블로 만들어져야한다
id name damage
-------------------------------
100 장검 10
101 단검 5

데이터 테이블 ->item_data.json 파일로 가공
역직렬화 하기 위한 매핑/바인딩 클래스(ItemData)필요

#Hero (클래스 생성)
[데이터]
string name
Inventory inventory
---------------------
[기능]
GetItem(아이템): 획득한 아이템을 inventory에 넣는다

#Inventory
----------------------
[데이터]
List<Item>items
---------------------
[기능]
AddItem(아이템):컬렉션(items)에 저장

#획득한 아이템은 Hero의 가방(인벤토리)안에 있음

Item
-----------------------
[데이터]
Item Data itemData



1. 아이템 데이터 테이블 만들기 

2. 엑셀 -> json  (가공) -> 매핑클래스 만들기 (xxxData.cs)

3. 필요한 클래스 정의 -> 클래스 생성 

4. 신규유저, 기존유저 GameInfo 객체를 만들기 

5. 세부 기능 구현 

6. 저장기능 구현 
------------------------------------------------------------------
-----------------------------------------------------------------
#디자인 패턴
-자주 등장하는 공통된 문재들에 대해 이미 알려진 해결책.... 디자인 패턴
-코드로 제공되있는건 아님
-클래스,인터페이스,타입들이 어떻게 상호 연관되는지를 패턴으로 알려줌
-너무 의존할필요는 없다.

-1.생성패턴 2.구조패턴 3.행위패턴

*(생성패턴)Singleton 패턴 (싱글톤,싱글턴)  # 보통 ****Manager(){}; 으로 만든다.
->하나의 클래스가 하나의 인스턴스만 갖도록 제한한다.
->전역범위에서 그 인스턴스를 엑세스할 수 있게 하는 패턴이다.
->시스템 전체에 걸쳐 하나의 인스턴스가 모든 처리를 조율하는 곳에 유용
->일반적으로 클래스의 생성자를 private으로 만들고
->클래스 안에서 이 private생성자를 호출해 하나의 인스턴스만 생성하는 방법
->singleton 인스턴스는 클라이언트가  처음 singleton인스턴스를 엑세스할 때 생성됨
->프로그램이 종료될때 까지 동일한 인스턴스를 사용하게 됨 (static)

*readoly ->맴버변수 앞에 쓸수있음(get; 과 똑같다(쓰기전용))
*static ->형식으로 접근가능 (ex) App.hp;) / 생성 이후 프로그램이 종료될때 까지 쓰인다
______________________________________________________________________________
_______________________________________________________________________________

#tree (자료구조) - 알고리즘 문제에 자주 나옴

*배열,(연결)리스트,Queue,Stack등 자료구조는 선형적으로 나열되어있는 선형적(일직선으로) 자료구조
*연결리스트?
*그래프-선형적으로 나열되어있지 않고 노드들이 가지처럼 연결되어있는 비선형적 자료구조(계층적 자료구조)
*계층적 자료구조로 Root(루트)로부터 출발하여 자식 노드 들을 가지는 구조(그 사이를 이어주는 Edge)
*레벨-루트노드로부터 수평적 싶이 (루트부터 1레벨)
*계층적인 데이터를 저장하는데 유용하다.
*N링크 표현법/LCRS표현법(왼-자식/오-형제)
*PrintLevelOrder() -레벨 순으로 즉 위에서부터 가로방향으로 트리노드를 출력하는 메서드(안되면 외워라)
*LevelOrder->Queue , 각 레벨의 형제 노드를 출력해 나가면서 혹시 그 형제노드 밑에 자식노드가 있으면
이를 Queue에 넣는다. 형제노드가 모두 출력되면(즉, 그 레벨에 대한 출력이 끝나면, Queue에서 자식노드를 꺼내 그자식의 형제노드를 위와 동일한 방식으로 처리)



'C# > 수업 내용' 카테고리의 다른 글

Event와 delegate  (0) 2023.02.24
Item 저장, 직렬화/역직렬화  (0) 2023.01.13
json형식 직렬화, 역직렬화  (0) 2023.01.13
Linq 연습  (0) 2023.01.12
대리자  (0) 2023.01.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함