좋아, 우선, 여기에 내 첫 번째 게시물이며 일반적으로 얻을 수 있고 간단히 대답을 검색 할 수 있습니다. 이 답변을 찾을 수 없습니다.roguelike 엔진에 대한 간단한 타일 맵에 관한 문제
저는 코딩의 초보자입니다. (저는 주로 기초를 알고 많은 비디오를 보았고 C#에 관한 많은 자습서를 읽었습니다) ASCII 콘솔 "게임"을 코딩하려고합니다. 모든 것이 잠시 동안 꽤 잘 진행되었지만 이제는 매핑 부분에 붙어 있습니다. 처음에는 모든 좌표를 수동으로 벽에 입력 할 것이라고 생각했습니다. 그러나 나는 그것을 더 많은 객체 지향적 인 방법으로 그렇게 Tile 클래스를 생성하는 것이라고 설명하는 게시물을 발견했다. I 콘솔의 특정 부분에 타일을 제한하기 때문에
public class Tile
{
public int X { get; set; }
public int Y { get; set; }
public bool IsWall { get; set; }
}
다음 홀수 시작 X와 Y 값이
private static void PopulateTiles()
{
for (int x = 1; x < 159; x++)
for (int y = 3; y < 45; y++)
Tiles.Add(new Tile { X = x, Y = y });
}
이유를 수행하여 목록을 채우는이고, 나머지는 사용 GUI 용.
더 좋은 방법이 없다면 (그리고 그럴 수 있어야합니다.) 나는 그 목록의 일부만 검색하여 ISWALL 속성을 TRUE로 설정 한 후 나는 또한 가능하면, 프로그램을 늦추고 방지하기 위해 노력하고있어 (이
static void DrawObstacles()
{
foreach (Tile tile in World.Tiles)
{
if (tile.IsWall)
{
Console.SetCursorPosition(tile.X, tile.Y);
Console.Write("#");
}
}
}
지금까지, 나는 몇 가지 다른 솔루션을 시도했지만 분명히, 내가 그들 각각의 문제로 실행 사용 , 반복 횟수가 1000 회 이상인 다른 루프는 피하십시오. 지금 그래서
//Tried this
private static void SetWalls()
{
int[] walls = new int[] { };
walls += Tiles.GetRange(0, 7); //Fails because I cannot use tiles in an int[]... of course
}
//This
List<Tile> walls = new List<Tile>();
List<Tile> walls = Tiles.GetRange(0, 7);
List<Tile> walls = Tiles.GetRange(19, 7; //Doesn't work either but I've no idea why here
//And finally
List<Tile> walls = new List<Tile>();
walls.Add(Tiles[Tiles.GetRange(0, 7)]); //Gives me an error saying that System.Collections.Generic.List<Engine.Tile> cannot be converted to int
, 난 빌드 "이 넘어서 난 정말 반복하는을 ... 모든이 2 차원 배열을 수동으로 조정하지 않고 입력하는 것보다, 목록을 반복하는 것을 선호하고 것 때문에 손실 조금 "벽.
내 질문에 : 목록의 일부만 (예 : 색인 0-7, 19-26, 29, 31, 35-46) 검색 할 수 있고 이것을 사용하려면 기본 타일 목록을 반복 할 수 있습니까? 그 인덱스에서 타일의 ISWALL 속성을 변경하려면 새로운 "인덱스 목록"... 그게 합리적이라면.
미리 감사 드리며 게시물에 실수를 저 지르더라도 알려주십시오.
나는 이것을 읽지 못했습니다. 당신의 질문은 정확히 무엇입니까? – Smartis
기본적으로 타일 목록을 반복하고 일부만 선택하여 ISWALL 속성을 TRUE로 설정할 수 있기를 원합니다. 타일 0-7, 19-26 등과 같은 특정 범위 만 선택하면됩니다. 그것이 의미가있는 경우 – Schaezar
타일을 80x25 형식으로 저장하지 않았습니까? 화면 출력을 모방 중입니까? 그게 네 인생을 더 편하게 해 줄거야. 네가 방을 제대로 만들려고한다고 생각하니? (나는 로게 엘 게임에서 내 삶을 너무 많이 보냈다.) – BugFinder