From: Konstantin T. <an...@ya...> - 2010-09-14 18:25:59
|
<BLOCKQUOTE style="border-left:1px solid #CCCCCC;margin:0pt 0pt 0pt 0.8ex;padding-left:1em;" mce_style="border-left:1px solid #CCCCCC;margin:0pt 0pt 0pt 0.8ex;padding-left:1em;" ><br /> <PRE wrap="" >А может, дождёмся показаний профайлера? Код должен быть понятен. И только потом быстр. Чёрт, да ты же и без меня это прекрасно знаешь !!! Тем более что создание этих интерфейсов будет выполнено в самом начале игры (там где у тебя нынче выбор между alphabeta и другим ботом). Сами вызовы будут те же. Просто будет разделена ответственнность класса Player. Не вижу никаких причин для тормозов (кроме, возможно, своих кривых рук). Опять же удобства для добавления сети и новых типов ботов. </PRE></BLOCKQUOTE><br />Или моих :)<br />Мое отношение к этому коду такое: <br />а) оно не очень понятно<br />б) оно работает (значит не трожь)<br />в) оно не мешает развитию<br />г) оно содержит компоненты, которые должны быть в классе делегата игрока, но не в самом игроке<br /><br /><META http-equiv="content-type" content="text/html; charset=utf-8" style="" id="" ></META><BLOCKQUOTE mce_style="border-left:1px solid #CCCCCC;margin:0pt 0pt 0pt 0.8ex;padding-left:1em;" style="" id="" ><PRE wrap="" style="" >======================================================= </PRE><BLOCKQUOTE type="cite" style="" ><PRE wrap="" style="" >Card<SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #000000;" style="" >*</SPAN>CardList<SPAN mce_style="color: #000000;" style="" >::</SPAN>exists<SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #000000;" style="" >(</SPAN><SPAN mce_style="color: #808000;" style="" >int</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN>aFace<SPAN mce_style="color: #000000;" style="" >,</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #808000;" style="" >int</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN>aSuit<SPAN mce_style="color: #000000;" style="" >)</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #808000;" style="" >const</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #000000;" style="" >{</SPAN> <SPAN mce_style="color: #c0c0c0;" style="" > </SPAN>Card<SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #000000;" style="" >*</SPAN>c<SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #000000;" style="" >=</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN>newCard<SPAN mce_style="color: #000000;" style="" >(</SPAN>aFace<SPAN mce_style="color: #000000;" style="" >,</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN>aSuit<SPAN mce_style="color: #000000;" style="" >);</SPAN> <SPAN mce_style="color: #c0c0c0;" style="" > </SPAN>Card<SPAN mce_style="color: #000000;" style="" >*</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN>ret<SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #000000;" style="" >=</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN>exists<SPAN mce_style="color: #000000;" style="" >(</SPAN>c<SPAN mce_style="color: #000000;" style="" >);</SPAN> <SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #008000;" style="" >//</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #008000;" style="" >delete</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #008000;" style="" >c;</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #008000;" style="" >//</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #008000;" style="" >TODO</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #008000;" style="" >:</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #008000;" style="" >memory</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #008000;" style="" >leak.</SPAN> <SPAN mce_style="color: #c0c0c0;" style="" > </SPAN><SPAN mce_style="color: #808000;" style="" >return</SPAN><SPAN mce_style="color: #c0c0c0;" style="" > </SPAN>ret<SPAN mce_style="color: #000000;" style="" >;</SPAN> <SPAN mce_style="color: #000000;" style="" >}</SPAN></PRE></BLOCKQUOTE><PRE wrap="" style="" >Напоминает memory leak. Поглядел потом внутрь exists и понял что ошибся. Однако не стоит ли перейти на QSharedPointer<SPAN mce_style="color: #000000;" style="" > или хранить структуры просто как ValueType (без указателя)? Или снова боязнь замедления всего сущего? </SPAN>======================================================= Кроме того, вместо CardUtils, по-моему, имеет смысл сразу при сдаче делить карты на 4 масти и работать уже с этими мастями. А не делать по линейному массиву карт постоянные выборки типа minInSuit(1..4). Вот это как раз и будет замедлять программу, а не ООП. ======================================================= P.S. Ещё раз прошу извинений за возможные обиды. P.P.S. Так где можно на roadmap проекта глянуть? </PRE></BLOCKQUOTE><br />На сайте, <A href="http://openpref.sourceforge.net/ru/development/" style="" id="" >openpref.sourceforge.net/ru/development/</A><br /><META http-equiv="content-type" content="text/html; charset=utf-8" style="" id="" ></META>-- <br />Regards,<br />Konstantin<br /> |