(상위)직업 클래스
(하위)
광전사 생성자
용기사 생성자
원소 마법사 생성자
기사가 공격력, HP, 방어력 가장 높음/ 치확,치피 보통/mp,마나회복율 낮음
전사는 치피, 치확 높음, 회피율 /공격력,HP보통, 방어력, 마나회복율 보통/ mp낮음
마법사는 치피,치확 ,Mp , 마나회복율 높음/ - / 공격력, HP , 회피율, 방어력 낮음
MP
MP회복율
치명타확률
치명타 피해
회피율
하위 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Text;
using System.Threading.Tasks;
namespace TextRPG_18
{
public class Job
{
public string name;
public int hp;
public int mp;
public int atk;
public int def;
public float criticalChance;
public float criticalDamage;
public int turn =0;
public bool turnfalse = false;
public string Skill_name1;
public string Skill_name2;
//회피율 (공통) , 기본 공격력 업 (전사) 치명타 확률(기사), 치명타 피해량(마법사)
public Job(string name, int hp, int mp, int atk, int def, float criticalChance, float criticalDamage)
{
this.name = name;
this.hp = hp;
this.mp = mp;
this.atk = atk;
this.def = def;
this.criticalChance = criticalChance;
this.criticalDamage = criticalDamage;
}
public void Pick(Player player) // 직업선택시 스택 적용
{
playermax.maxHp = hp;
playermax.maxmp = mp;
playermax.atk = atk;
playermax.dfs = def;
player.hp = this.hp;
player.mp = this.mp;
player.atk = this.atk;
player.def = this.def;
player.criticalChance = this.criticalChance;
player.criticalDamage = this.criticalDamage;
//player.type = type();
}
public virtual int type()
{
return 0;
}
public virtual void skill_1(List<Monster> mon, Player player) //범위계
{
}
public virtual void Skill_2(Player player) //서포터
{
}
public virtual string GetName1()
{
return "DefaultName1";
}
public virtual string GetName2()
{
return "DefaultName1";
}
public virtual bool Initialization(Player player)//초기화
{
return false;
}
}
public class Warrior : Job
{
public string Skill_name1 = "광 : 마나 10을 사용해 모든 몬스터에게 참격을 가합니다";
public string Skill_name2 = "굶주림 :자신의 전체 피에서 20% 깎고 기본 공격력을 30%증가시킵니다 (3턴동안)";
public Warrior(string name, int hp, int mp, int atk, int def, float criticalChance, float criticalDamage) : base(name, hp, mp, atk, def, criticalChance, criticalDamage)
{
}
public override int type()
{
return 1;
}
public override void skill_1(List<Monster> mon, Player player)
{
player.mp -= 10;
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("\n마나 10이 소비되었습니다.");
Console.WriteLine(player.name + " (이)가 거대한 참격을 준비합니다!");
Console.ResetColor();
Thread.Sleep(500);
Console.WriteLine($"=====================================================");
foreach (var item in mon)
{
item.hp -= player.PlayerDamage();
Console.WriteLine($"\n{player.name} (이)가 {item.name}을(를) 공격!");
Console.WriteLine($"{item.name}은(는) -{player.atk}의 데미지를 입었다!\n");
Thread.Sleep(600);
if (item.hp <= 0)
{
item.hp = 0;
item.live = "dead";
}
}
Console.WriteLine($"=====================================================");
}
public override void Skill_2(Player player)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("\n 전체 HP에서 20%이 감소되었습니다.");
Console.WriteLine($" {player.name} (이)가 피에 굶주림니다. 공격력이 30%증가합니다");
Console.ResetColor();
turnfalse = true;
player.hp -= (int)(playermax.maxHp * 0.2); //20% 빠짐
player.atk += (int)(atk * 0.3); //30% 증가
}
public override string GetName1()
{
return Skill_name1;
}
public override string GetName2()
{
return Skill_name2;
}
public override bool Initialization(Player player)//초기화
{
if (turnfalse)
{
if (turn >= 3)
{
turnfalse = false;
turn = 0;
player.atk = playermax.atk; //다시 돌려놓기
return true;
}
else return false;
}
else return false;
}
}
public class Kinght : Job
{
public string Skill_name1 = "격 : 마나 10을 이용해 모든 몬스터에게 용의 힘을 발산합니다 ";
public string Skill_name2 = "용기: 마나 10을 이용해 자신의 방어력을 30% 증가시킵니다";
public Kinght(string name, int hp, int mp, int atk, int def, float criticalChance, float criticalDamage) : base(name, hp, mp, atk, def, criticalChance, criticalDamage)
{
}
public override int type()
{
return 2;
}
public override void skill_1(List<Monster> mon, Player player)
{
}
public override void Skill_2(Player player)
{
}
public override string GetName1()
{
return Skill_name1;
}
public override string GetName2()
{
return Skill_name2;
}
}
public class Mage : Job
{
public string Skill_name1 = "화 : 마나 15를 이용해 적 모두에게 파이어 볼을";
public string Skill_name2 = "욕망: 마나 15를 이용해 자신의 치명타 피해를 30% 증가합니다";
public Mage(string name, int hp, int mp, int atk, int def, float criticalChance, float criticalDamage) : base(name, hp, mp, atk, def, criticalChance, criticalDamage)
{
}
public override int type()
{
return 3;
}
public override void skill_1(List<Monster> mon, Player player)
{
foreach (var item in mon)
{
//
}
}
public override void Skill_2(Player player)
{
}
public override string GetName1()
{
return Skill_name1;
}
public override string GetName2()
{
return Skill_name2;
}
}
}
광전사 스킬 1 구현
광전사 스킬 2 구현
광전사 스킬 턴 횟수 초기화 구현
직업(2) 스킬1, 2
회복율 변수 추가
마나 회복 추가
일반 공격, 스킬 공격 치명타 적용
몬스터 피격 방어 적용
회피율 적용
상태보기에 변수 업데이트
장비추가할때 스테이터스 어떻게 증가하는지 확인
팀원 회복 아이템 어떤 구조로 증가하는지 확인
아이템 꼈을때 스킬로 버프 주면 제대로 돌아오는지 확인
몬스터 피격 받을때 방어력 적용 되는지 확인
case안에 있는것은 함수로 빼주기
enum: 구조체는 가능
region, endregion 로 열고 닫기 가능
메인업데이트 된거 브런치에 가져오기 : brunch -> Update From Main
깃 데스크탑 잘 모르겠으면 주석으로 테스트 하기 (근데 이건 현재 브런치 다하고 해야함)