일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- HAPTIC
- 길건너 친구들
- 개발
- 드래곤 플라이트
- 드래곤 플라이트 모작
- meta xr
- 팀 프로젝트
- 유니티 Json 데이터 연동
- 연습
- 유니티 GUI
- 유니티
- XR
- OVR
- 포트폴리오
- 오브젝트 풀링
- 유니티 UI
- 가상현실
- 오큘러스
- Photon Fusion
- VR
- 앱 배포
- CGV
- ChatGPT
- meta
- 모작
- 멀티플레이
- Oculus
- 팀프로젝트
- 개발일지
- input system
Archives
- Today
- Total
EasyCastleUNITY
2차원 배열 응용, 맵 만들기 본문
벡터
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
//구조체 : 값형식 -> 스택
//기본생성자 못씀
//상속이 불가, 기본클래스로 못씀
//인터페이스 사용가능
internal struct Vector2
{
public int x;
public int y;
//생성자
public Vector2(int x, int y)
{
this.x = x;
this.y = y;
}
//부모클래스의 virtual 멤버 메서드 재정의
public override string ToString()
{
return $"({this.x},{this.y})";
}
}
}
인덱스 -> 좌표, 좌표 -> 인덱스 (화면좌표계 기준)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class Utils
{
//좌표를 인덱스로
public static Vector2 ConvertPosition2Indices(Vector2 position)
{
return new Vector2(position.y, position.x);
}
//인덱스를 좌표로
public static Vector2 ConvertIndices2Position(Vector2 indices)
{
return new Vector2(indices.y, indices.x);
}
}
}
영웅 캐릭터
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class Hero
{
public string nickName;
public Vector2 position;
int[,] playerMap;
int id;
//생성자
public Hero(int id, string nickName)
{
this.id = id;
this.nickName = nickName;
Console.WriteLine(this.nickName);
}
public void Init(int [,] playerMap,Vector2 position)
{
this.playerMap = playerMap;
this.position = position; //초기 위치 설정
this.UpdatePlayerMap();
// Console.WriteLine(this.position.ToString());
}
//위치를 출력
public void PrintPosition()
{
Console.WriteLine("좌표: {0}",this.position.ToString());
}
//위치를 변경하는 메서드
public void UpdatePosition(Vector2 targetPosition)
{
this.position = targetPosition;
}
//위치가 바뀔때마다 playerMap을 업데이트
void UpdatePlayerMap()
{
Vector2 indices = Utils.ConvertPosition2Indices(this.position);
this.playerMap[indices.x, indices.y] = this.id;
}
//플레이어맵을 출력
public void PrintPlayerMap()
{
for(int i=0;i<this.playerMap.GetLength(0);i++)
{
for(int j=0; j < this.playerMap.GetLength(1); j++)
{
Console.Write("[{0},{1}]:{2} ", i, j, this.playerMap[i,j]);
}
Console.WriteLine();
}
}
}
}
실행
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class App
{
int[,] playerMap= new int[3,3];
//생성자
public App()
{
Hero hero = new Hero(100,"Zave");
hero.Init(playerMap, new Vector2(1, 2)); //초기 위치 정보 및 플레이어맵 초기화
hero.PrintPosition();
hero.PrintPlayerMap();
}
}
}
'C#프로그래밍' 카테고리의 다른 글
2048 (이동 까지만 구현) (0) | 2023.07.25 |
---|---|
2차원 배열을 통한 맵 이동 (워프 히어로) (0) | 2023.07.25 |
1차원 배열을 통한 인벤토리 생성 (0) | 2023.07.25 |
배열 간단 복습 (0) | 2023.07.25 |
2023/07/24 복습 (0) | 2023.07.25 |