일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Material
- C#
- 기초
- Class
- 파이썬
- UE5
- 백준
- Unity
- Tutorial
- dfs
- c++
- github
- w3school
- 프로그래밍
- 문제풀이
- W3Schools
- Programming
- 오류
- Basic
- String
- 시작해요 언리얼 2022
- parameter
- guide
- python
- DP
- dynamic
- loop
- Algorithm
- 재귀
- Unreal Engine 5
- Today
- Total
행복한 개구리
C# 21.03.26.수업내용 본문
엑셀에 데이터 작성할 때 빈 내용은 기본값으로 지정한다.ex) int 0, string null, bool false etc
============================================================================
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
namespace Study004
{
public class App
{
private List<QuestInfo> questinfos;
public App()
{
Console.WriteLine("App");
DataManager.GetInstance().LoadQuestData("./quest_data.json");
DataManager.GetInstance().LoadMonsterData("./monster_data.json");
DataManager.GetInstance().LoadRewardData("./reward_data.json");
string json = File.ReadAllText("./quest_data.json");
QuestInfo[] questInfos;
bool exist = File.Exists("./quest_info.json");
if (exist == true)
{
Console.WriteLine("기존유저입니다.");
string save = File.ReadAllText("./quest_info.json");
questInfos = JsonConvert.DeserializeObject<QuestInfo[]>(save);
}
else
{
Console.WriteLine("신규유저입니다.");
questInfos = JsonConvert.DeserializeObject<QuestInfo[]>(json);
File.WriteAllText("./quest_info.json", json);
}
Console.WriteLine("게임을 시작합니다.");
QuestData quest1 = DataManager.GetInstance().dicQuestDatas[601];
QuestData quest2 = DataManager.GetInstance().dicQuestDatas[602];
Console.WriteLine("======================================================");
//퀘스트 이름 || 진행/목표
int count1 = 0;
Console.WriteLine("{0} {1}/{2}", quest1.name, count1, quest1.goal_count);
int count2 = 0;
Console.WriteLine("{0} {1}/{2}", quest2.name, count2, quest2.goal_count);
//버튼 생성
Button btn = new Button();
//이벤트 등록
btn.onClick += (sender, args) =>
{
PrintQuestDetails(quest1);
Console.WriteLine("======================================================");
PrintQuestDetails(quest2);
};
//5초후
for (int i = 0; i < 3; i++)
{
Console.WriteLine("Loading {0}sec...", i + 1);
Thread.Sleep(1000);
}
btn.Click();
}
private void PrintQuestDetails(QuestData questData)
{
Console.WriteLine("***** 목표 *****");
string goalDesc = string.Format(questData.goal_desc, questData.goal_count);
Console.WriteLine(goalDesc);
Console.WriteLine("***** 내용 *****");
Console.WriteLine(questData.desc);
Console.WriteLine("***** 보상 *****");
RewardData reward1 = DataManager.GetInstance().GetRewardType(questData.reward_type_id1);
RewardData reward1_2 = DataManager.GetInstance().GetRewardType(questData.reward_type_id2);
Console.WriteLine("{0}:{1}, {2}:{3}", reward1.name, questData.reward_amount1, reward1_2.name, questData.reward_amount2);
}
}
}
어제한거에 유저 판별하는 코드만 추가했다.
이 다음에 다시 실행하면
이와 같이 신규유저는 info파일에 data가 기본으로 들어가 저장이 되어서 두번째 실행부터는 기존유저로 분류된다
============================================================================
Thread
닷넷에서 thread는 작업자 한 명을 나타냅니다. 다중 스레드 또는 다중 스레딩은 여러 작업자를 두고 동시에 여러 작업을 처리하는 것을 의미한다.
C#의 메인스레드는 순차적으로 작업을 처리하며 다중스레드를 사용하면 다발적으로 작업을 처리하게된다. (동시는 아님. 전환되는 시간이 짧아서 동시같아 보이는 것.)
thread는 프로그램이 실행되는 시점에 생긴다.
Process : 실행파일이 실행되어 메모리에 적재된 인스턴스(현재 실행중인)
Thread : 프로세스내에서 실행되는 흐름의 단위
C#에서 스레드를 만들때는 System.Threading 네임스페이스에 정의된 ThreadStart 대리자를 사용해야한다.
Priority : 스레드의 우선순위를 결정한다. ThreadPriority 열거형의 Highest, Normal, Lowest가 있다.
Abort() : 스레드를 종료시킨다
Sleep() : 스레드를 설정된 밀리초(1/1000초)만큼 중지시킵니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Diagnostics;
namespace Study801
{
class App
{
public App()
{
Console.WriteLine("App");
Account account = new Account(10000);
Console.WriteLine(account.balance);
Customer customer1 = new Customer("곽태철", account);
Customer customer2 = new Customer("곽중철", account);
customer1.Withdraw(100);
customer2.Withdraw(100);
Thread t1;
Thread t2;
Thread t3
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace Study801
{
class Customer
{
public string name;
public Account account;
private Thread t;
public Customer(string name, Account account)
{
this.name = name;
this.account = account;
}
public void Withdraw(int amount)
{
t = new Thread(new ThreadStart(() =>
{
this.account.balance -= amount;
Console.WriteLine("{0}, {1}", this.name, this.account.balance);
}));
t.Start();
}
}
}
'C# > 수업내용' 카테고리의 다른 글
C# 21.03.29.수업내용 (0) | 2021.03.29 |
---|---|
C# 21.03.25.수업내용 (0) | 2021.03.25 |
C# 21.03.24.수업내용 (0) | 2021.03.24 |
C# 21.03.23.수업내용 (0) | 2021.03.23 |
C# 21.03.22.수업내용 (0) | 2021.03.22 |