рендеринг функции SDL2 - PullRequest
0 голосов
/ 27 мая 2018

Здравствуйте, у меня проблема с рендерингом моего персонажа, я думаю, что неправильно передаю аргументы функции, потому что отладчик говорит мне, что мой рост изображения 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);

, в основном то, что программа делает раньше, это рендеринг объектов на карте.

...