Обеспечение всемирной трансляции спортивных шахматных соревнований с применением разработанного в ходе проекта законченного программного продукта
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
takes some seconds.
When sent with address 0 the command is processed on all conected boards
DEFINITION OF THE MESSAGE DATA FORMATS FROM BOARD TO PC
-------------------------------------------------------
General: the message format is:
byte 1: message type byte (MSB = 1)
byte 2: message length MSB (from byte 1 to checksum) (D7=0)
byte 3: message length LSB (containing D0 to D6 of the length (D7 = 0)
byte 4: board address MSB (D7=0)
byte 5: board address LSB (D7=0)
last byte: checksum. This is the sum of all byte values from byte 1 to
the byte before this checksum. D7 is forced to 0
DGT_MSG_BUS_BRD_DUMP
the data area contains the piece codes from field 1 to field 64, in format
identical as the single board command
DGT_MSG_BUS_BWTIME
the data area contains the clock time information, in format identical as
the single board command
DGT_MSG_BUS_UPDATE
the data area contains a variable amount of change information, formatted
as described in the DGT_DUMP_EEMOVES message
DGT_MSG_BUS_FROM_START
the data area contains a variable amount of change information, formatted
as described in the DGT_DUMP_EEMOVES message
DGT_MSG_BUS_PING
the data area is empty: a message of 6 bytes is returned.
DGT_MSG_BUS_START_GAME_WRITTEN
The same format as for DGT_MSG_BUS_PING
DGT_MSG_BUS_VERSION
The two data bytes contain binary version number: first byte main number
second byte sub number.
Tips for usage of the bus mode:
A. On connection of power and starting of the communication process:
- Check communication with addressed DGT_BUS_PING commands to all expected
boards.
LOOP:
- Send DGT_BUS_IGNORE_NEXT_PING to all found boards
- Check eventually extra boards or unknown board busnumbers by using
a DGT_BUS_PING with address zero.
- Register the found boards, and go to LOOP:, until no more boards are found
B. At the start of an event: when all boards have pieces in starting
position, send DGT_BUS_SET_START_GAME commands to all boards.
- Read full clock times from all boards.
C. During a game: send DGT_BUS_SEND_CHANGES to all boards sequentially,
once every few seconds. The returned data should logically match
with the expected piece positions. When any mismatch occurs: ask full
position with DGT_BUS_SEND_BRD.
D. When previous data are lost: send a DGT_BUS_SEND_FROM_START command
which returns the full registered changes from the starting position.
On every sent message: The responce time at the board is within milliseconds
normally, except when the board is storing a measured change in the
internal EEPROM: Then the responce time can be up to 20 milliseconds.
So allow a time-out on sent messages of say 80 mS.
Checksum errors: when a received checksum does not match, resend the command
except on the DGT_BUS_SEND_CHANGES: then the command DGT_BUS_REPEAT_CHANGES
should be used, to avoid discarding of the changes sent by the board.
On clock data:
- reading data out of the clock and make them available
for communication causes a delay of up to 1 second between clock display
and received data.
*/
#endif
Приложение Ж
Общая структура транслятора шахматных партий
Приложение З
Общая структура регистратора шахматных партий
Приложение И
Анализ результатов тестовых испытаний
№ п/пПоказательАбсолютный
количественный показательОтносительный количественный показатель в %Степень соответствия условиям соревновательного процесса
(субъективная оценка главного арбитра соревнований)1Количество сбоев в работе СШПО в ходе всего сорев-новательного про-цесса0 ПОЛНОСТЬЮ СООТВЕТСТВУЕТ2Количество вре-менных простоев в работе СШПО в ходе всего сорев-новательного про-цесса0 ПОЛНОСТЬЮ СООТВЕТСТВУЕТ3Количество несоот-ветствий отобража-емого хода ходу, сделанному на ша-хматной доске50,48ПОЛНОСТЬЮ СООТВЕТСТВУЕТ4Количество вре-менных задержек в ходе отображения игрового процесса10,01ПОЛНОСТЬЮ СООТВЕТСТВУЕТ5Количество вре-менных задержек переноса шахмат-ных партий в элек-тронную форму10,01ПОЛНОСТЬЮ СООТВЕТСТВУЕТ
Директор СП ШК Амзоров А.М.
Главный арбитр соревнований Федоров В.Н.
Приложение К
Листинг модуля вещания шахматных партий
// Фигура
var Figure = {
create: function(color, type, vertical) {
function figure() {}
var self = new figure();
self.id = color + type + vertical;
self.image = document.createElement(img);
self.image.src = get_image_path() + (color + type + .gif).toLowerCase();
self.image.size = 8x8;
return self;
}
};
// Поле доски
var Field = {
create: function(vertical, horizontal) {
function field() {}
var self = new field();
// Идентификатор поля, соответствует ячейке в таблице, являющейся шахматной доской
self.id = "field" + vertical + horizontal;
self.horizontal = horizontal;
self.vertical = vertical;
self.cell = $(self.id);
//
function v(letter) {
letter = letter.toLowerCase();
if(letter == a) {
return 1;
}
if(letter == b) {
return 2;
}
if(letter == c) {
return 3;
}
if(letter == d) {
return 4;
}
if(letter == e) {
return 5;
}
if(letter == f) {
return 6;
}
if(letter == g) {
return 7;
}
if(letter == h) {
return 8;
}
return 0;
}
var vv = v(self.vertical);
var hh = parseInt(self.horizontal);
function isWhite(summa) {
var is_white = (summa / 2) - (Math.floor(summa / 2)) == 0;
//log(summa + - + is_white);
return !is_white;
}
self.cell.className = isWhite(vv + hh) ? board_white_field : board_black_field;
self.set_figure = function(figure) {
if(figure == null) {
log(null in + self.id);
}
self.delete_figure();
self.cell.appendChild(figure.image);
self.current_figure = figure;
}
self.init_figure = function(figure) {
self.set_figure(figure);
self.first_figure = figure;
self.last_figure = figure;
}
self.delete_figure = function() {
this.cell.innerHTML = "";
}
self.first_figure = null;
self.current_figure = null;
self.last_figure = null;
return self;
}
};
// Ход шахматной партии
var Move = {
create: function() {
function move() {}
var self = new move();
self.color = ;
self.next = null;
self.prev = null;
self.number = 0;
self.field_from = null;
self.field_to = null;
self.figure = null;
self.figure_dead = null;
self.is_short_castling = false;
self.is_long_cast