Еретик
Угу спасибо.
Cerber
Да, жалко потраченного времени, но зато вот хоть народ повеселился)
Я даже ради интереса заново перебилдил проект - работает!
Поставил WarningLevel 4, хотел выложить выходные данные, но придется постов пять накатать) Там предупреждение через строчку в буквальном смысле.
1>Затраченное время: 00:00:20.34
========== Перестроение всех: успешно: 1, с ошибками: 0, пропущено: 0 ==========
Хммм, а новая версия в 55 классах ребилдиться аж 4 минуты =\
Спасибо Suslikу за ссылку. Вспомнил свои школьные годы. Агат9, бейсик, из знаний только переменные, условия и гото, и огромное желание написать змейку. Самое интересное, что написал. Код выглядел точно так же, как код топикстартера. Когда узнал про циклы и массивы, понял, что то же самое можно на порядки проще реализовать.
Да тут многие местные начинали программировать в то время, когда интернетов в россии ещё не было. С книгами-то были проблемы, что уж говорить о тьюториалах и сэмплах. Думаю, у каждого в закромах можно найти что-нибудь такое, хех.
Отрыл еще один интересный кусок. Полет птенчика (по кругу):
+ Показать
− Скрыть
if(vragi4Objects[i120].polet==1)
{
if(sqrt((vragi4Objects[i120].v4y-vragi4Objects[i120].ry)*(vragi4Objects[i120].v4y-vragi4Objects[i120].ry)+
(vragi4Objects[i120].v4x-vragi4Objects[i120].rx)*(vragi4Objects[i120].v4x-vragi4Objects[i120].rx))>=vragi4Objects[i120].r&&
vragi4Objects[i120].kruzhit==false)
{
vragi4Objects[i120].v4y-=vragi4Objects[i120].speedY*lag;
if(vragi4Objects[i120].v4x>=vragi4Objects[i120].rx)
{vragi4Objects[i120].v4x-=vragi4Objects[i120].speedY*(vragi4Objects[i120].v4x-vragi4Objects[i120].rx)/(vragi4Objects[i120].v4y-vragi4Objects[i120].ry)*lag;}
if(vragi4Objects[i120].v4x<vragi4Objects[i120].rx)
{vragi4Objects[i120].v4x+=vragi4Objects[i120].speedY*(vragi4Objects[i120].rx-vragi4Objects[i120].v4x)/(vragi4Objects[i120].v4y-vragi4Objects[i120].ry)*lag;}
if(sqrt((vragi4Objects[i120].v4y-vragi4Objects[i120].ry)*(vragi4Objects[i120].v4y-vragi4Objects[i120].ry)+
(vragi4Objects[i120].v4x-vragi4Objects[i120].rx)*(vragi4Objects[i120].v4x-vragi4Objects[i120].rx))<=vragi4Objects[i120].r)
{vragi4Objects[i120].kruzhit=true;
if(vragi4Objects[i120].krug==0)
{vragi4Objects[i120].gradus=0;
vragi4Objects[i120].gradusNext=M_PI-M_PI_4;}
}
}
if(vragi4Objects[i120].kruzhit==true)
{
if(vragi4Objects[i120].chetvert_n==1)
{vragi4Objects[i120].gradus-=M_PI_4/(42+(150/vragi4Objects[i120].r)*(150/vragi4Objects[i120].r))*(150/vragi4Objects[i120].r)*lag;}
if(vragi4Objects[i120].chetvert_n==-1)
{vragi4Objects[i120].gradus+=M_PI_4/(42+(150/vragi4Objects[i120].r)*(150/vragi4Objects[i120].r))*(150/vragi4Objects[i120].r)*lag;}
if(vragi4Objects[i120].zahod==-1)
{
if(vragi4Objects[i120].up==true)
{
if(vragi4Objects[i120].v4y>=(vragi4Objects[i120].ry-vragi4Objects[i120].r/2)&&
vragi4Objects[i120].v4y<=(vragi4Objects[i120].ry+vragi4Objects[i120].r/2))
{vragi4Objects[i120].v4y-=vragi4Objects[i120].speedY*lag;
if(vragi4Objects[i120].chetvert==1)
{vragi4Objects[i120].v4x=sqrt(vragi4Objects[i120].r*vragi4Objects[i120].r-(vragi4Objects[i120].v4y-vragi4Objects[i120].ry)*(vragi4Objects[i120].v4y-vragi4Objects[i120].ry))+vragi4Objects[i120].rx;}
if(vragi4Objects[i120].chetvert==-1)
{vragi4Objects[i120].v4x=vragi4Objects[i120].rx-sqrt(vragi4Objects[i120].r*vragi4Objects[i120].r-(vragi4Objects[i120].v4y-vragi4Objects[i120].ry)*(vragi4Objects[i120].v4y-vragi4Objects[i120].ry));}
}
if(vragi4Objects[i120].v4y<=(vragi4Objects[i120].ry-vragi4Objects[i120].r/2)||
vragi4Objects[i120].v4y>=(vragi4Objects[i120].ry+vragi4Objects[i120].r/2))
{
if((vragi4Objects[i120].chetvert==-1&&vragi4Objects[i120].v4y<=(vragi4Objects[i120].ry-vragi4Objects[i120].r/2))||
(vragi4Objects[i120].chetvert==1&&vragi4Objects[i120].v4y>=(vragi4Objects[i120].ry+vragi4Objects[i120].r/2)))
{vragi4Objects[i120].v4x+=vragi4Objects[i120].speedY*lag;}
if((vragi4Objects[i120].chetvert==-1&&vragi4Objects[i120].v4y>=(vragi4Objects[i120].ry+vragi4Objects[i120].r/2))||
(vragi4Objects[i120].chetvert==1&&vragi4Objects[i120].v4y<=(vragi4Objects[i120].ry-vragi4Objects[i120].r/2)))
{vragi4Objects[i120].v4x-=vragi4Objects[i120].speedY*lag;}
if(vragi4Objects[i120].v4y>=vragi4Objects[i120].ry)
{vragi4Objects[i120].v4y=sqrt(vragi4Objects[i120].r*vragi4Objects[i120].r-(vragi4Objects[i120].v4x-vragi4Objects[i120].rx)*(vragi4Objects[i120].v4x-vragi4Objects[i120].rx))+vragi4Objects[i120].ry;}
if(vragi4Objects[i120].v4y<vragi4Objects[i120].ry)
{vragi4Objects[i120].v4y=vragi4Objects[i120].ry-sqrt(vragi4Objects[i120].r*vragi4Objects[i120].r-(vragi4Objects[i120].v4x-vragi4Objects[i120].rx)*(vragi4Objects[i120].v4x-vragi4Objects[i120].rx));}
}
if(vragi4Objects[i120].v4y<=vragi4Objects[i120].ry-(vragi4Objects[i120].r-1))
{vragi4Objects[i120].up=false;
if(vragi4Objects[i120].chetvert_n==1&&vragi4Objects[i120].chetvert==1)
{vragi4Objects[i120].chetvert=-1;}
if(vragi4Objects[i120].chetvert_n==-1&&vragi4Objects[i120].chetvert==-1)
{vragi4Objects[i120].chetvert=1;}}
}
if(vragi4Objects[i120].up==false)
{
if(vragi4Objects[i120].v4y>=(vragi4Objects[i120].ry-vragi4Objects[i120].r/2)&&
vragi4Objects[i120].v4y<=(vragi4Objects[i120].ry+vragi4Objects[i120].r/2))
{vragi4Objects[i120].v4y+=vragi4Objects[i120].speedY*lag;
if(vragi4Objects[i120].chetvert==1)
{vragi4Objects[i120].v4x=sqrt(vragi4Objects[i120].r*vragi4Objects[i120].r-(vragi4Objects[i120].v4y-vragi4Objects[i120].ry)*(vragi4Objects[i120].v4y-vragi4Objects[i120].ry))+vragi4Objects[i120].rx;}
if(vragi4Objects[i120].chetvert==-1)
{vragi4Objects[i120].v4x=vragi4Objects[i120].rx-sqrt(vragi4Objects[i120].r*vragi4Objects[i120].r-(vragi4Objects[i120].v4y-vragi4Objects[i120].ry)*(vragi4Objects[i120].v4y-vragi4Objects[i120].ry));}
}
if(vragi4Objects[i120].v4y<=(vragi4Objects[i120].ry-vragi4Objects[i120].r/2)||
vragi4Objects[i120].v4y>=(vragi4Objects[i120].ry+vragi4Objects[i120].r/2))
{
if((vragi4Objects[i120].chetvert==-1&&vragi4Objects[i120].v4y<=(vragi4Objects[i120].ry-vragi4Objects[i120].r/2))||
(vragi4Objects[i120].chetvert==1&&vragi4Objects[i120].v4y>=(vragi4Objects[i120].ry+vragi4Objects[i120].r/2)))
{vragi4Objects[i120].v4x-=vragi4Objects[i120].speedY*lag;}
if((vragi4Objects[i120].chetvert==-1&&vragi4Objects[i120].v4y>=(vragi4Objects[i120].ry+vragi4Objects[i120].r/2))||
(vragi4Objects[i120].chetvert==1&&vragi4Objects[i120].v4y<=(vragi4Objects[i120].ry-vragi4Objects[i120].r/2)))
{vragi4Objects[i120].v4x+=vragi4Objects[i120].speedY*lag;}
if(vragi4Objects[i120].v4y>=vragi4Objects[i120].ry)
{vragi4Objects[i120].v4y=sqrt(vragi4Objects[i120].r*vragi4Objects[i120].r-(vragi4Objects[i120].v4x-vragi4Objects[i120].rx)*(vragi4Objects[i120].v4x-vragi4Objects[i120].rx))+vragi4Objects[i120].ry;}
if(vragi4Objects[i120].v4y<vragi4Objects[i120].ry)
{vragi4Objects[i120].v4y=vragi4Objects[i120].ry-sqrt(vragi4Objects[i120].r*vragi4Objects[i120].r-(vragi4Objects[i120].v4x-vragi4Objects[i120].rx)*(vragi4Objects[i120].v4x-vragi4Objects[i120].rx));}
}
if(vragi4Objects[i120].v4y>=vragi4Objects[i120].ry+(vragi4Objects[i120].r-1))
{vragi4Objects[i120].up=true;
if(vragi4Objects[i120].chetvert_n==1&&vragi4Objects[i120].chetvert==-1)
{vragi4Objects[i120].chetvert=1;}
if(vragi4Objects[i120].chetvert_n==-1&&vragi4Objects[i120].chetvert==1)
{vragi4Objects[i120].chetvert=-1;}}
}
}
if(vragi4Objects[i120].gradus>vragi4Objects[i120].gradusNext)
{vragi4Objects[i120].kruzhit=false;
vragi4Objects[i120].krug++;
if(vragi4Objects[i120].zahod==1)
{vragi4Objects[i120].zahod=-1;}
if(vragi4Objects[i120].zahod==-1)
{vragi4Objects[i120].zahod=1;}
vragi4Objects[i120].rx=hge->Random_Float(vragi4Objects[i120].rx,vragi4Objects[i120].rx+600);
vragi4Objects[i120].ry=hge->Random_Float(vragi4Objects[i120].ry-300,vragi4Objects[i120].ry-100);
vragi4Objects[i120].gradus=vragi4Objects[i120].gradusNext;
vragi4Objects[i120].gradusNext+=M_PI-M_PI_4;
vragi4Objects[i120].r=hge->Random_Int(25,50);
}
if(vragi4Objects[i120].gradus<-vragi4Objects[i120].gradusNext)
{vragi4Objects[i120].kruzhit=false;
vragi4Objects[i120].krug++;
if(vragi4Objects[i120].zahod==1)
{vragi4Objects[i120].zahod=-1;}
if(vragi4Objects[i120].zahod==-1)
{vragi4Objects[i120].zahod=1;}
vragi4Objects[i120].rx=hge->Random_Float(vragi4Objects[i120].rx-600,vragi4Objects[i120].rx);
vragi4Objects[i120].ry=hge->Random_Float(vragi4Objects[i120].ry+100,vragi4Objects[i120].ry+300);
vragi4Objects[i120].gradus=-vragi4Objects[i120].gradusNext;
vragi4Objects[i120].gradusNext+=-(M_PI-M_PI_4);
vragi4Objects[i120].r=hge->Random_Int(25,50);
}
}
}
помню, как в школе написал на Turbo Pascal 7.0 клон астероидов на несколько тысяч строчек.
код, к сожалению, был утерян, но он был примерно в таком же духе.
тогда для меня были открытием всякие object и override, но слишком мало объектов помещалось в 64 KB.
PVSector
Аналогично, я был в восторге, увидев в туториале hge массив объектов структур. И побежал кодить.
P.S. Вот еще нашел.
Вы просто умножаете на дельту? Тогда мы идем к вам!!!
float lag=((1+dt*12)*sqrt(dt/0.006f));
float lag_p=((1+dt*10)*sqrt(dt/0.01f))*((x+1200)/2400);
dx*=tormoz; dy*=tormoz;
float lag_igrokam=((1+12*dt)/(1+5*dt))*sqrt(sqrt(sqrt(140/(float)fps)));
Ф-лы выверялись на глаз путем over 9000 перезапусков игры под большой нагрузкой.
А по-моему и сейчас многие так пишут свои супер проЭкты.
Автор, за код - зачёт. Главное что это ещё и работало :-)
(скрины просмотрел немного, в саму демку не играл)
Моё счастье в том что я ознакомился с массивами до того как сильно захотелось писать игры.
Но всё равно у меня вот в лучшем из моих проектов отдельный файлик 87 Кб, около 2600 строк и там почти всё такое:
+ Показать
− Скрыть
{
{
if(
(tstack[mtri].a.in==1)&&
(tstack[mtri].b.in==0)&&
(tstack[mtri].c.in==0)&&
(tstack[mtri].a.f&2)&&
(tstack[mtri].c.f&4)&&
((tstack[mtri].b.f&2))&&
((tstack[mtri].b.f&4))&&
(tstack[mtri].ugls==0)
){
ntri++;
tstack[ntri].a.x=tstack[mtri].a.x;
tstack[ntri].a.y=tstack[mtri].a.y;
tstack[ntri].b.x=tstack[mtri].aj[1].x;
tstack[ntri].b.y=tstack[mtri].aj[1].y;
tstack[ntri].c.x=tstack[mtri].bj[1].x;
tstack[ntri].c.y=tstack[mtri].bj[1].y;
tstack[ntri].fl=1;
tstack[mtri].fl=1;
ntri++;
tstack[ntri].a.x=tstack[mtri].a.x;
tstack[ntri].a.y=tstack[mtri].a.y;
tstack[ntri].c.x=tstack[mtri].bj[2].x;
tstack[ntri].c.y=tstack[mtri].bj[2].y;
tstack[ntri].b.x=tstack[mtri].bj[1].x;
tstack[ntri].b.y=tstack[mtri].bj[1].y;
tstack[mtri].b.x=tstack[mtri].bj[2].x;
tstack[mtri].b.y=tstack[mtri].bj[2].y;
tstack[mtri].c.x=tstack[mtri].cj[2].x;
tstack[mtri].c.y=tstack[mtri].cj[2].y;
tstack[ntri].fl=1;
tstack[mtri].fl=1;
};
if(
(tstack[mtri].a.in==1)&&
(tstack[mtri].b.in==0)&&
(tstack[mtri].c.in==0)&&
(tstack[mtri].a.f&1)&&
(tstack[mtri].c.f&2)&&
((tstack[mtri].b.f&2))&&
((tstack[mtri].b.f&1))&&
(tstack[mtri].ugls==0)
){
ntri++;
tstack[ntri].a.x=tstack[mtri].a.x;
tstack[ntri].a.y=tstack[mtri].a.y;
tstack[ntri].b.x=tstack[mtri].aj[0].x;
tstack[ntri].b.y=tstack[mtri].aj[0].y;
tstack[ntri].c.x=tstack[mtri].bj[0].x;
tstack[ntri].c.y=tstack[mtri].bj[0].y;
tstack[ntri].fl=1;
tstack[mtri].fl=1;
ntri++;
tstack[ntri].a.x=tstack[mtri].a.x;
tstack[ntri].a.y=tstack[mtri].a.y;
tstack[ntri].c.x=tstack[mtri].bj[1].x;
tstack[ntri].c.y=tstack[mtri].bj[1].y;
tstack[ntri].b.x=tstack[mtri].bj[0].x;
tstack[ntri].b.y=tstack[mtri].bj[0].y;
tstack[mtri].b.x=tstack[mtri].bj[1].x;
tstack[mtri].b.y=tstack[mtri].bj[1].y;
tstack[mtri].c.x=tstack[mtri].cj[1].x;
tstack[mtri].c.y=tstack[mtri].cj[1].y;
tstack[ntri].fl=1;
tstack[mtri].fl=1;
};
if(
(tstack[mtri].a.in==1)&&
(tstack[mtri].b.in==0)&&
(tstack[mtri].c.in==0)&&
(tstack[mtri].a.f&8)&&
(tstack[mtri].c.f&1)&&
((tstack[mtri].b.f&8))&&
((tstack[mtri].b.f&1))&&
(tstack[mtri].ugls==0)
){
ntri++;
tstack[ntri].a.x=tstack[mtri].a.x;
tstack[ntri].a.y=tstack[mtri].a.y;
tstack[ntri].b.x=tstack[mtri].aj[3].x;
tstack[ntri].b.y=tstack[mtri].aj[3].y;
tstack[ntri].c.x=tstack[mtri].bj[3].x;
tstack[ntri].c.y=tstack[mtri].bj[3].y;
tstack[ntri].fl=1;
tstack[mtri].fl=1;
ntri++;
tstack[ntri].a.x=tstack[mtri].a.x;
tstack[ntri].a.y=tstack[mtri].a.y;
tstack[ntri].c.x=tstack[mtri].bj[0].x;
tstack[ntri].c.y=tstack[mtri].bj[0].y;
tstack[ntri].b.x=tstack[mtri].bj[3].x;
tstack[ntri].b.y=tstack[mtri].bj[3].y;
tstack[mtri].b.x=tstack[mtri].bj[0].x;
tstack[mtri].b.y=tstack[mtri].bj[0].y;
tstack[mtri].c.x=tstack[mtri].cj[0].x;
tstack[mtri].c.y=tstack[mtri].cj[0].y;
tstack[ntri].fl=1;
tstack[mtri].fl=1;
};
if(
(tstack[mtri].a.in==1)&&
(tstack[mtri].b.in==0)&&
(tstack[mtri].c.in==0)&&
(tstack[mtri].a.f&4)&&
(tstack[mtri].c.f&8)&&
((tstack[mtri].b.f&8))&&
((tstack[mtri].b.f&4))&&
(tstack[mtri].ugls==0)
){
ntri++;
tstack[ntri].a.x=tstack[mtri].a.x;
tstack[ntri].a.y=tstack[mtri].a.y;
tstack[ntri].b.x=tstack[mtri].aj[2].x;
tstack[ntri].b.y=tstack[mtri].aj[2].y;
tstack[ntri].c.x=tstack[mtri].bj[2].x;
tstack[ntri].c.y=tstack[mtri].bj[2].y;
tstack[ntri].fl=1;
tstack[mtri].fl=1;
ntri++;
tstack[ntri].a.x=tstack[mtri].a.x;
tstack[ntri].a.y=tstack[mtri].a.y;
tstack[ntri].c.x=tstack[mtri].bj[3].x;
tstack[ntri].c.y=tstack[mtri].bj[3].y;
tstack[ntri].b.x=tstack[mtri].bj[2].x;
tstack[ntri].b.y=tstack[mtri].bj[2].y;
tstack[mtri].b.x=tstack[mtri].bj[3].x;
tstack[mtri].b.y=tstack[mtri].bj[3].y;
tstack[mtri].c.x=tstack[mtri].cj[3].x;
tstack[mtri].c.y=tstack[mtri].cj[3].y;
tstack[ntri].fl=1;
tstack[mtri].fl=1;
};
}
...
}
soflot
зато у тебя отформатировано аккуратно.
порадовал FON:
delete [32] FON;
delete [] granati;
delete [] Objects;
soflot
> ){
вот оно - истинное зло фигурной скобки :)
Ну, кстати, я свою первую игрушку тоже написал в консоли, но уже тогда если я не знал как что-то сделать или делал это не особо хорошо, я гуглил и смотрел как делают другие люди. Потом уже начал использовать классы для более менее адекватной структуры кода, сейчас уже хочу начать использовать принципы ООП хоть немного =) К примеру то же наследование можно и не использовать, но с ним красивее и гуру оценят!
>>наследование можно и не использовать, но с ним красивее и гуру оценят
С ним нужно делать, если использовать ООП. И дело не в гуру или красивее, а в удобстве и гибкости кода.
AIIIBAP
> К примеру то же наследование можно и не использовать, но с ним красивее и гуру
> оценят!
Ага.
Кстати, не забудь применить парочку метапаттернов, чтобы гуру тебя сразу приняли в свои.
Блин смеялись всем офисом...
!player2_strelok_ruka1_udar_sleva_tex||!player2_strelok_ruka1_vintovka_tex||!player2_strelok_ruka1_pistol_tex||
!zayac_go_tex||!zayac_uhi_k_tex||!zayac_uhi_s_tex||!zayac_uhi_tex||
!zayac_boshka_tex||!zayac_boshka_bezuh_tex||
!volk_go_tex||!volk_trup1_a_tex||!volk_trup1_b_tex||!volk_trup1_c_tex||
!medved_go_tex||!medved_boshka1_tex||
УГ-шный яндекс.народ, не могу скачать бонус. ай-да заливку на зеркало