//+------------------------------------------------------------------+//| CChessman.mqh |//| Copyright 2012, Yury V. Reshetov |//| http://www.mql5.com |//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Yury V. Reshetov"
#property link "http://www.mql5.com"//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+class CChessman // Класс: шахматная фигура
{
private :
int type; // Тип фигуры: // 0 - пешка,// 1 - ладья// 2 - конь// 3 - слон// 4 - ферзь// 5 - корольint c; // Цвет фигуры: 0 - белый, 1 - черный int h; // Положение фигуры по горизонталиint v; // Положение фигуры по вертикалиbool state; // Состояние фигуры: true - на доске, false - взята противникомpublic :
void CChessman( int t, int horisontal, int vertical, intgroup ); // Конструкторvoid ~CChessman(); // Деструктор// Изменение местонахождения фигуры на доске// Возвращает результат, если изменение корректно и было выполненоbool setPosition( int horisontal, int vertical); // Изменение позиции фигуры на доскеvoid erase(); // Вызывается, если фигура взята противникомint getType(); // Возвращает тип фигурыint getHPosition(); // Возвращает положение фигуры на доске по вертикалиint getVPosition(); // Возвращает положение фигуры на доске по горизонталиint getColor(); // Возвращает цвет фигурыbool getState(); // Возвращает текущий статус фигуры
};
//+------------------------------------------------------------------+//| Конструктор |//+------------------------------------------------------------------+void CChessman::CChessman( int t, int horisontal, int vertical, intgroup )
{
state= true ;
type = t;
h = horisontal;
v = vertical;
c = group ;
}
//+------------------------------------------------------------------+//| Изменение позиции фигуры на доске |//+------------------------------------------------------------------+bool CChessman::setPosition( int horisontal, int vertical)
{
if (!state)
{
return ( false );
}
if (horisontal< 0 )
{
return ( false );
}
if (horisontal> 7 )
{
return ( false );
}
if (vertical< 0 )
{
return ( false );
}
if (vertical> 7 )
{
return ( false );
}
h = horisontal;
v = vertical;
return ( true );
}
//+------------------------------------------------------------------+//| Удаление фигуры с доски |//+------------------------------------------------------------------+void CChessman::erase( void )
{
state= false ;
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+int CChessman::getType( void )
{
return (type);
}
//+------------------------------------------------------------------+//| Возвращает горизонтальное положение фигуры на доске |//+------------------------------------------------------------------+int CChessman::getHPosition( void )
{
return (h);
}
//+------------------------------------------------------------------+//| Возвращает вертикальное положение фигуры на доске |//+------------------------------------------------------------------+int CChessman::getVPosition( void )
{
return (v);
}
//+------------------------------------------------------------------+//| Возвращает цвет фигуры |//+------------------------------------------------------------------+int CChessman::getColor( void )
{
return (c);
}
//+------------------------------------------------------------------+//| Возвращает статус фигуры |//+------------------------------------------------------------------+bool CChessman::getState( void )
{
return (state);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+//| CChessmansArray.mqh |//| Copyright 2012, Yury V. Reshetov |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2012, Yury V. Reshetov"#property link "http://www.mql5.com"#include <Chess/CChessman.mqh>//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+class CChessmansArray // Класс: Шахматная доска
{
private :
CChessman *table[]; // Массив шахматных фигурpublic :
void CChessmansArray(); // Конструкторvoid ~CChessmansArray(); // Деструктор
CChessman *getChessman( int i);
void goWhite(); // Ход белыхvoid goBlack(); // Ход черных
};
//+------------------------------------------------------------------+//| Конструктор |//+------------------------------------------------------------------+void CChessmansArray::CChessmansArray( void )
{
ArrayResize (table, 32 );
table[ 0 ] = new CChessman( 1 , 0 , 0 , 1 ); // Левая белая ладья
table[ 1 ] = new CChessman( 2 , 1 , 0 , 1 ); // Левый белый конь
table[ 2 ] = new CChessman( 3 , 2 , 0 , 1 ); // Левый белый слон
table[ 3 ] = new CChessman( 4 , 3 , 0 , 1 ); // Белый ферзь
table[ 4 ] = new CChessman( 5 , 4 , 0 , 1 ); // Белый король
table[ 5 ] = new CChessman( 3 , 5 , 0 , 1 ); // Правый белый слон
table[ 6 ] = new CChessman( 2 , 6 , 0 , 1 ); // Правый белый конь
table[ 7 ] = new CChessman( 1 , 7 , 0 , 1 ); // Правая белая ладья
table[ 0 ] = new CChessman( 0 , 0 , 1 , 1 ); // Белая пешка
table[ 1 ] = new CChessman( 0 , 1 , 1 , 1 ); // Белая пешка
table[ 2 ] = new CChessman( 0 , 2 , 1 , 1 ); // Белая пешка
table[ 3 ] = new CChessman( 0 , 3 , 1 , 1 ); // Белая пешка
table[ 4 ] = new CChessman( 0 , 4 , 1 , 1 ); // Белая пешка
table[ 5 ] = new CChessman( 0 , 5 , 1 , 1 ); // Белая пешка
table[ 6 ] = new CChessman( 0 , 6 , 1 , 1 ); // Белая пешка
table[ 7 ] = new CChessman( 0 , 7 , 1 , 1 ); // Белая пешка
table[ 0 ] = new CChessman( 1 , 0 , 7 , - 1 ); // Левая черная ладья
table[ 1 ] = new CChessman( 2 , 1 , 7 , - 1 ); // Левый черный конь
table[ 2 ] = new CChessman( 3 , 2 , 7 , - 1 ); // Левый черный слон
table[ 3 ] = new CChessman( 4 , 3 , 7 , - 1 ); // Черный ферзь
table[ 4 ] = new CChessman( 5 , 4 , 7 , - 1 ); // Черный король
table[ 5 ] = new CChessman( 3 , 5 , 7 , - 1 ); // Правый черный слон
table[ 6 ] = new CChessman( 2 , 6 , 7 , - 1 ); // Правый черный конь
table[ 7 ] = new CChessman( 1 , 7 , 7 , - 1 ); // Правая Черная ладья
table[ 0 ] = new CChessman( 0 , 0 , 6 , - 1 ); // Черная пешка
table[ 1 ] = new CChessman( 0 , 1 , 6 , - 1 ); // Черная пешка
table[ 2 ] = new CChessman( 0 , 2 , 6 , - 1 ); // Черная пешка
table[ 3 ] = new CChessman( 0 , 3 , 6 , - 1 ); // Черная пешка
table[ 4 ] = new CChessman( 0 , 4 , 6 , - 1 ); // Черная пешка
table[ 5 ] = new CChessman( 0 , 5 , 6 , - 1 ); // Черная пешка
table[ 6 ] = new CChessman( 0 , 6 , 6 , - 1 ); // Черная пешка
table[ 7 ] = new CChessman( 0 , 7 , 6 , - 1 ); // Черная пешка
}
//+------------------------------------------------------------------+//| Возвращает объект фигуры по индексу в массиве |//+------------------------------------------------------------------+
CChessman *CChessmansArray::getChessman( int i)
{
return (table[i]);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+//| CChessBot.mqh |//| Copyright 2012, Yury V. Reshetov |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2012, Yury V. Reshetov"#property link "http://www.mql5.com"#include <Chess/CChessman.mqh>#include <Chess/CChessmansArray.mqh>//+------------------------------------------------------------------+//| Класс: бот-шахматист |//+------------------------------------------------------------------+class CChessBot // Класс: бот-шахматист
{
private :
CChessman *chessmans[]; // Шахматные фигурыint table[]; // Шахматная доскаint c; // Цвет фигур: 0 - белый, 1 - черныйpublic :
void CChessBot( int group); // Конструкторvoid ~CChessBot(); // Деструкторvoid setTable(CChessmansArray *t); // Расставляет фигурыint go(); // Ход. Возвращает индекс своей фигуры, которой был сделан ход. int analitic(); // Анализ ходов
};
//+------------------------------------------------------------------+//| Конструктор |//+------------------------------------------------------------------+void CChessBot::CChessBot( int group)
{
c=group;
}
//+------------------------------------------------------------------+//| Расстановка фигур на шахматной доске |//+------------------------------------------------------------------+void CChessBot::setTable(CChessmansArray *mans)
{
ArrayResize (chessmans, 32 );
ArrayResize (table, 64 );
for ( int i= 0 ; i< 32 ; i++)
{
chessmans[i]=mans.getChessman(i);
table[chessmans[i].getHPosition() * 8 + chessmans[i].getVPosition()] = chessmans[i].getType() * 2 + chessmans[i].getColor();
}
}
//+------------------------------------------------------------------+//| Полуход |//+------------------------------------------------------------------+int CChessBot::go( void )
{
return ( 0 );
}
//+------------------------------------------------------------------+
是的,游戏在性能和技术上给人以震撼。因为他们把硬件拉到了一个质的高度。(虽然我在大学认识的一位教授出于某种原因认为游戏是普遍的邪恶 :)
至于功能的普遍性,这里有进一步逐步实施的方向
- 天气预报
- 科学数据处理(空间、核物理)
- 制药学
- 三维渲染(作为金钱的实际应用)
然后我们再来看看汇率预测......
PS。
正如我所说,与UCI一起,可以为MT提出申请 :)
我不是在谈论云,云的能力很清楚。它也可以在MT之外使用。
我说的是MT。
我不认为在MT的基础上举行国际象棋机器人比赛有什么问题。而这些机器人也将使用云的计算资源。
也许真的放弃玩外汇而去下象棋?我曾经很擅长这个。
但我更喜欢双陆棋。也许有人能在MT5上编制双陆棋的程序,我会永远感激不尽。
扑克!让我们撕毁EPT!))))。
,如果我们承诺,我们会贯彻执行。例如,我们完全靠自己实现了AlgLib,尽管有一个让社区参与的想法。
到目前为止,人们感觉很少有人真正愿意参与到超额的项目中,并花费他们的时间。
到目前为止,人们感觉很少有人真正愿意参加超额的项目,浪费他们的时间。
我没有任何经验。 我以为你当时答应让你团队中的某个人成为项目 的导师。
没有牧羊人,羊群就会散开。因此,如果任何人在社区做任何事情,他们是唯一对其工作负责的人。
没有经验。你有点答应让你团队中的某个人担任该项目的策展人。
但没有牧羊人,羊就会四散。因此,如果有人在社区中做某事,那么只有他一个人对他的工作负责。
不仅仅是螺栓学方面的经验。让我们这样盲目,让我们那样坐下,等等。等等按照祖父克雷洛夫的寓言称为四重奏。没有人做任何事,每个聪明面孔的人都只是发表意见。
不需要策展人用棍子敦促每个人。项目经理必须创建第一行代码——未来类的接口,从中它已经或多或少地清楚地在哪里跳得更远,在哪里是死胡同。然后,某个项目参与者证明了他将要做什么,如果他的潜在活动与总体方向不矛盾,那么他被委托实施他的想法。然后其他一些参与者连接。等等。等等
例如,这里有空闲时间,这里我扔了一些国际象棋程序的课程草图:
现在您可以在存储库中创建一个项目并将其他开发人员连接到它。但不是所有想在那里表达某种意见的人,而是来自那些打算做一些具体事情的人。
尤里,用国际象棋引擎很清楚--这个话题已经被其他人很好地解决了。
如果你接手,你必须使用积累的经验和10000%的初始和极其磨牙的优化设置(位卡、预设等)。
你不能用ABC和错误从头开始。没有 "过早的优化是邪恶的"。在这里,你需要的是在实施基于国际象棋的数字计算方面的极端经验。
幸运的是,在公共领域有许多文章、资料和对它们的详细解释。当你开始阅读这个主题时,你会立即明白所取得的解决方案的极端水平。
尤里,用国际象棋引擎很清楚--这个话题已经被其他人很好地解决了。
如果你接手,你必须使用积累的经验和10000%的初始和极其磨牙的优化设置(位卡、预设等)。
你不能用ABC和错误从头开始。没有 "过早的优化是邪恶的"。在这里,你需要的是在实施基于国际象棋的数字计算方面的极端经验。
幸运的是,在公共领域有许多文章、资料和对它们的详细解释。只要你开始阅读这个主题,你就会立即明白所取得的解决方案的极端水平。
我也有一些文献,博特文尼克还是纸质的。当然,我也有一些发展,不是用MQL5,而是用muLisp。
我曾试图向一些当地的开发商展示,他们的项目 不需要监督员。我需要一个由特定开发人员组成的团队,他们可能不是所有技术的专家,甚至可能是其领域的专家,但尽管如此,他们在其领域是有能力的。而且你需要一个项目经理,他将初步思考并为团队其他成员准备好这一切,这样项目就不会从头开始,你就可以在介绍性的短文之后,马上进入正题。否则,事情将无法起步。