Здравствуйте, у меня проблема с рендерингом моего персонажа, я думаю, что неправильно передаю аргументы функции, потому что отладчик говорит мне, что мой рост изображения 1854382513251: D Но я не знаю, что я делаю плохо.Если бы кто-нибудь мог мне помочь, было бы неплохо.Вот мой код.
Wydruk_postaci(&P1, &NPCprzod, &NPCtyl, &NPCbok, &Renderer, &klatki);
void Wydruk_postaci(Postac *P,sTekstura *Przod[2],sTekstura *Tyl[2],sTekstura *Bok[2],SDL_Renderer **Renderer,int *frame)
{
char position = 'F';
if ((*P).predkoscx > 0)
{
render((*P).pozycjax, (*P).pozycjay, &(Bok[(*frame) / 4]), &Renderer, NULL);
position = 'S';
}
if ((*P).predkoscx < 0)
{
render((*P).pozycjax, (*P).pozycjay, &(Bok[(*frame) / 4]), &Renderer, NULL);
position = 'S';
}
if ((*P).predkoscy > 0)
{
render((*P).pozycjax, (*P).pozycjay, &(Przod[(*frame) / 4]), &Renderer, NULL);
position = 'F';
}
if ((*P).predkoscy < 0)
{
render((*P).pozycjax, (*P).pozycjay, &(Tyl[(*frame) / 4]), &Renderer, NULL);
position = 'B';
}
if((*P).predkoscx==0 && (*P).predkoscy==0)
{
if (position == 'F')
{
render((*P).pozycjax, (*P).pozycjay, &(Przod[(*frame) / 4]), &Renderer, NULL);
}
}
++(*frame);
if ((*frame) / 4 >= ILOSC_ANIMACJI)
{
(*frame) = 0;
}
}
Функция рендеринга работает правильно, потому что я использую ее с другими изображениями в других функциях.Этот немного сложнее.Я знаю, что если я хочу, чтобы все работало правильно, я должен передать аргумент и с позицией, но сначала эта строка
if((*P).predkoscx==0 && (*P).predkoscy==0)
{
if (position == 'F')
{
render((*P).pozycjax, (*P).pozycjay, &(Przod[0]), &Renderer, NULL);
}
}
должна работать, но это не так.Ничего не появляется на экране, если я получил этот порядок в основной функции
Poruszanie(&P1);
render(0, 0, &TloGra, &Renderer,NULL);
for (int i = 0,x=x_sciany,y=y_sciany ; i < 17; i++)
{
render(x, y, &Sciana, &Renderer, &Pomniejszacz);
x += 50;
}
for (int i = 0, x = x_sciany, y = y_sciany+50; i < 12; i++)
{
render(x, y, &Sciana, &Renderer, &Pomniejszacz);
y += 50;
}
for (int i = 0, x = x_sciany+800, y = y_sciany+50; i < 12; i++)
{
render(x, y, &Sciana, &Renderer, &Pomniejszacz);
y += 50;
}
for (int i = 0, x = x_sciany + 50, y = y_sciany + 600; i < 15; i++)
{
render(x, y, &Sciana, &Renderer, &Pomniejszacz);
x += 50;
}
for (int i = 0, x = x_sciany + 100, y = y_sciany + 100; i < 5; i++)
{
for (int i = 0; i < 7; i++)
{
render(x, y, &Sciana, &Renderer, &Pomniejszacz);
x += 100;
}
x -= 700;
y += 100;
}
Wydruk_postaci(&P1, &NPCprzod, &NPCtyl, &NPCbok, &Renderer, &klatki);
}
SDL_RenderPresent(Renderer);
, в основном то, что программа делает раньше, это рендеринг объектов на карте.