[Sparta-BCamp] TIL 17 팀 과제진행, 알고리즘 문제 ⭐⭐⭐
카테고리: Til
팀과제 5일차
[o] 9시 ~ 10시 알고리즘 문제
[O] (주) 팀 과제
[X] 5주차 강의듣기(알고리즘).
[X] 7시 강의 못들은거 내일 정리.
1. 알고리즘 문제풀이
문제 17 자연수 뒤집어 배열로 만들기
문자열관련 정리
문제 17 자연수 뒤집어 배열로 만들기
문자열관련 정리
3개의 차이점이 뭘까 알아보기
answer[str.Length-i-1]= int.Parse(str[i]-‘0’).ToString();
answer[str.Length-i-1]= str[i]-‘0’;
answer[str.Length-i-1]= str[i];
public int[] solution(long n) {
string str = n.ToString();
int len = str.Length;
int[] answer = new int[len];
int num = 0;
for(int i = str.Length-1; i>=0 ;i--)
{
//answer[str.Length-i-1]= int.Parse(str[i]-'0').ToString();
answer[str.Length-i-1]= str[i]-'0';
answer[str.Length-i-1]= str[i];
//차이점??
}
return answer;
}
2. 팀 과제
팀과제 던전코드 작업
중간 정리, UI 수정 필요, 포션기능 필요, 하면서 발견하는 거 수정
Dungeon
던전 입장 전 준비
- 1 -> 난이도 선택창으로
- 2 -> 물약사용(미구현)
- 0 -> 나가기(메인으로)
1 - > 난이도 선택창
던전입장, 전투
전투 ( 공격 할 몹 선택 -> 사용 할 스킬 선택)
플레이어 턴 -> 몬스터 턴 반복
방어력 높으면 데미지 1, 치명타 적용
스킬 마나 없으면 평타로 공격.
승리
승리 시 골드,EXP 보상획득, 레벨업 계산, 정보표시
패배
패배 시 메인으로,
패배 후 던전 입장 불가,
휴식 후 입장 가능.
3. Dungeon 관련 코드
DungeonMain.cs
던전 입장, 난이도 선택
DungeonMain.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using TeamProject07.Characters;
using TeamProject07.Controller;
using TeamProject07.Logic;
using TeamProject07.Shop;
using TeamProject07.Utils;
using static TeamProject07.Utils.Define;
using TeamProject07.Skills;
using System.Threading;
namespace TeamProject07.Dungeon
{
internal class DungeonMain
{
Define.MainGamePhase choicePhase = Define.MainGamePhase.temp;
DungeonEntrance Dungeon = new DungeonEntrance();
enum DungeonEntranceSelect
{
exit = 0,
EnterDungeon,
UseItem = 2,
}
public Define.MainGamePhase Entrance(Player player)
{
Dungeon.LoadMonsters();
if (player.IsDead==true)
{
Console.Clear();
Console.WriteLine("\n\t휴식 후 다시오세요");
Thread.Sleep(700);
choicePhase = Define.MainGamePhase.Main;
return choicePhase;
}
DungeonEntranceView();
Console.WriteLine();
Console.WriteLine("원하시는 행동을 입력해주세요.");
int input = CheckValidInput(0, 2);
switch (input)
{
case 0:
Dungeon.Run();
Thread.Sleep(700);
choicePhase = Define.MainGamePhase.Main;
break;
case 1:
Console.Clear();
choicePhase = Define.MainGamePhase.temp;
choicePhase = DungeonDifSelect(player);
if (choicePhase == Define.MainGamePhase.Main)
{
break;
}
Console.WriteLine();
Dungeon.PlayerPhase(player);
Console.WriteLine();
//Thread.Sleep(1000);
break;
case 2:
//포션사용
choicePhase = Define.MainGamePhase.Main;
break;
}
return choicePhase;
}
public Define.MainGamePhase DungeonDifSelect(Player player)
{
DungeonSelectView();
Console.WriteLine();
Console.WriteLine("입장할 던전을 선택하세요.");
int input = CheckValidInput(0, 4);
Console.Clear();
switch (input)
{
case 0:
choicePhase = Define.MainGamePhase.Main;
Dungeon.Run();
Thread.Sleep(700);
Console.Clear();
break;
case 1:
Dungeon.StartDungeon(input);
break;
case 2:
Dungeon.StartDungeon(input);
break;
case 3:
Dungeon.StartDungeon(input);
break;
case 4:
Dungeon.StartDungeon(input);
break;
}
return choicePhase;
}
private void UseItem(Player player)
{
Console.WriteLine("인벤토리 출력");
Console.WriteLine("사용할 아이템 선택");
Console.WriteLine("아이템 효과 보여주기??");
Console.WriteLine("원하시는 행동을 입력해주세요.");
int input = CheckValidInput(0, 2);
switch (input)
{
case 1:
break;
case 2:
break;
case 0:
break;
}
}
private int CheckValidInput(int min, int max)
{
while (true)
{
string input = Console.ReadLine();
bool parseSuccess = int.TryParse(input, out var ret);
if (parseSuccess)
{
if (ret >= min && ret <= max)
return ret;
}
Console.WriteLine("잘못된 입력입니다.");
}
}
private void DungeonEntranceView()
{
Console.Clear();
Console.WriteLine("==================================================");
Console.WriteLine(" ┏ ┓ ◆ ;");
Console.WriteLine(" | | └┼┐ == ");
Console.WriteLine("| | ┌│ ==");
Console.WriteLine("==================================================");
Console.WriteLine("======== 던전에 가기 전 준비를 해주세요. =========\n\n");
Console.WriteLine("==================");
Console.WriteLine("= 1. 던전 입장 =");
Console.WriteLine("= 2. 소모품 사용 =");
Console.WriteLine("= 0. 나가기 =");
Console.WriteLine("==================");
}
private void DungeonSelectView()
{
Console.Clear();
Console.WriteLine("==================================================");
Console.WriteLine(" ┏ ┓ ◆ ;");
Console.WriteLine(" | | └┼┐ == ");
Console.WriteLine("| | ┌│ ==");
Console.WriteLine("==================================================");
Console.WriteLine("======== 던전에 가기 전 준비를 해주세요. =========\n\n");
Console.WriteLine("======================");
Console.WriteLine("= 1. 던전 1 (하) =");
Console.WriteLine("= 2. 던전 2 (중) =");
Console.WriteLine("= 3. 던전 3 (상) =");
Console.WriteLine("= 4. 보스방 (드래곤) =");
Console.WriteLine("= 0. 나가기 =");
Console.WriteLine("=======================");
}
}
}
Dungeon.cs
주요 코드
- LoadMonsters : CSV 파일의 몬스터 정보 Dictionary로 저장하기
- StartDungeon : 던전 시작 시 몬스터수 랜덤, 랜덤몬스터 List에 저장
- PlayerPhase : 플레이어 턴
- monsterPhase : 몬스터 턴
- StageMonsterView : 위험 몬스터 등장 시 효과
- viewMonster : Stage MonsterView 에 사용될 출력부분
- WinBoard : 승리 시 보상, 화면 출력
- LevelUp : 승리 후 경험치 계산, 능력치 UP
TEXT
- Text, View : Run, DungeonEntrance View
- RedText : 빨간글씨(WriteLine), RedTextNo : 빨간글씨(Write)
- BlueText : 파란글씨(WriteLine), BlueTextNo : 파란글씨(Write)
- 다쓰고나서 메서드를 만들어 사용 할 생각이 나서 너무 아쉬웠다.
Dungeon.cs
using TeamProject07.Characters;
using static TeamProject07.Utils.Define;
namespace TeamProject07.Controller
{
enum DungeonEntranceSelect
{
exit = 0,
EnterDungeon,
UseItem = 2,
}
internal class DungeonEntrance
{
public List<Monster> CreateMonsters { get; set; }
public Dictionary<int, Monster> monsterData;
int MonsterNumber;
public void LoadMonsters()
{
string path = MonsterPath;
monsterData = new Dictionary<int, Monster>();
monsterData.Clear();
if (File.Exists(path))
{
using (StreamReader sr = new StreamReader(new FileStream(path, FileMode.Open)))
{
sr.ReadLine();
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
string[] data = line.Split(',');
Monster monster = new Monster(data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9]);
monsterData.Add(monster.Id, monster);
}
}
}
}
public void StartDungeon(int stage)
{
int monsternum = 101;
if (stage == 2) { monsternum = 201; } //난이도
else if (stage == 3) { monsternum = 301; }
else if (stage == 4) { monsternum = 400; }
CreateMonsters = new List<Monster>();
CreateMonsters.Clear();
Random rand = new Random();
MonsterNumber = rand.Next(3, 5); // 3마리~4마리
int MonsterType;
Monster m;
for (int i = 0; i < MonsterNumber; i++)
{
if (monsternum == 400)
{
MonsterType = 400;
MonsterNumber = 1;
Monster monsterinfo = monsterData[MonsterType];
m = new Monster(monsterinfo);
} else {
MonsterType = rand.Next(monsternum, monsternum + 3); //몬스터 데이터 보고 조정
Monster monsterinfo = monsterData[MonsterType];
m = new Monster(monsterinfo);
}
CreateMonsters.Add(m);
//Console.WriteLine($"LV.{monsterinfo.Level} \t {monsterinfo.Name} \t HP : {monsterinfo.Hp} \t ATK : {monsterinfo.Attack},");
}
}
public void PlayerPhase(Player player)
{
Console.Clear();
StageMonsterView();
Console.WriteLine("\n\t전투가 시작됩니다!!");
int killMonsterNum = 0;
while (!player.IsDead)
{
Console.WriteLine($"\n\t {player.Name} 체력 :{player.Hp} \n");
for (int i = 0; i < CreateMonsters.Count; i++)
{
if (CreateMonsters[i].IsDead == true)
{
RedText($"{CreateMonsters[i].Name} 사망");
}
else
Console.WriteLine($"{i + 1}. LV.{CreateMonsters[i].Level} \t {CreateMonsters[i].Name} \t HP : {CreateMonsters[i].Hp} \t ATK : {CreateMonsters[i].Attack}");
}
Console.WriteLine("\n공격할 몬스터를 선택하세요.");
Console.WriteLine("0.도망가기");
int monsterChoice = CheckValidInput(0, MonsterNumber);
Console.Clear();
if (monsterChoice == 0) {
Run();
Thread.Sleep(200);
Console.Clear();
break;
}
Console.WriteLine($"\n\t {player.Name} 체력 :{player.Hp} \n");
//선택된 몬스터의 글자 색이 바뀌는 코드가 추가되면 좋겠어요
for (int i = 0; i < MonsterNumber; i++)
{
if (CreateMonsters[i].IsDead == true)
{
RedText($"{i + 1}. {CreateMonsters[i].Name} 사망");
}
else if (monsterChoice == i+1)
{
Bluetext($"{i + 1}. LV.{CreateMonsters[i].Level} \t {CreateMonsters[i].Name} \t HP : {CreateMonsters[i].Hp} \t ATK : {CreateMonsters[i].Attack}");
}
else
{
Console.WriteLine($"{i+1}. LV.{CreateMonsters[i].Level} \t {CreateMonsters[i].Name} \t HP : {CreateMonsters[i].Hp} \t ATK : {CreateMonsters[i].Attack}");
}
}
Console.WriteLine("\n공격할 스킬을 선택하세요.\n");
Console.WriteLine($"\n\t {player.Name} 체력 :{player.Hp} 마나 : {player.Mp}\n");
Console.WriteLine($"번호 \t이름\t기본데미지\t소모MP");
for (int i = 1; i <= player.Skills.Count; i++) {
Console.WriteLine($"{i}. \t{player.Skills[i].Name} \t{player.Skills[i].Damage} \t{player.Skills[i].Mp}");
}
int skillChoice = CheckValidInput(1, player.Skills.Count);
Console.Clear();
if(player.Mp <player.Skills[skillChoice].Mp)
{
Console.WriteLine("MP가 부족합니다. 평타로 공격합니다.");
Thread.Sleep(1500);
skillChoice = 1;
}
Console.WriteLine($"\n\t {player.Name} 체력 :{player.Hp} \n");
if (CreateMonsters[monsterChoice-1].IsDead == false)
{
player.Mp -= player.Skills[skillChoice].Mp;
BluetextNo($"\n{player.Name} "); Console.Write("가 공격합니다. ");
int damageValue =CreateMonsters[monsterChoice - 1].TakeDamage(player, player.Skills[skillChoice].Damage);
RedTextNo($"\n{CreateMonsters[monsterChoice - 1].Name} "); Console.Write("가 ");
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write($" {damageValue} "); Console.ResetColor(); Console.Write($"의 피해를 받았습니다!\n\n");
Thread.Sleep(1700);
Console.Clear();
if (CreateMonsters[monsterChoice-1].IsDead==true)
{
killMonsterNum++;
}
if (MonsterNumber == killMonsterNum)
{
WinBoard(CreateMonsters, player);
break;
}
}
else
{
Console.WriteLine("잘못 입력하셨습니다. 턴이 소모됩니다.");
}
monsterPhase(player);
}
}
public void monsterPhase(Player player)
{
RedTextNo($"\n몬스터 "); Console.Write("가 공격합니다. ");
for (int i = 0; i < CreateMonsters.Count; i++)
{
if (!player.IsDead)
{
if (!CreateMonsters[i].IsDead)
{
int damageValue = player.TakeDamage(CreateMonsters[i], 0);
BluetextNo($"\n{player.Name} "); Console.Write("이/가");
RedTextNo($" {CreateMonsters[i].Name} "); Console.Write("에게");
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write($" {damageValue} "); Console.ResetColor(); Console.WriteLine($"의 피해를 받았습니다!\n\n");
Console.WriteLine($"\t {player.Name} 체력 :{player.Hp} \n");
Thread.Sleep(300);
}
}
if (player.IsDead)
{
Console.Clear();
Console.Write($" {player.Name} 가 치명상을 입었습니다. 휴식이 필요합니다. ");
//비석 그림
Thread.Sleep(1000);
break;
}
}
Thread.Sleep(500);
Console.Clear();
}
public void StageMonsterView()
{
if ( CreateMonsters == null ) { return; }
viewMonster();
viewMonster();
}
private void viewMonster()
{
for (int i = 0; i < CreateMonsters.Count; i++)
{
if (CreateMonsters[i].Name == "슬라임")
{
RedText("\t강한 몬스터가 등장합니다.");
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(" \r\n \r\n \r\n \r\n +#*** \r\n +#+++*% \r\n ..=@@@@@@.. +#+++*% \r\n @% =@:.....+- \r\n : :. % :+.=- \r\n +-+:+:- .%@@@+. ..=@:#+.. \r\n +. +. ..*++++++%@:. ::::.:::: \r\n -:=% +. -@%+++++++++++*@* @@@@:#@@@ \r\n .@*+++++++++++++++++#+. -@:#= \r\n :#*+++++++++++++++++++++%+ \r\n :**+##+++++++++++++++++%%+++@. \r\n #*+++#@#++++++++++++%%@*++++*@ \r\n %++++++#@#+++++++#@**+++++++++# \r\n .@++++++++++++++++++++++++++++++# \r\n .%*+++++++++***%*++++++++++++++*# \r\n #*+++++**##+++*%%**+++++++++*# \r\n :##*++++++++++++++++++++*##*. \r\n =###################*- \r\n ");
Console.ResetColor();
Thread.Sleep(400);
}
else if (CreateMonsters[i].Name == "고스트")
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\t강한 몬스터가 등장합니다.");
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(" .=- \r\n :=% \r\n .-=## \r\n :=+-==. \r\n *--==. \r\n .-#---+. \r\n.+=-=+-+: ..:=--:.. \r\n.*++..++# .:=+:. .+++.. \r\n.+=+*%=== .*-.*%*: ..:*: \r\n -****: .=*.%@@@@- +@@*.+. \r\n .=- :@@@@+ *@@@=.%. .:. \r\n =: ..***:.*#:.== -*. \r\n -= .=%@@@@@. .* .*=+- \r\n .+- .=#@@%@@. .* =+-+= \r\n -+ .. .* .:*-+: \r\n -: .* -+--=+. \r\n :=. .* :=--+= \r\n .=+. .* .*=***++:\r\n :+. .* .+=+=++=.\r\n -= .* .:---. \r\n :#: .* \r\n -* ..-%=-:. .* \r\n +#===. ..+. .* \r\n .#+ .*#*=*= .* \r\n .=++. .+=..* \r\n .=++= ");
Console.ResetColor();
Thread.Sleep(400);
}
else if (CreateMonsters[i].Name == " 골램 ")
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\t강한 몬스터가 등장합니다.");
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(" \r\n \r\n \r\n .............. \r\n .:==+************@=+. \r\n ..=%*----++++++++----#*=. \r\n .:##---*@*--------*@*---## \r\n :*#=--=%------------@---=#: \r\n :*+----%%----------=@----+* \r\n :*%=----%%=------=%------+* \r\n :*+------=%%%%%%%=-----=# \r\n :*=-------------------@* \r\n :#=-----------------@% \r\n .:#@@@%-------------@@@%. \r\n :*@@%-----+@@@@@@@@#***@@@* \r\n :*%+=#=-------+%*********#%-*@+ \r\n .+%+-=%@@@@@@@@@@@@@@@@@@@@@@#-+@@- \r\n .+*=#@%#*****#@+++++++++@-----+@#--#- \r\n .+#---=##*****#@+++++++++@-----+#---=%: \r\n .+*--=#%##%+++++++++#%*******#@*#*---#: \r\n +@%#+=##*#%---------*#+++++++*@+##--*%@: \r\n +*-=+*##*#%---------*#+++++++*@+#%#*+-%: \r\n-*=---=#*+++*@*******##%%########%#----+*.\r\n:==+####+---=%+++++++++%#********#%###+==.\r\n ....:*#####@%%%%%%%%%@%%%%%%%%%@*.... \r\n :*#++++++++*#----------@+++#* \r\n :**++++++++*#----------@+++#* \r\n .=+++++++++++++++++++++*++++- ");
Console.ResetColor();
Thread.Sleep(400);
}
else if (CreateMonsters[i].Name == "드래곤")
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30);
Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30); Console.WriteLine("\t보스(드래곤) 출현"); Thread.Sleep(30);
Console.Clear();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(" \r\n \r\n @@ @@ \r\n @ @@ @##% \r\n %@%%%@%@ @%##%@@ \r\n %*## @ @@%@%#*%%@ @@ \r\n %#%**% %*#*%#%@ #% \r\n ##%#*#%* ******%%@ %*#% \r\n %##%%**# #*#*###%%% @#*#%%@ \r\n %##%%%***@ *****@ @#%@@@@ #*%%% \r\n #%%%%#****%% @***#***# %%@ #*%%%%% \r\n %#%%%%%%##*********##****####%#*%%%%%%% \r\n #%%%%%%%%%%%%%#***********#**##%%%%%%%% \r\n #%%%%%%%%%%%%%%%%**#*****#*#%%%%%%%%%%%% \r\n ##%%%%%%%%%%%%%%%%%#********%%%%%%%%%%%%% \r\n %%%%%%%%%%%%@@ @********#@@%%%%%%%%%% \r\n %%%%%%%%%%@@ %#*************@ @%%%%%%%% \r\n %%%%%%%%@%##********##*****% @ @%%%# \r\n %%%%%%@ %#********#******#% @%%%% \r\n %%%@ #**#***********##% %% \r\n %%% @*******##*###****## @@ \r\n %% #****%% %***# @@ \r\n @@ @**#*##@ @**#@ \r\n @ #**%%%%%%%%%@@#*#%@% \r\n @*++*++@ #####*@ \r\n % \r\n ");
Console.ResetColor();
Thread.Sleep(1000);
}
Console.Clear();
if (CreateMonsters[i].Name == "슬라임")
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\t강한 몬스터가 등장합니다.");
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(" =+. \r\n =#%*+#=. \r\n - .- -=**==.%*++++@: \r\n *=:*-.=+.- -+. +*#####*. \r\n *-:*.=* =: \r\n .-* :.*: %* \r\n *.-%:#::#: .*= \r\n :% :* .*#::#+ \r\n .:*@=:. \r\n ..:#+++++%@-. \r\n ..=@+++++++++++#-. . . \r\n .:%++++++++++++++++#:. ..% %.. \r\n :@++++++++++++++++++@+ \r\n :@++++++++++++++++++++*%- .:% %:: \r\n :%**@%+++++++++++++++%#+++%: : : \r\n #*+++#@#+++++++++++%@#*++++@- \r\n @+++++*@%++++++++#%#*+++++++%: \r\n .*#++++++*##+++++#%%#+++++++++%: \r\n :@++++++++++++++++++++++++++++%: \r\n .*#++++++++*###*+++++++++++++#*. \r\n @+++++++*%+++#%*+++++++++++@- \r\n :#*++++*%++++++#%*+++++++*#: \r\n :%*+++++++++++++++++*%%: \r\n :@@@@@@@@@@@@@@@@@+ \r\n ");
Console.ResetColor();
Thread.Sleep(400);
}
else if (CreateMonsters[i].Name == "고스트")
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\t강한 몬스터가 등장합니다.");
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(" \r\n .*. \r\n .#**: \r\n .:*-*. \r\n .:+-=.. \r\n .+*-+*-. \r\n ..::::. *+:%==. \r\n .**. .:++:. .+=+==. \r\n -*:... .+#*----. \r\n.--. :=.+@@@.:%@@@#.:=. \r\n -%%- -:-@@@@. =*: -=. \r\n .+=#. +.#@%:.:%@@#. ..*. \r\n .==-=. * +@@@@@%: .-: \r\n.-#=-+: * :#%#+.... ++. \r\n.=+--*- *: =: \r\n :+--+%*. -: :#:. \r\n.++#+=+-* -: .@- \r\n.*=+++*+- -: .+: \r\n .-*##*. -:. :=. \r\n :=. :#. \r\n :=. :+ \r\n :=. .:*+===#=:#: \r\n :+. :*=-+=. .++. .... \r\n .+- -*. .:###*.. \r\n .+=:. ");
Console.ResetColor();
Thread.Sleep(400);
}
else if (CreateMonsters[i].Name == " 골램 ")
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\t강한 몬스터가 등장합니다.");
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(" .========:. .:========:.\r\n .++=-----*+. .+*------#*:\r\n :#-------++. .++-------#-\r\n :#-------++.-*+++++++++++*%*+.++-------#-\r\n :##%#####%%*=---*#######=---++%#+######+.\r\n .=+-----+#=--*%*--------+%#---#+------#-.\r\n -*----=#=---#*----------=%---*%=-----#-.\r\n :*=---=#=---=#*--------=*#----#%+===+#-.\r\n =*++**%#----=**++++++##=----=*+==+#%=. \r\n .**=--=#*------=======------##----=#-. \r\n +#=---##=-----------------#*+*++*%=. \r\n .*+-+*+-*@#=------------*@#----*+.. \r\n -%#---**--+*#%#*****%%%%%%=-+@+. \r\n =%##*-------+%*********#%%-. \r\n -%%*******#%%%%%%%###%@=. \r\n .*#*****%*+++++++*%----=*:..:. \r\n ..:#######%#********%=====#=..... \r\n ..*##%#+=======*%*******#%*@: ... \r\n .##*%*--------+#+++++++##+%: \r\n .%##%#++++++++#%*******#%*@: \r\n .#=---##++++++++##********@::. \r\n .#=---##++++++++##********@: \r\n .%%%%%%%%%%%##########@%%%@: \r\n .#*+++++++*#=--------=%+++%: \r\n .###########**********%###%: ");
Console.ResetColor();
Thread.Sleep(400);
}
Console.Clear();
}
}
public void WinBoard(List<Monster> monster, Player player)
{
int rewardGold= 0;
int rewardExp= 0;
for (int i = 0; i < monster.Count; i++)
{
rewardGold = rewardGold + monster[i].Gold ;
rewardExp = rewardGold + monster[i].RewardExp;
}
player.Gold += rewardGold;
player.LevelUpExp += rewardExp;
Console.WriteLine($"\n\t\t{player.Name}님 승리하셨습니다!\n");
Console.Write($"\t획득한 골드 : "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write($"{rewardGold}\n"); Console.ResetColor();
Console.Write($"\t획득한 EXP : "); Console.ForegroundColor = ConsoleColor.Blue; Console.Write($"{rewardExp}\n\n"); Console.ResetColor();
LevelUp(player);
Console.WriteLine($"\n\t{player.Name} 정보");
Console.WriteLine($"\tGold : {player.Gold}");
Console.WriteLine($"\tLevel : {player.Level} , EXP : {player.LevelUpExp}");
Console.WriteLine("\n\n\t\t0.돌아가기");
switch (CheckValidInput(0, 0))
{
case 0
:
//dungeonEnter();
break;
}
// stage++;
}
public void LevelUp(Player player) {
int levelUpPoint = player.Level* player.Level * 100;
int UpHp;
int UpDefence ;
int UpAttack;
while (player.LevelUpExp > levelUpPoint)
{
player.Level++;
// 수치 조정
UpHp = player.Level * 10;
UpDefence = player.Level * 1;
UpAttack = player.Level * 2;
player.MaxHp += UpHp;
player.Hp = player.MaxHp;
player.Defence += UpDefence;
player.Attack += UpAttack;
player.LevelUpExp -= levelUpPoint;
Console.WriteLine($"레벨업! Level : {player.Level} 가 되었습니다.");
Console.WriteLine($"체력 + {UpHp} 공격력 + {UpAttack} 방어력 + {UpDefence}");
Thread.Sleep(400);
levelUpPoint = player.Level * player.Level * 100;
}
}
public void Run()
{
Console.Clear();
Console.WriteLine("===================== RUN ========================");
Console.WriteLine("==================================================");
Console.WriteLine(" ┏ ┓ ; ◆ ");
Console.WriteLine(" | | ==┌┼┘ ");
Console.WriteLine("| | == │┒ ");
Console.WriteLine("==================================================");
}
public void DungeonEntranceView()
{
Console.WriteLine("==================================================");
Console.WriteLine(" ┏ ┓ ◆ ;");
Console.WriteLine(" | | └┼┐ == ");
Console.WriteLine("| | ┌│ ==");
Console.WriteLine("==================================================");
Console.WriteLine("======== 던전에 가기 전 준비를 해주세요. =========\n\n");
Console.WriteLine("==================");
Console.WriteLine("= 1. 던전 입장 =");
Console.WriteLine("= 2. 소모품 사용 =");
Console.WriteLine("= 0. 나가기 =");
Console.WriteLine("==================");
}
public int CheckValidInput(int min, int max)
{
while (true)
{
string input = Console.ReadLine();
bool parseSuccess = int.TryParse(input, out var ret);
if (parseSuccess)
{
if (ret >= min && ret <= max)
return ret;
}
Console.WriteLine("잘못된 입력입니다.");
}
}
public void RedText(String s)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"{s}");
Console.ResetColor();
}
public void RedTextNo(String s)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write($"{s}");
Console.ResetColor();
}
public void Bluetext(String s)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine($"{s}");
Console.ResetColor();
}
public void BluetextNo(String s)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write($"{s}");
Console.ResetColor();
}
}
}
4. 정리, 잡담
잡담
오늘 던전코드 전체적인 부분을 잡고 완성되어간다. 오늘은 view부분에 시간을 많이 쓴 거 같은데 기능하는 거 보다 보이는게 있어서 재밌었다… 민지님이 픽셀로 그려주신 거 넣었는데 슬라임귀엽다. 용가리는 무섭다. view부분에서 재밌게 작업할 수 있었다.
내일 마무리 작업하고 팀 프로젝트 이후 밀린강의, 개인공부를 해야겠다.
[Unity] TIL 17
댓글남기기