Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: ?Linux+SDL+СИ  (Прочитано 2061 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн aureli0

  • Автор темы
  • Новичок
  • *
  • Сообщений: 25
    • Просмотр профиля
?Linux+SDL+СИ
« : 08 Сентября 2008, 23:37:06 »
Я не очень силен в Си, раньше был в основном паскаль. Вот решил занятся программированием игр на СИ в линухе с использованием SDL.
В качестве старта использую материалы из : http://plg.lrn.ru/doc/sdl/index.html
Вопрос, прога компилится (файл еx2.cxx строчки 92-106) но вылетает если использовать вместо

    frog[0].init(&frogbase[0],screen);
    frog[1].init(&frogbase[1],screen);
    frog[2].init(&frogbase[2],screen);

это:

  for(j=0;j<spr;j++)
  {
    frog[j].init(&frogbase[j],screen);
  }

или

j = 0;
while(j == spr)
{
  frog[j].init(&frogbase[j],screen);
  j=j+1;
  }

spr консанта
а как init.frog пашет сам пока понять не могу, но записано правильно через точку
svsBase и svsSprite типы bp graph.h

svsBase frogbase[spr];
svsSprite frog[spr];

Что можно cделать для того чтобы не вбивать в тупую элемент массива frog[0],frog[1],frog[2] а использовать всетаки для этого цикл?

Исходники по адресу:
http://narod.ru/disk/2483958000/9.tar.gz.html

LK4D4

  • Гость
Re: ?Linux+SDL+СИ
« Ответ #1 : 09 Сентября 2008, 00:09:13 »
j = 0;
while(j < spr)
{
  frog[j].init(&frogbase[j],screen);
  j=j+1;
}
До буя ошибок но жабки появились и рот открывают.

LK4D4

  • Гость
Re: ?Linux+SDL+СИ
« Ответ #2 : 09 Сентября 2008, 00:12:46 »
for(j=0;j<spr;j++)
   {
    frogbase[j].init(&mInit);
    frog[j].setSpeed(rand()%10);//скорость анимации
    frog[j].set(rand()%400+800/4,rand()%300+600/4);//местоположение спрайта
   }

  j = 0;
 //Координаты спрайта
  for(j=0;j<spr;j++)
   {
    frog[j].init(&frogbase[j],screen);
   }
Те же жабы, ниче не вылетает.

Оффлайн aureli0

  • Автор темы
  • Новичок
  • *
  • Сообщений: 25
    • Просмотр профиля
Re: ?Linux+SDL+СИ
« Ответ #3 : 09 Сентября 2008, 00:22:13 »
уже так делал, в терминале выдает вот это и вылетает:
neon@neon-comp ~ $ cd /media/linux-storage-Ex/Work_lin/temp/10
neon@neon-comp /media/linux-storage-Ex/Work_lin/temp/10 $ ./test
Segmentation fault

чтото с массивами не сходится((

LK4D4

  • Гость
Re: ?Linux+SDL+СИ
« Ответ #4 : 09 Сентября 2008, 01:19:14 »
Segmentation fault значит ты где-то закоментил что не надо или недописал какой-то оператор.
У меня все шикарненько заработало. Ты открой в редакторе где синтаксис сишный видно и посмотри что там где. В общем проблема не в компиляторе, а в невнимательности имхо.

 

Страница сгенерирована за 0.091 секунд. Запросов: 26.