Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 06.07.2011, 09:41   #1
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
не могу найти ошибку

int LoadImage(loadimg img)
{ 
if(img.data==0) return 0;
int i,n;
uint16_t c,r1,b1,g1;
uint16_t out_w=img.width;
img.mask=0;
for(i=0;i<img.height;i++){
 for(n=0;n<img.width;n++){
    r1=img.data[((i*out_w)*3+n*3)];
    g1=img.data[((i*out_w)*3+n*3)+1];
    b1=img.data[((i*out_w)*3+n*3)+2];
    c=MAKE_RGB565(r1,g1,b1);
    img.data[i*img.width+n]=c;
}    
}
return 1;
}

int LoadAnimImage(loadimg img,uint16_t f_w,uint16_t f_h,uint16_t f_c)
{ 
  if(f_c==0)return 0; 
  LoadImage(img);
  if(f_c>1){
  if(img.width>f_w-1){
  img.framecount=f_c;
  img.f_width=f_w;
  img.f_height=f_h;
   }
   }
   return 1;
}

void DrawImage(uint16_t *screen,int x,int y,loadimg img,uint16_t fram)
{ 
int i,n;
uint16_t c;
uint16_t img_w=img.width;
uint16_t img_h=img.height;
if(img.f_width>0 && img.f_height>0){
img_w=img.f_width;
img_h=img.f_height;
}
if(fram>img.framecount)fram=img.framecount;
for(i=0;i<img_h;i++){
 for(n=0;n<img_w;n++){
  c=img.data[fram*(img_w*img_h)+i*img_w+n];
   if(c!=img.mask)SetPixel(screen,x+i,y+n,c);
}    
}
}

void SetMask(loadimg img,uint16_t c)
{
img.mask=c;
}
функции пародии на блитз2д,гружу имгу так:if(LoadAnimImage(man,8,64,8 )==0)return 0;

пытаюсь рисовать так:DrawImage(screens,x,y,man,3);

но хоть сдохни,рисует полностью....где ошибка??
(пять минут назад 3G дали)
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 06.07.2011, 10:27   #2
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: не могу найти ошибку

как понять линкёр(так не билдит):
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 1373
Размер:	18.6 Кб
ID:	14296
10просмотров и не одного ответа.....
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 06.07.2011, 11:12   #3
Morganolla
Бывалый
 
Аватар для Morganolla
 
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений
(для 245 пользователей)
Ответ: не могу найти ошибку

Интересно, где тебя так учили писать код, или ты самоучка?
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
(Offline)
 
Ответить с цитированием
Старый 06.07.2011, 11:16   #4
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: не могу найти ошибку

Интересно, где тебя так учили писать код, или ты самоучка?
ну точно не в школе(а и больше негде).....почти чистый код(даже лишних переменных нет)
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 06.07.2011, 11:21   #5
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: не могу найти ошибку

Сообщение от Костян Посмотреть сообщение
как понять линкёр(так не билдит):
Вложение 14296
10просмотров и не одного ответа.....
эт я показал что при делении на 1 происходит...(из-за этого не смог ДрафЛине написать функцию)
..
тупой вопрос:как в масив(buff[320*240])в раз записать число?? без цикла..
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 06.07.2011, 12:08   #6
Morganolla
Бывалый
 
Аватар для Morganolla
 
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений
(для 245 пользователей)
Ответ: не могу найти ошибку

Объявить его структурой... юнитом... , типом...и т.п....
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
(Offline)
 
Ответить с цитированием
Старый 06.07.2011, 12:11   #7
Morganolla
Бывалый
 
Аватар для Morganolla
 
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений
(для 245 пользователей)
Ответ: не могу найти ошибку

Сообщение от Костян Посмотреть сообщение
ну точно не в школе(а и больше негде).....почти чистый код(даже лишних переменных нет)
Отвратительно отформатирован!
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Morganolla за это полезное сообщение:
maxturbo (06.07.2011), Mr_F_ (06.07.2011)
Старый 06.07.2011, 13:11   #8
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: не могу найти ошибку

как в масив(buff[320*240])в раз записать число??
массив чего?
можно в принципе без цикла - поюзав ZeroMemory из винапи (хотя очевидно внутри будет подобие цикла + не portable).
(Offline)
 
Ответить с цитированием
Старый 06.07.2011, 13:33   #9
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: не могу найти ошибку

можно fill из std
но там тоже цикл
portable
(Offline)
 
Ответить с цитированием
Старый 06.07.2011, 13:39   #10
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: не могу найти ошибку

массив чего?
можно в принципе без цикла - поюзав ZeroMemory из винапи (хотя очевидно внутри будет подобие цикла + не portable).
масив unsigned shote(uint16_t)..винапи не могу-portable(spmp8000)
очищаю так
void cls(uint16_t* screens,uint16_t c){
int i;
for(i=0;i<video_img.width * video_img.height;i++) screens[i]=c;
//тут лучше так,меньше проходов нужно.
//screens=c;
}
причем в реалтиме...не накладно??
..
дак как DrawImage сделать НОРМАЛЬНО?
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 06.07.2011, 13:51   #11
wolfhound512
Знающий
 
Аватар для wolfhound512
 
Регистрация: 18.02.2008
Сообщений: 276
Написано 121 полезных сообщений
(для 299 пользователей)
Ответ: не могу найти ошибку

можно попробовать wmemset(), wchar_t и short одного размера.
__________________
GUI, GUIw512, AlbaLynx, Форум
(Offline)
 
Ответить с цитированием
Старый 06.07.2011, 13:59   #12
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: не могу найти ошибку

можно попробовать wmemset(), wchar_t и short одного размера.
хм,ну наверно опять линкер выпендриваться бутит,так же как и memcopy..
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 07.07.2011, 02:28   #13
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: не могу найти ошибку

wchar_t и short одного размера.
это кто вам такое в ухо пернул? если на вашей системе и с вашим компилятором размеры совпадают - то ето еще не значит что sizeof(short) == sizeof(wchar_t) по стандарту. на unix-подобных системах не совпадает точно.
(Offline)
 
Ответить с цитированием
Старый 07.07.2011, 05:46   #14
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: не могу найти ошибку


wchar_t и short одного размера.
это кто вам такое в ухо пернул? если на вашей системе и с вашим компилятором размеры совпадают - то ето еще не значит что sizeof(short) == sizeof(wchar_t) по стандарту. на unix-подобных системах не совпадает точно.
ну знач и у меня не проконает...у меня ОС на unix скриптах собрана(там даже аудио кодеки от Linex)
и у меня пиксель-буфер,а макc цвет oxffff,мне char никак не катит,тока shote,и причем unsigned()
...ну раз вы все умные,а я не очень,задача:
массив char :
char img[64*64*3]={
25,0,255,230,0,255,......
и так далее,в нём записан каждый цвет RGB.Надо его переформировать в массив:
uint16_t buff[64*64][frame]
typedef unsigned short uint16_t
есть такие данные:
размер имги=width,height
размер фрейма=f_width,f_height
количество фреймов=count
//проще потом рисовать
а,преобразователь цвета с=MAKE_RGB565(r,g,b)
__________________
Сайт: http://iexpo.ml

Последний раз редактировалось RegIon, 07.07.2011 в 09:58.
(Offline)
 
Ответить с цитированием
Старый 07.07.2011, 10:01   #15
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: не могу найти ошибку

переименуйте тему в "Пишем свой 2d двиг"
написал функцию таилинга:
void TileImage(uint16_t *buff,loadimg img,int x,int y,uint16_t width,uint16_t height)
{
uint16_t i,n,w_c,h_c;
w_c=img.width/width;
h_c=img.height/height;

  for(i=0;i<w_c;i++){
      for(n=0;n<h_c;n++){
        
          DrawImage(buff,img,x+img.width*i,y+img.width*n);  
    
       }
  }
}
тока будет в настоящий размер,если размер области тайлинга будет цело кратен размеру имаги,а то либо нехватать будет,либо много наоборот...
....
__________________
Сайт: http://iexpo.ml

Последний раз редактировалось RegIon, 07.07.2011 в 10:21. Причина: замст "," точек влепил
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 12:55.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com