TIL_231122

Z_제트·2023년 11월 22일
0

TODAY I LEARNED

목록 보기
18/88

to do_오늘 할 일

  • 알고리즘 문제풀기
  • 팀 프로젝트 전반적인 흐름, 코드 이해하기

retro_오늘 한 일(회고)

팀플 - 담당 작업 설명

조원분들과 서로 작업한 내용 공유하며 설명하는 타임 ~!


나의 작업 리스트 :

  • BattleScene 뼈대 생성(UI 연동, 플레이어 & 적 위치 설정, Scene 연결)
  • 랜덤 출현 구현(거의 저는 돌아가는 틀만 짰죠 하하하)
  • 랜덤 출현한 적들에게 컨트롤러 적용
  • 플레이어의 공격 구현


배틀 스테이지에 입장하면 적 랜덤 출현
(만들어주신 BattleUtility 쪽 함수 이용해서 리스트로 출현한 적들 모아두기)

BattleUtility.cs ↓

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using W3_TeamProject.Enemies;

namespace W3_TeamProject
{
	/// <summary>
	/// BattleScene에 적용할 기능들을 모아놨습니다.
	/// </summary>
	internal class BattleUtility
	{
		Random random = new Random();

		public List<BaseEnemy> GetEnemyList(int _level) //레벨 값을 받으면 층에 해당하는 레벨을 출력
		{
			List<BaseEnemy> enemyList = new List<BaseEnemy>();


			for(int i=0; i <random.Next(1,5); i++)
			{
				SpawnEnemy(i, enemyList, _level);
			}
			return enemyList;
		}

		public void SpawnEnemy(int idx , List<BaseEnemy> enemyList, int _levelValue)
		{
			// 생성할 몬스터의 범위와 맞아야 함!!
			int rng = random.Next(0, 5);

			int level;
            if (_levelValue == 1) //1층이면 1 ~ 3렙 몬스터 
                level = random.Next(1, 4);
            else
                level = random.Next(4, 7);

            switch (rng)
			{
				case 0:
					{
						enemyList.Add(new Slime(level));
						enemyList[idx].SetLocation(idx);
						break;
					}
				case 1:
					{
						enemyList.Add(new Goblin(level));
						enemyList[idx].SetLocation(idx);
						break;
					}
				case 2:
					{
						enemyList.Add(new Rtan(level));
						enemyList[idx].SetLocation(idx);
						break;
					}
				case 3:
					{
						enemyList.Add(new Zombie(level));
						enemyList[idx].SetLocation(idx);
						break;
					}
				case 4:
					{
						enemyList.Add(new Coffee(level));
						enemyList[idx].SetLocation(idx);
						break;
					}

			}
		}
	}
}



while 문으로 endPoint = 0 (= 계속 플레이 상태 (승리x 패배x)) 일 때
컨트롤러 연결해서 공격/방어/스킬/아이템 목록 커서 이동.
* break 걸어서 endPoint 가 0 이 아니면 while 문 빠져나오도록.


랜덤 출현한 적이 IsDie true 할때마다 countIsDie 에 숫자를 넣어서, countIsDie 와 enemyListForStage.Count 가 동일해지면,
모든 적이 죽었다는 의미이니 이 때 endPoint 를 1 로 변경.
(아이디어 제공 감사합니다 :) )


플레이어의 공격
-- isPlayerTurn 이 true 이면 플레이어의 턴 (false 면 적의 턴)
-- 공격하는 함수(NormalAttack()) 를 bool 값을 return 하도록 아이디어 제공받음. :)
-- NormalAttack() 함수에 가면
-- 랜덤 스폰된 적에 맞춰서 컨트롤러 세팅
-- damage 는 랜덤한 값으로 (from 기본+장착공격/2 to 기본+장착공격), 공격 후에는 return false. (= 적의 턴이 되도록)
-- 선택한 적이 이미 죽었다면 다른 적을 선택하도록 문구를 띄우고 return true 로 설정. (= 적의 턴으로 넘어가지 않고 플레이어의 턴이 되도록.)




profile
trying to make the world a better place with a cool head and warm heart

0개의 댓글