나는 타일 맵을 만들기위한 YouTube 튜토리얼을 따라 왔습니다.txt 파일을 읽을 때 내 프로그램이 다음 줄로 이동하지 않습니다.
내 코드는 동일한 IDE를 사용하는 자습서와 동일합니다. 프로그램이 텍스트 파일에서 읽는
그러나 그 줄의 끝을 인식하지 나타납니다 : 나는지도 배열 내 텍스트 파일 너무 작은 것을 할 수 있다고 생각
#include<SFML/Graphics.hpp>
#include<iostream>
#include<fstream>
#include<cctype>
#include<string>
using namespace std;
int main()
{
ifstream openfile("map1.txt");
sf::Texture tileTexture;
sf::Sprite tiles;
sf::Vector2i map[500][200];
sf::Vector2i loadCounter = sf::Vector2i(0, 0);
if(openfile.is_open())
{
string tileLocation;
openfile >> tileLocation;
tileTexture.loadFromFile(tileLocation);
tiles.setTexture(tileTexture);
while(!openfile.eof())
{
string str;
openfile >> str;
char x = str[0], y = str[2];
if(!isdigit(x) || !isdigit(y))
map[loadCounter.x][loadCounter.y] = sf::Vector2i(-1, -1);
else
map[loadCounter.x][loadCounter.y] = sf::Vector2i(x - '0', y - '0');
if(openfile.peek() == '\n')
{
loadCounter.x = 0;
loadCounter.y++;
}
else
loadCounter.x++;
}
loadCounter.y++;
}
를 그래서 나는 그것을 증가 동일한 오류 또는 스택 오버플로 오류가 발생했습니다. 나는 그것이 loadCounter.x
증가 프로그램을 스테핑에서 그것을 볼 수 있지만 결코 여기 loadcounter.y
를 증가하지 내 TEXTFILE의로
는 단어가 여기에 포장하면 미안 당신이 더 나은 표현을해야합니다 그래서 만약 미리보기가 줄 바꿈을 보여주고있다 (문제가 txt 파일은 저에게 할 수있는 일을 알려주세요).
여기에 간단한 설명을하기 위해 파일에는로드 할 이미지의 이름과 40X25 세트의 배열에있는 "좌표"세트가 들어 있습니다. 구축 할 때
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
0,1 0,1 0,1 0,1 0,1 0,1 0,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
0,1 0,1 0,1 0,1 0,1 0,1 0,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
0,1 0,1 0,1 0,1 0,1 0,1 0,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
0,1 0,1 0,1 0,1 0,1 0,1 0,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
0,1 0,1 0,1 0,1 0,1 0,1 0,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
0,1 0,1 0,1 0,1 0,1 0,1 0,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x 1,1 1,1 1,1 1,1 x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x x,x
Tileset.jpg 난이 오류가 발생합니다.
Angels Last Crusade.exe에서 0x0006A30D의 첫 번째 예외 : 0xC0000005 : 0x0022003C 위치 쓰기 액세스 위반. Angels에서 0x0006A30D의 처리되지 않은 예외 마지막 Crusade.exe : 0xC0000005 : 0x0022003C 위치 쓰기 액세스 위반.
텍스트 파일이 너무 커서지도 배열이 많이 필요하다는 두 가지 질문이 있습니다. 또는 내 텍스트 파일에 오류가있어서 코드가 새 줄을 놓치거나 새 줄의 잘못된 식별자를 찾는 코드가 있습니까?
thanX @WhozCraig, 화면에 그릴 무언가를 얻을 수 있지만 오류가있는 쌍보다 많은 행을 가진지도를 그리는 방법을 찾지 못했습니다. 디버그 어설 션이 실패했습니다. ... 식 : 벡터 첨자 중 range .... 그러나 쌍이 행보다 많으면 잘 컴파일됩니다. – FPSHero
@ user3659128이 정보는지도 파일의 경계 내에 머물러 있도록하는 부분입니다. 특정 행에 대해 게시 한 코드 (하단)에는 입력 파일에서 특정 개수의 쌍이 있습니다. 매핑하려는 이미지가 일치하지 않으면 쌍이 부족한 경우 대체 작업을 수행해야합니다. 솔직히, 나는 당신의 비디오 작업에 대해 잭을 모른다. 그러나 나는 표준 lib를 안다. 그래서 왜 read-alternative가 그렇게 직접적 이었는가? – WhozCraig
나는 당신이 나를 잃어 버렸다고 생각합니다. 오류는 코드가 아닌 입력 파일을 편집하여 발생합니다. 텍스트는 쌍 (즉, x, x -> 1,1)을 변경하여 이미지 일 뿐이므로 타일 세트에서 섹션을 잘라내어 화면에 인쇄합니다. 난 당신의 코드가 쌍의 집합보다 많은 행을 처리하도록하는 방법을 놓치고있다. 그것은 행만큼 많은 쌍으로 잘 작동합니다. 불행하게도 이것은 대부분의 모니터와 반대되는 너비보다 큰 이미지를 출력합니다 – FPSHero