VR/AR 콘텐츠 개발 Unity 프로젝트 기반 메타버스 게임 개발자 양성 수업 5일 차 정리
본문 로딩 중...
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
using System;
using System.Collections.Generic;
using System.Text;
namespace TextRpg
{
internal class ProceduralVersion
{
//캐릭터 스탯 변수화: 플레이어와 몬스터의 정보를 각각 독립된 변수로 선언해야 합니다(예 : int playerHp, int monsterHp, string monsterName 등)
// Player 스탯
string playerName = "용사";
int playerHp = 100;
int playerAttack = 20;
// Monster 스탯
string monsterName = "슬라임";
int monsterHp = 100;
int monsterAttack = 20;
// 전투 진행 상태
bool isRun = false;
int turnCount = 0;
// 전투 루프
while(true) //(playerHp > 0 && monsterHp > 0 && isRun == false) 아래줄로 만들면 true로 작성 가능함 - while 문은 처음부터 true로 만들고 아래에 루프가 탈출하는 조건을 걸어라
{
turnCount++;
// 아래는 게임이 종료 되는 경우
// (예외처리)
if (playerHp <= 0) break; // 플레이어가 사망했을경우
if (monsterHp <= 0) break; // 몬스터가 사망했을경우
if (isRun) break; // 플레이가 도망쳤을 경우
Console.WriteLine("");
Console.WriteLine($"====={turnCount}====");
Console.WriteLine($"[{playerName}] hp : {playerHp}");
Console.WriteLine($"[{monsterName}] hp : {monsterHp}");
Console.WriteLine("");
// 입력 받을 준비
Console.WriteLine($"[{playerName}] 의 턴! 무엇을 하시겠습니까?");
Console.WriteLine($" 1. 공격");
Console.WriteLine($" 2. 연속 공격");
Console.WriteLine($" 3. 도망가기");
int playerChoice = 0;
bool isValidinput = false; // 유효한 입력인 여부를 결정하는 변수
// 입력 검증 단계
do
{
Console.Write("선택 : ");
string input = Console.ReadLine();
if (int.TryParse(input, out playerChoice) && // input을 int로 바꾸는것 검사
(0 < playerChoice && playerChoice< 4)) // int로 바뀐 값이 유효한 범위인지 검사
{
isValidinput = true;
}
else
{
Console.WriteLine($"잘못된 입력입니다 1,2,3 중 하나를 선택하세요");
}
} while (isValidinput == false) ;
Console.WriteLine();
// 플레이어 선택에 따른 분기 처리
switch (playerChoice)
{
case 1:
// 일반공격
monsterHp -= playerAttack;
Console.WriteLine("");
Console.WriteLine($"[일반 공격] : {playerName}의 공격" + $"{monsterName} 에게 {playerAttack}의 데미지!");
break;
case 2:
// 연속공격
Random random = new Random(); // 임의의 수를 만드는 random 객체를 생성해줘!
int attackCount = random.Next(1, 4); //random이라는 객체에게 (1,3) 사이의 하나 값을 반환해줘!
Console.WriteLine("");
Console.WriteLine($"[연속 공격] {playerName} 이(가) 연속 공격을 {attackCount} 만큼 시도!");
for (int i = 0; i < attackCount; ++i)
{
monsterHp -= playerAttack;
Console.WriteLine("");
Console.WriteLine($"[연속 공격] : {playerName}의 공격" + $"{monsterName} 에게 {playerAttack}의 데미지!");
}
break;
case 3:
// 도망가기
isRun = true;
Console.WriteLine($"[도망가기] : {playerName} 은(는) 전투에서 도망쳤다!");
Console.WriteLine();
break;
}
// 몬스터의 턴
if (monsterHp > 0) // 몬스터가 살아있다면
{
playerHp -= monsterAttack;
Console.WriteLine($"[반격] {monsterName}의 반격! {playerName}에게" + $"{monsterAttack}의 데미지!");
}
else // 몬스터가 죽었다면
{
Console.WriteLine($"[처치] {monsterName}이(가) 쓰러졌다!");
}
}
Console.WriteLine("================");
Console.WriteLine("====전투종료====");
Console.WriteLine("================");
if (isRun)
{
Console.WriteLine($"[결과] {playerName}은(는) 무사히 도망쳤습니다.");
}
else if (playerHp <= 0) // 플레이어가 사망했을 경우
{
Console.WriteLine($"[결과] {playerName}은(는) {monsterName}에게 패배했습니다.");
}
else // 몬스터가 사망했을 경우
{
Console.WriteLine($"[결과] {playerName}은(는) {monsterName}에게 승리했습니다.");
}
XR을 활용한 게임 개발 3기(유니티) 수강생입니다. 곧 수료 하지만 앞으로 이곳에 가끔 저의 개발 경험이 나 지식 기록할까 합니다. 더 나아가 이 사이트가 제 개인위키의 역할을 할 수 있으면 좋겠습니다. 한국 게임 시장을 흔들겠습니다

게임 광고 수익은 단순히 광고를 붙이는 것이 아니라, 여러 광고 네트워크를 경쟁시켜 가장 높은 수익을 만드는 구조입니다.

안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.