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

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

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

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

так как никто не переименовал мою тему про него,начну новую....
...
Вот если с 0 писать 2д(пока 2д) двиг,с чего начать?..(SetPixel есть cls тоже,да много чего есть,но говнокод конкретно,судя по коментам).
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 07.07.2011, 14:44   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Пишем 2d двиг

с выбора гапи.
(Offline)
 
Ответить с цитированием
Старый 07.07.2011, 14:47   #3
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Пишем 2d двиг

С написания ТЗ.
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (07.07.2011)
Старый 07.07.2011, 14:48   #4
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Пишем 2d двиг

с выбора гапи.
ок.гапи есть-так как платформа на arm,то кроме встроинки ничего....а для винды можно и к SDL приладить.(ща пока для портативки)
С написания ТЗ.
Что это?
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 07.07.2011, 14:58   #5
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Пишем 2d двиг

Техзадание
__________________

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

ну...написать 2д двиг на максимум возможностей платфомы(приставки)..
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 07.07.2011, 15:12   #7
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Пишем 2d двиг

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 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);  
    
       }
  }
}

void SetMask(loadimg img,uint16_t c)
{
img.mask=c;
}

void Graphics(uint16_t* screens,int SCREENWIDTH,int SCREENHEIGHT){ //гапи приставки
   //апи функции,прикольно,все через 4 идут(32бита на каждую получается почти)
   _dprintf              = FUNC(0x04);
    gfx_init              = FUNC(0x38);
    gfx_set_framebuffer   = FUNC(0x90);
    gfx_set_display_screen= FUNC(0x54);
    gfx_set_cammmode      = FUNC(0x8c);
    gfx_set_colorrop      = FUNC(0x3c);
    gfx_set_fgcolor       = FUNC(0x44);
    gfx_get_fgcolor       = FUNC(0x48);
    gfx_set_alpha         = FUNC(0x74);
    gfx_get_alpha         = FUNC(0x78);
    gfx_fillrect          = FUNC(0xc4);
    gfx_enable_feature    = FUNC(0x7c);
    gfx_flush             = FUNC(0xc);
    gfx_paint             = FUNC(0x10);
    gfx_load_image        = FUNC(0x14);
    gfx_free_image        = FUNC(0x18);
    gfx_bitblt            = FUNC(0xB4);
    gfx_sprite            = FUNC(0xB8);

    res_init              = FUNC(0xD4);
    res_get               = FUNC(0xD8);
    res_play              = FUNC(0xDC);
    res_stop              = FUNC(0xE8);

    fs_open               = FUNC(0x13C);
    fs_read               = FUNC(0x140);
    fs_write              = FUNC(0x144);
    fs_close              = FUNC(0x148);
    fs_seek               = FUNC(0x14C);

    get_time              = FUNC(0x124);
    get_keys              = FUNC(0x100);
    //get_keys2             = gpio_reg(0x60);//не хотит работать так,виснит....
    //
    static int    firsttime=1;
    gfx_rect_t rect;

    gfx_init(NULL, 0);

    rect.x = 0;
    rect.y = 0;
    rect.width = SCREENWIDTH;
    rect.height = SCREENHEIGHT;
    gfx_set_framebuffer(SCREENWIDTH,SCREENHEIGHT);
    gfx_set_display_screen(&rect);
 
    firsttime = 0;

    cls(screens,0x0000);//так лучше
    
    video_img.data     = screens;
    video_img.width    = SCREENWIDTH;
    video_img.height   = SCREENHEIGHT;
    video_img.img_type = IMG_TYPE_16BPP;
    video_img.unk2     = 0;
    video_img.pal_data = 0;//а палитры тю-тю
    video_img.pal_size = 0;//нет палитры-нет размера
    video_img.flags[0]   = 0x80;
    video_img.flags[1]   = 0;
    video_img.flags[2]   = 0;
    video_img.flags[3]   = 0;
    gfx_load_image(&video_img, &video_handle);
    gfx_set_colorrop(0xcc);
   
}

void Render(void){
gfx_rect_t rect;
gfx_point2d_t pos;

    rect.x = 0;
    rect.y = 0;
    rect.width =video_img.width  ;
    rect.height = video_img.height ;

pos.x=0;
pos.y=0;
gfx_bitblt(video_handle,&rect,&pos);
}

void ShutdownGraphics(void){
gfx_free_image(video_handle);
}

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;
}


void SetPixel(uint16_t* buff,uint16_t x,uint16_t y,uint16_t c)
{
if(y < video_img.height && y > 0) {
   if(x < video_img.width && x > 0)buff[video_img.width*y+x]=c;
   }
//так как буфер ограничен,не разрешим запись выходящих за грани пикселов
}

uint16_t GetPixel(uint16_t* buff,uint16_t x,uint16_t y)
{
uint16_t c=0x0000;
if(x < video_img.width && x > 0 ){
if(y < video_img.height && y > 0) c=buff[video_img.width*y+x];
}
return c;//пригодится,не разрешает просканить пкселы которые за гранью буффера..
}
void rect(uint16_t* buff,int x,int y,int h,int w,uint16_t c){
int i,n;
if(h==0 || w==0)return;
for(i=0;i<h;i++){
  for(n=0;n<w;n++){
  
  SetPixel(buff,i+x,n+y,c);  
    }
  } 
}
вот что есть,все кроме Graphics переписать придётся..?
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 07.07.2011, 15:19   #8
maxturbo
Разработчик
 
Аватар для maxturbo
 
Регистрация: 19.05.2009
Адрес: Россия Иркутская область
Сообщений: 350
Написано 51 полезных сообщений
(для 66 пользователей)
Ответ: Пишем 2d двиг

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

Есть наброски 2D двигателя могу поделиться, посмотришь как там все работает )
на С или с++?всё равно давай,перепишем если что
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 07.07.2011, 15:38   #10
maxturbo
Разработчик
 
Аватар для maxturbo
 
Регистрация: 19.05.2009
Адрес: Россия Иркутская область
Сообщений: 350
Написано 51 полезных сообщений
(для 66 пользователей)
Ответ: Пишем 2d двиг

Сообщение от Костян Посмотреть сообщение
на С или с++?всё равно давай,перепишем если что
На C++ стучи в ICQ - 640109160
__________________
(Offline)
 
Ответить с цитированием
Старый 07.07.2011, 16:52   #11
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Пишем 2d двиг

Сообщение от Костян Посмотреть сообщение
Вот если с 0 писать 2д(пока 2д) двиг,с чего начать?..(SetPixel есть cls тоже,да много чего есть,но говнокод конкретно,судя по коментам).
начать нужно с:
1. внятного описания что уже есть и чего хочется получить (ты даже этого не умеешь).
в теме выяснилось, что у тебя железка что-то типа Dingoo c ARM (кстати какого поколения?) и неизвестной конфигурации (есть ли аппаратный блиттер? есть ли 3D чип?)

2. изучения чужих наработок, определения их слабых и сильных сторон.
может оказаться, что уже есть вполне годные библиотеки.

3. написания ТЗ (хотя бы для себя).
определиться с API, определиться с функциональностью.

Сообщение от Костян Посмотреть сообщение
так как никто не переименовал мою тему про него,начну новую....
и да, переименуйте тему пожалуйста в что-то более подходящее по смыслу.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо ffinder за это полезное сообщение:
maxturbo (07.07.2011), Mr_F_ (07.07.2011)
Старый 07.07.2011, 18:43   #12
maxturbo
Разработчик
 
Аватар для maxturbo
 
Регистрация: 19.05.2009
Адрес: Россия Иркутская область
Сообщений: 350
Написано 51 полезных сообщений
(для 66 пользователей)
Ответ: Пишем 2d двиг

Сообщение от Костян Посмотреть сообщение
на С или с++?всё равно давай,перепишем если что
Посмотри сюда, если знаком уже с API DirectX'a и C++ то дерзай, там полностью расписывают про создание 2D и 3D движка
__________________
(Offline)
 
Ответить с цитированием
Старый 08.07.2011, 05:57   #13
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Пишем 2d двиг

проц не динги а spmp8000...вот 2д:
4.3. Graphics Engine
A graphics engine provides 16-bit (RGB565/1555) operatio
including BitBLT with 3 ROP, alpha-blending, line drawing, patte
fill, sprite transparency with color-key ROP, bit-plane mask, a
index color expansion. In addition, it accelerates GUI operati
and graphics intensive applications such as GPS and games.
зы,объясните что такое BitBLT, line drawing,bit-plane mask, a
index color expansio, patte
fill
__________________
Сайт: http://iexpo.ml

Последний раз редактировалось RegIon, 08.07.2011 в 07:37.
(Offline)
 
Ответить с цитированием
Старый 08.07.2011, 16:26   #14
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Пишем 2d двиг

BitBLT, line drawing (рисование линий?), bit-plane mask, a index color expansion, pattern fill (заливка шаблонов?).

Кликабельны большинство.
Слушай, Костян. Ты немного своей ленью начинаешь достовать. Google.com - знает всё что тебе нужно. Научись им пользоваться. Либо такое впечатление, что тебе это ваще нафиг не нада..
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
maxturbo (08.07.2011)
Ответ


Опции темы

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

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


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


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