스킬을 만들기 위한 방법들
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Adventure
{
internal class SKill
{
public string Name { get; set; }
public int Str { get; set; }
public int Mp { get; set; }
public SKill(string name, int str, int mp)
{ //생성자 <
Name = name;
//이름
Str = str;
//공격력
Mp = mp;
//마력
}
}
}
이번에 스킬에 대한 의견이 난무해서 제가 먼저 나서서 해보겠다 의견을 표출했습니다. 그래서 만들어진게 위에 내용이며 저건 프로퍼티화를 시켜 불러오게 하기 위한 기본 셋팅만 진행하며,
sKill = new List<SKill>();
//스킬 목록
if (Job == "전사")
{
sKill.Add(new SKill("전사스킬1", 10, 10));
sKill.Add(new SKill("전사스킬2", 10, 10));
sKill.Add(new SKill("전사스킬3", 10, 10));
}
else if(Job == "마법사")
{
sKill.Add(new SKill("마법사스킬1", 10, 10));
sKill.Add(new SKill("마법사스킬2", 10, 10));
sKill.Add(new SKill("마법사스킬3", 10, 10));
}
else
{
sKill.Add(new SKill("도적스킬1", 10, 10));
sKill.Add(new SKill("도적스킬2", 10, 10));
sKill.Add(new SKill("도적스킬3", 10, 10));
}
}
다른 조의 팀원에게 요청하여 skill 이라는 것들을 List로 만들어서 목록을 표현하기 위해 if문으로 나누어 Job이라는 코드에직업이 들어간다면 그에 맞는 스킬명들이 표현이 되었습니다.
for (int i = 0; i < sKill.Count; i++)
{
Console.WriteLine($"스킬이름: {sKill[i].Name} 스킬공격력: {sKill[i].Str} 스킬소모값: {sKill[i].Mp} ");
}
while이나for문 같은것으로 배열에 저장된 0,1,2의 카운트를 차례로 늘려가며 콘솔창에 띄우는 작업을 진행했습니다.
배틀을 구현하는 사람이 다르다면 그 사람 의견에 맞춰보는것도 중요합니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Emit;
using System.Text;
using System.Threading.Tasks;
namespace Adventure.Charter.Skill
{
public class SKill
{
PlayerInfo player;
private int baseDamage = 10; // 기본 공격력
public void warriorSkill1()
{
if (player.Mp >= 30)
{
player.Mp -= 30;
int totalDamage = baseDamage + (player.Str * 2); // 레벨에 따른 공격력 증가
Console.WriteLine($"전사가 {totalDamage}의 데미지를 입힙니다.");
}
else
{
Console.WriteLine("마나가 부족합니다.");
}
}
public void warriorSkill2()
{
if (player.Mp >= 30)
{
player.Mp -= 30;
int totalDamage = baseDamage + (player.Str * 2); // 레벨에 따른 공격력 증가
Console.WriteLine($"전사가 {totalDamage}의 데미지를 입힙니다.");
}
else
{
Console.WriteLine("마나가 부족합니다.");
}
}
public void wizardSkill1()
{
if (player.Mp >= 30)
{
player.Mp -= 30;
int totalDamage = baseDamage + (player.Str * 3); // 레벨에 따른 공격력 증가
Console.WriteLine($"마법사가 마법을 시전하여 {totalDamage}의 데미지를 입힙니다.");
}
else
{
Console.WriteLine("마나가 부족합니다.");
}
}
public void wizardSkill2()
{
if (player.Mp >= 30)
{
player.Mp -= 30;
int totalDamage = baseDamage + (player.Str * 3); // 레벨에 따른 공격력 증가
Console.WriteLine($"마법사가 마법을 시전하여 {totalDamage}의 데미지를 입힙니다.");
}
else
{
Console.WriteLine("마나가 부족합니다.");
}
}
public void banditSkill1()
{
if(player.Mp >= 30)
{
player.Mp -= 30;
int totalDamage = baseDamage + (player.Str * 4); // 레벨과 민첩성에 따른 공격력 증가
Console.WriteLine($"도적이 뒷통수를 치며 {totalDamage}의 데미지를 입힙니다.");
}
else
{
Console.WriteLine("마나가 부족합니다.");
}
}
public void banditSkill2()
{
if (player.Mp >= 30)
{
player.Mp -= 30;
int totalDamage = baseDamage + (player.Str * 4); // 레벨과 민첩성에 따른 공격력 증가
Console.WriteLine($"도적이 뒷통수를 치며 {totalDamage}의 데미지를 입힙니다.");
}
else
{
Console.WriteLine("마나가 부족합니다.");
}
}
}
}
불러온 List에 조건을 붙여 광역 데미지를 넣는다 던가보다 차라리 class를 만들어 객체를 생성하고 하나하나 불러오는 쪽이 더 편할것 같다는 의견에 기존에 다른 팀원이 만들었던 것으로 리팩토링을 진행하였습니다. 이런식으로 팀원과 협업할때 여러가지를 생성하고 조율하면서 삭제하는것도 꽤나 중요하다고 느낀 점이었습니다.
마무리
조만간 팀프로젝트가 마무리 될 예정이기 때문에 그에 관한 PPT같은것도 만들려면 시간이 참 많이 걸리겠네요, 그래도 매일매일 할일이 늘어나지만 또한편으로는 기쁜 기분도 듭니다.
'스파르탄캠프 > 본격적인 캠프' 카테고리의 다른 글
| 스파르타캠프 Unity 강의 시작 (0) | 2024.05.11 |
|---|---|
| 캠프노베이스의 게임개발(본 캠프) Text RPG 마지막! (0) | 2024.05.09 |
| 노베이스의 게임개발(본 캠프) Text RPG 팀 협업 진행 2탄 (2) | 2024.05.01 |
| 노베이스의 게임개발(본 캠프) 3주차 팀 협업 진행! (0) | 2024.05.01 |
| 노베이스의 게임개발(본 캠프) 3주차 월요일 (0) | 2024.04.29 |