Опа, вижу мою поделку уже kruz25 пропиарил ;)
An147, если пригодится, могу дать скидку, к примеру 70% на Pro версию. Такому титану мысли и мастеру условий ветвления не жалко ;)))
Да пожалуй, и все 80% можно скинуть ;)
Мне понравился условный оператор, который привел Shock_ua - http://www.gamedev.ru/projects/forum/?id=160897#m11
Решил попробовать отрефакторить его при помощи http://gorgeous-karnaugh.com/tutorials/about/professional.html
Процесс вроде пошел - у An147 выражение слишком тяжелое, сразу все не реально обработать, стал по паре строк минимизировать. Первые несколько строк сократились на вскидку раза в два. В принципе, там банальщина - переменные просто дублируются в условии, но в такой каше дубли мало реально найти, а моя программа вроде все находит. Сегодня уже лениво дальше ковырять, завтра посижу, преобразую все выражение, думаю, что здорово уменьшится.
А вообще, у меня софтина для железячников, фичи для програмеров я прилепил для расширения ассортимента так сказать, и все искал где-нибудь в реальной жизни пример, который можно отрефакторить, и на который можно сослаться, и тут An147 мне его на тарелочке выложил ;) Спасибо ;)
Отрефакторю, выложу тут, а вы проверите, все также работает, или что-то неправильно сделано.
А, и вот еще, друзья.
Вы когда на сайт заходите, кликните в внутри какого-нибудь прямоугольника, вам все равно, а мне S приятно S ;)
Да это же ...
опенсурс моей мечты!
marty007
Спасибо, мне подобные проги пока не нужны) я вроде вылечил рак мозга стараюсь больше так не писать
marty007
> Мне понравился условный оператор, который привел Shock_ua -
> http://www.gamedev.ru/projects/forum/?id=160897#m11
> В принципе, там банальщина - переменные просто дублируются в условии,
ммм..где там что-то дублируется? там имена хендлеров текстур, спрайтов, звуков и прочего, и они не повторяются, там вроде нечего рефакторить) разве что хитрожопым макросом сшивать имена переменных, говнокод ради говнокода)
Вот годные образцы:
+ Показать
− Скрыть
if((((py<vragi3Objects[i80].ill1_y+200&&py>vragi3Objects[i80].ill1_y+105&&px<=vragi3Objects[i80].ill1_x&&px>vragi3Objects[i80].ill1_x-600*lag)||
(p1d1y<vragi3Objects[i80].ill1_y+200&&p1d1y>vragi3Objects[i80].ill1_y+105&&p1d1x<=vragi3Objects[i80].ill1_x&&p1d1x>vragi3Objects[i80].ill1_x-600*lag)||
(p1d2y<vragi3Objects[i80].ill1_y+200&&p1d2y>vragi3Objects[i80].ill1_y+105&&p1d2x<=vragi3Objects[i80].ill1_x&&p1d2x>vragi3Objects[i80].ill1_x-600*lag)||
(p1d3y<vragi3Objects[i80].ill1_y+200&&p1d3y>vragi3Objects[i80].ill1_y+105&&p1d3x<=vragi3Objects[i80].ill1_x&&p1d3x>vragi3Objects[i80].ill1_x-600*lag)||
(p1d4y<vragi3Objects[i80].ill1_y+200&&p1d4y>vragi3Objects[i80].ill1_y+105&&p1d4x<=vragi3Objects[i80].ill1_x&&p1d4x>vragi3Objects[i80].ill1_x-600*lag))&&
aktivatorp==1&&x-55>vragi3Objects[i80].ill1_x&&vragi3Objects[i80].ubit!=1)||
(((p2y<vragi3Objects[i80].ill1_y+200&&p2y>vragi3Objects[i80].ill1_y+105&&p2x<=vragi3Objects[i80].ill1_x&&p2x>vragi3Objects[i80].ill1_x-600*lag)||
(p2d1y<vragi3Objects[i80].ill1_y+200&&p2d1y>vragi3Objects[i80].ill1_y+105&&p2d1x<=vragi3Objects[i80].ill1_x&&p2d1x>vragi3Objects[i80].ill1_x-600*lag)||
(p2d2y<vragi3Objects[i80].ill1_y+200&&p2d2y>vragi3Objects[i80].ill1_y+105&&p2d2x<=vragi3Objects[i80].ill1_x&&p2d2x>vragi3Objects[i80].ill1_x-600*lag)||
(p2d3y<vragi3Objects[i80].ill1_y+200&&p2d3y>vragi3Objects[i80].ill1_y+105&&p2d3x<=vragi3Objects[i80].ill1_x&&p2d3x>vragi3Objects[i80].ill1_x-600*lag)||
(p2d4y<vragi3Objects[i80].ill1_y+200&&p2d4y>vragi3Objects[i80].ill1_y+105&&p2d4x<=vragi3Objects[i80].ill1_x&&p2d4x>vragi3Objects[i80].ill1_x-600*lag))&&
aktivatorp2==1&&x2-55>vragi3Objects[i80].ill1_x&&vragi3Objects[i80].ubit!=1))
− Скрыть
if(N_WEAPON1==5||N_WEAPON1==8)
{
if(perez_time==0)
{
if(perez_akt==57)
{oboima_text->printf(x-35+Xz, y-28, HGETEXT_CENTER, "[- ]");}
if(perez_akt==58)
{
oboima_text->printf(x-35+Xz, y-28, HGETEXT_CENTER, "[-- ]");
if(perez_akt_milli==perez_time_milli){ak_perez2();}
}
if(perez_akt==59&&perez_akt_milli<perez_time_milli)
{oboima_text->printf(x-35+Xz, y-28, HGETEXT_CENTER, "[---]");}
}
if(perez_time==1)
{
if(perez_akt==58)
{oboima_text->printf(x-35+Xz, y-28, HGETEXT_CENTER, "[- ]");}
if(perez_akt==59)
{
oboima_text->printf(x-35+Xz, y-28, HGETEXT_CENTER, "[-- ]");
if(perez_akt_milli==perez_time_milli){ak_perez2();}
}
if(perez_akt==0&&perez_akt_milli<perez_time_milli)
{oboima_text->printf(x-35+Xz, y-28, HGETEXT_CENTER, "[---]");}
}
if(perez_time==2)
{
if(perez_akt==59)
{oboima_text->printf(x-35+Xz, y-28, HGETEXT_CENTER, "[- ]");}
if(perez_akt==0)
{
oboima_text->printf(x-35+Xz, y-28, HGETEXT_CENTER, "[-- ]");
if(perez_akt_milli==perez_time_milli){ak_perez2();}
}
if(perez_akt==1&&perez_akt_milli<perez_time_milli)
{oboima_text->printf(x-35+Xz, y-28, HGETEXT_CENTER, "[---]");}
}
if(perez_time==3)
{
if(perez_akt==0)
{oboima_text->printf(x-35+Xz, y-28, HGETEXT_CENTER, "[- ]");}
if(perez_akt==1)
{
oboima_text->printf(x-35+Xz, y-28, HGETEXT_CENTER, "[-- ]");
if(perez_akt_milli==perez_time_milli){ak_perez2();}
}
if(perez_akt==2&&perez_akt_milli<perez_time_milli)
{oboima_text->printf(x-35+Xz, y-28, HGETEXT_CENTER, "[---]");}
}
}
− Скрыть
if(fightforfun->current_level==1)
{
if(player::x<-640&&player::y<800&&player::inside==true)
{player::x=-640;}
if(player::x+player::w>1920&&player::y<800&&player::inside==true)
{player::x=1920-player::w;}
if(player::x+player::w<-620&&player::x+player::w>-640&&player::y<800&&player::inside==false)
{player::x=-640-player::w;}
if(player::x>1900&&player::x<1920&&player::y<800&&player::inside==false)
{player::x=1920;}
if((player::x+player::w<-640||player::x>1920)&&player::y>=800&&player::inside==true)
{player::inside=false;}
if(player::x+player::w>=-640&&player::x<=1920&&player::y>=800&&player::inside==false)
{player::inside=true;}
}
− Скрыть
if(player::y<=(*i)->by+32&&player::y>=(*i)->by+16&&
st_x==true&&player::ty!=(*i)->by&&player::speedy<0&&(*i)->type>0&&(*i)->type!=2&&(*i)->type!=10)
{
if((*i)->type!=4&&(*i)->type!=6&&(*i)->type!=8)
{player::speedy=0;}
if((*i)->type==4||(*i)->type==6)
{player::speedy*=0.95f;}
if((*i)->type==8)
{player::speedy=4;}
}
if(player::y<(*i)->by+30&&player::y+player::h>(*i)->by&&
player::x<(*i)->bx+32&&player::x>(*i)->bx+28&&player::x+player::w>(*i)->bx+32&&player::speedx<0&&(*i)->type>0&&(*i)->type!=2&&(*i)->type!=10)
{ if((*i)->type!=4&&(*i)->type!=6&&(*i)->type!=8)
{player::x=(*i)->bx+32;}
if((*i)->type==4||(*i)->type==6)
{player::speedx*=0.95f;}
if((*i)->type==8)
{player::speedx=4;}
}
if(player::y<(*i)->by+30&&player::y+player::h>(*i)->by&&
player::x>(*i)->bx-30&&player::x<(*i)->bx-26&&player::x<(*i)->bx&&player::speedx>0&&(*i)->type>0&&(*i)->type!=2&&(*i)->type!=10)
{
if((*i)->type!=4&&(*i)->type!=6&&(*i)->type!=8)
{player::x=(*i)->bx-30;}
if((*i)->type==4||(*i)->type==6)
{player::speedx*=0.95f;}
if((*i)->type==8)
{player::speedx=-4;}
}
Автор, молодчага что довел проект до рабочего состояния! Но с сырцов лежал весь офис =)))
Этот код поражает моё воображение, я бы не смог такое отладить.
после astyle вышло 25к кода. Солидно для одного файла... Хотя конечно кода слишком много для того, что он делает.
Спасибо автору, наш анализатор кода вылетел на анализе FrameFunc по часовому таймауту Т_Т
Так вот ты какой, brainfuck, переведенный на C с помощью google translate )
Предлагаю дать пожизненный статус участника на gamedev.ru тому, кто успешно отрефакторит данный код до классов )
Shalom
> Предлагаю дать пожизненный статус участника на gamedev.ru тому, кто успешно
> отрефакторит данный код до классов )
Ха, ну так я это и сделал: взял старый функционал и переписал с нуля (правда получилось без волков и медведов, и без прокачки с классами), или это за рефакторинг не считается? =)
An147
> взял старый функционал и переписал с нуля
Неспортивно.