#include"14940.h"
void B14940::Solution()
{
int n, m;
std::cin >> n >> m;
std::vector<std::vector<int>> mapv(n, std::vector<int>(m, 0));
std::vector<std::vector<int>> countv(n, std::vector<int>(m, 0));
std::queue<std::vector<int>> que;
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < m; ++j)
{
std::cin >> mapv[i][j];
if (mapv[i][j] == 2) { que.push({ i,j }); }
}
}
std::vector<int> ver = { 1,-1,0,0 };
std::vector<int> hor = { 0,0,1,-1 };
while (!que.empty())
{
int i = que.front()[0];
int j = que.front()[1];
que.pop();
for (int k = 0; k < 4; ++k)
{
if ((0 <= i + ver[k]) && (i + ver[k] < n) &&
(0 <= j + hor[k]) && (j + hor[k] < m) &&
mapv[i+ver[k]][j+hor[k]] == 1)
{
mapv[i + ver[k]][j + hor[k]] = -1;
countv[i + ver[k]][j + hor[k]] = countv[i][j] + 1;
que.push({ i + ver[k], j + hor[k] });
}
}
//for (int dir = 0; dir < 4; ++dir)
//{
// int ny = y + dy[dir];
// int nx = x + dx[dir];
// if (ny < 0 || ny >= n || nx < 0 || nx >= m) continue;
// if (visited[ny][nx]) continue;
// if (mapv[ny][nx] != 1) continue;
// visited[ny][nx] = true;
// countv[ny][nx] = countv[y][x] + 1;
// que.push({ ny, nx });
//}
}
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < m; ++j)
{
if (mapv[i][j] == 1) { std::cout << -1 << ' '; }
else { std::cout << countv[i][j] << ' '; }
}
std::cout << '\n';
}
}
NetwrokManager
: 연결을 만들고, 세션을 호스팅하고, 클라-서버 통신을 다루는 네트워크 생명주기를 관리한다. Demos/Prefabs/NetworkManager.prefab에 프리팹이 있다.
NetworkHudCanvas
: 네트워크 연결 빠른 테스트 위해 만들어진 UI. 클라이언트로 시작할지 서버로 시작할지 정하는 버튼이 있다. NetworkManager가 로드될 때 어떻게 시작할지 정함. NetworkManager 프리팹 아래 자식에 존재.
튜토
연결 생성
NetwrokManager 아래에 있는 NetworkHudCanvas에서 Auto Start Type을 Host로 변경플레이어 생성
NetworkObject 컴포넌트 추가한 뒤 프리팹화NetworkManager 오브젝트 > PlayerSpawner > Player Prefab에 할당클라 검증 이동
NetworkBehaviour 상속받은 클래스 스크립트 붙여서 움직이게 한다NetworkTransform 컴포넌트를 플레이어에 추가