Главная » Учебные материалы » Информатика » Выпускные квалификационные работы (ВКР) » Обеспечение всемирной трансляции спортивных шахматных соревнований с применением разработанного в ходе проекта законченного программного продукта

Обеспечение всемирной трансляции спортивных шахматных соревнований с применением разработанного в ходе проекта законченного программного продукта

Описание

Обеспечение всемирной трансляции спортивных шахматных соревнований с применением разработанного в ходе проекта законченного программного продукта

Содержание

  • Рисунок 6 – Модель процесса "делать, пока, не будет сделано”
  • а) Краткое описание фаз каскадной модели
  • б) Преимущества каскадной модели
  • в) Недостатки каскадной модели
  • г) Область применения каскадной модели
  • а) Практики экстремальной методологии
  • Технико-экономическое обоснование проекта
  • Целесообразность и область применения разработки
  • Эффект от внедрения информационных систем
  • Информатизация деятельности СП «ШК»
  • 4. Безопасность и экологичность проекта
  • 4.1 Безопасность труда
  • 4.1.1 Анализ условий труда на рабочем месте инженера структурного подразделения «Шахматный клуб» ГОУ ВПО «СибГИУ»
  • 4.1.2 Мероприятия по безопасности труда
  • 4.2 Чрезвычайные ситуации
  • 4.2.1 Электробезопасность
  • 4.2.2 Пожарная безопасность
  • 4.2.3 Организационно-штатная структура по ГО и ЧС.
  • 4.2.4 Чрезвычайные ситуации, которые могут возникнуть на территории ГОУ ВПО «СибГИУ».
  • 4.2.5 Способы оповещения при ЧС
  • 4.2.6 Действия по видам сообщения при передачи сигнала «Внимание всем!»
  • 4.2.7 Организация защиты сотрудников и студентов СибГИУ при возникновении ЧС мирного и военного времени
  • 4.3 Экологичность проекта
  • '42x25', :border => 0, :alt => 'http://dgtprojects.com'), 'http://dgtprojects.com') %>
  • main/enter.rhtml --- Имя: Пароль: 'register' }%> 'remind' }%> main/game.rhtml --- '16x16' %> 'players', :action => 'show', :id => @game.black_player.id } %> '16x16' %> 'players', :action => 'show', :id => @game.white_player.id} %> 'moves', :url => { :action => 'game_moves', :id => @game.id } %> main/logo.rhtml --- 'Шахматный портал rDGT', :width => '400px', :height => '280px' %> 'online' }%> 'offline' }%> 'enter' } %> main/online.rhtml --- Начало Турнир Белые Черные '16x16', :onclick => '', :alt => 'Просмотр трансляции'), { :action => 'game', :id => game.id }) %> 'tournaments', :action => 'show', :id => game.tournament.id } %> 'players', :action => 'show', :id => game.white.id } %> 'players', :action => 'show', :id => game.black.id } %> Модель (model) --- class Cities < ActiveRecord::Base end class City < ActiveRecord::Base end class ClockReglament < ActiveRecord::Base end class Country < ActiveRecord::Base end class CurrentGame < ActiveRecord::Base def init @game = Game.find(self.game_id) if @game.nil? end def tournament init @game.tournament end def white init @game.white_player end def black init @game.black_player end end class Game < ActiveRecord::Base def moves result = "" @moves = Move.find_all_by_game_id self.id @moves.sort { |movea, moveb| movea.number moveb.number }.each do |move| result += move.to_s + "|" end result end def tournament info = GameInfo.find self.game_info_id unless self.game_info_id.nil? t = Tournament.find info.tournament_id end def white_player player = Player.new player.id= 1 player.first_name = "Иван" player.second_name = "Рыков" player end def black_player player = Player.new player.id= 1 player.first_name = "Сергей" player.second_name = "Бедарев" player end end class GameInfo < ActiveRecord::Base end class LastMove < ActiveRecord::Base end class Move < ActiveRecord::Base def to_s ((self.white_move.nil? or self.white_move == "") ? "******" : self.white_move) + ((self.black_move.nil? or self.black_move == "") ? "******" : self.black_move) + ":" + (self.white_clock.nil? ? "" : self.white_clock) + "-" + (self.black_clock.nil? ? "" : self.black_clock) end end class Player < ActiveRecord::Base def full_name return self.second_name + " " + self.first_name end def to_s full_name end end class Tournament < ActiveRecord::Base def to_s self.name end end class TournamentView < ActiveRecord::Base end require 'digest/md5' class User < ActiveRecord::Base validates_presence_of :login validates_uniqueness_of :login def self.authenticate(login, password) user = User.find_by_name(login) if user expected_password = encrypted_password(password) if user.password != expected_password user = nil end end user end def self.encrypted_password(password) Digest::MD5.hexdigest("sdjkvkjeho2ijij2o3d2kn3dl2kn3dn23dkn2ld3n" + password) end end Миграция (db migration) --- ActiveRecord::Schema.define(:version => 12) do create_table "cities", :force => true do |t| t.column "name", :string, :limit => 30 t.column "country_id", :integer t.column "description", :text t.column "image", :binary end create_table "clock_reglaments", :force => true do |t| t.column "title", :string, :limit => 30 t.column "total_time", :integer t.column "add", :boolean, :limit => nil, :default => false t.column "add_time", :integer, :default => 0 t.column "desciprion", :text end create_table "countries", :force => true do |t| t.column "name", :string, :limit => 30 t.column "code", :string, :limit => 30 t.column "image", :binary t.column "description", :text end create_table "current_games", :force => true do |t| t.column "game_id", :integer t.column "begin", :datetime t.column "end", :datetime t.column "description", :text end create_table "game_infos", :force => true do |t| t.column "game_id", :integer t.column "white_id", :integer t.column "black_id", :integer t.column "tournament_id", :integer t.column "result", :integer t.column "clock_reglament_id", :integer t.column "round", :integer t.column "debut_code", :string, :limit => 30 t.column "description", :text t.column "status", :string, :limit => 30 end create_table "games", :force => true do |t| t.column "game_info_id", :integer t.column "begin", :datetime t.column "end", :datetime t.column "desciption", :text end create_table "last_moves", :force => true do |t| t.column "move_id", :integer t.column "move_time", :datetime end create_table "moves", :force => true do |t| t.column "number", :integer t.column "game_id", :integer t.column "white_move", :string, :limit => 6 t.column "black_move", :string, :limit => 6 t.column "white_clock", :float t.column "black_clock", :float t.column "white_comment", :text t.column "black_comment", :text end create_table "players", :force => true do |t| t.column "first_name", :string, :limit => 30 t.column "second_name", :string, :limit => 30 t.column "country_id", :integer t.column "burn_date", :datetime t.column "fide_rating", :integer t.column "photo", :binary t.column "description", :text end create_table "tournament_views", :force => true do |t| t.column "name", :string, :limit => 30 t.column "system", :string, :limit => 30 t.column "is_match", :boolean, :limit => nil, :default => false t.column "is_command", :boolean, :limit => nil, :default => false t.column "total_games", :integer, :default => 0 t.column "total_rounds", :integer, :default => 0 t.column "description", :text end create_table "tournaments", :force => true do |t| t.column "name", :string, :limit => 30 t.column "category", :integer t.column "city_id", :integer t.column "begin_date", :datetime t.column "end_date", :datetime t.column "tournament_view_id", :integer t.column "status", :string, :limit => 30 t.column "description", :text end create_table "users", :force => true do |t| t.column "login", :string, :limit => 30 t.column "password", :string, :limit => 50 t.column "name", :string, :limit => 30 t.column "is_admin", :boolean, :limit => nil, :default => false t.column "email", :string, :limit => 30 t.column "webpage", :string, :limit => 30 t.column "desciption", :text end end Javascript (javascript) – осуществляют демонстрацию шахматной партии, при помощи технологии AJAX обращаясь за обновлениями позиции на rDGT сервер. game.js --- var images = 'http://localhost:3000/images/classic/'; var moves_url = '/main/game_moves/1'; // Фигура function figure(id, color, type, current_field, last_field, alive, board) { this.id = id; this.color = color; this.type = type; this.current_field = current_field; this.last_field = last_field; this.alive = alive; this.set_field = set_field; this.do_move = do_move; this.reload = reload; this.img = document.createElement('img'); this.img.id = this.id; this.board = board; this.reload(); //trace('create figure [' + this.id + ']'); } // Поле function field(id, color, vertical, horizontal, figure, board) { this.id = id; this.color = color; this.vertical = vertical; this.horizontal = horizontal; this.figure = figure; this.board = board; this.repaint = repaint; //trace('create field [' + this.id + ']'); } // Ход function move(number, color, from_field, to_field, figure, alive_figure, is_short_castling, is_long_castling, prev_move, next_move, board, time) { this.number = number; this.color = color; this.from_field = from_field; this.to_field = to_field; this.figure = figure; this.alive_figure = alive_figure; this.forward = forward; this.backward = backward; this.is_short_castling = is_short_castling; this.is_long_castling = is_long_castling; this.prev_move = prev_move; this.next_move = next_move; this.board = board; this.white_time = white_time; this.black_time = black_time; } // Коллекция ходов function move_collection(board) { this.board = board; this.get_move = function(color, number) { return color == 'white' ? this.moves[(number * 2) - 1] : this.moves[number * 2]; } this.exists_move = function(color, number) { return get_move(color, number) != null; } this.get_current_move = function() { return this.current_move; } this.add_move = function(move) { trace('add move: ' + move.number + " " + moveBy.color); if(current_move == null) { this.first_move = move; this.current_move = move; } else { move.prev_move = this.current_move; this.current_move.next_move = move; this.current_move = move; } this.moves.push(move); } this.first_move = null; this.current_move = null; this.moves = new Array(); } // Коллекция фигур function figure_collection(board) { this.board = board; this.wpA = new figure('wpA', 'white', 'pawn', null, null, true, board); this.wpB = new figure('wpB', 'white', 'pawn', null, null, true, board); this.wpC = new figure('wpC', 'white', 'pawn', null, null, true, board); this.wpD = new figure('wpD', 'white', 'pawn', null, null, true, board); this.wpE = new figure('wpE', 'white', 'pawn', null, null, true, board); this.wpF = new figure('wpF', 'white', 'pawn', null, null, true, board); this.wpG = new figure('wpG', 'white', 'pawn', null, null, true, board); this.wpH = new figure('wpH', 'white', 'pawn', null, null, true, board); this.wrA = new figure('wrA', 'white', 'rook', null, null, true, board); this.wrH = new figure('wrH', 'white', 'rook', null, null, true, board); this.whB = new figure('whB', 'white', 'horse', null, null, true, board); this.whG = new figure('whG', 'white', 'horse', null, null, true, board); this.wbC = new figure('wbC', 'white', 'bishop', null, null, true, board); this.wbF = new figure('wbF', 'white', 'bishop', null, null, true, board); this.wq = new figure('wq', 'white', 'queen', null, null, true, board); this.wk = new figure('wk', 'white', 'king', null, null, true, board); this.bpA = new figure('bpA', 'black', 'pawn', null, null, true, board); this.bpB = new figure('bpB', 'black', 'pawn', null, null, true, board); this.bpC = new figure('bpC', 'black', 'pawn', null, null, true, board); this.bpD = new figure('bpD', 'black', 'pawn', null, null, true, board); this.bpE = new figure('bpE', 'black', 'pawn', null, null, true, board); this.bpF = new figure('bpF', 'black', 'pawn', null, null, true, board); this.bpG = new figure('bpG', 'black', 'pawn', null, null, true, board); this.bpH = new figure('bpH', 'black', 'pawn', null, null, true, board); this.brA = new figure('brA', 'black', 'rook', null, null, true, board); this.brH = new figure('brH', 'black', 'rook', null, null, true, board); this.bhB = new figure('bhB', 'black', 'horse', null, null, true, board); this.bhG = new figure('bhG', 'black', 'horse', null, null, true, board); this.bbC = new figure('bbC', 'black', 'bishop', null, null, true, board); this.bbF = new figure('bbF', 'black', 'bishop', null, null, true, board); this.bq = new figure('bq', 'black', 'queen', null, null, true, board); this.bk = new figure('bk', 'black', 'king', null, null, true, board); } // Коллекция полей шахматной доски function field_collection(board) { this.get_field = get_field; this.board = board; this.toArray = function() { return [this.A1, this.A2, this.A3, this.A4, this.A5, this.A6, this.A7, this.A8, this.B1, this.B2, this.B3, this.B4, this.B5, this.B6, this.B7, this.B8, this.C1, this.C2, this.C3, this.C4, this.C5, this.C6, this.C7, this.C8, this.D1, this.D2, this.D3, this.D4, this.D5, this.D6, this.D7, this.D8, this.E1, this.E2, this.E3, this.E4, this.E5, this.E6, this.E7, this.E8, this.F1, this.F2, this.F3, this.F4, this.F5, this.F6, this.F7, this.F8, this.G1, this.G2, this.G3, this.G4, this.G5, this.G6, this.G7, this.G8, this.H1, this.H2, this.H3, this.H4, this.H5, this.H6, this.H7, this.H8]; } this.A1 = new field('fieldA1', 'black', 'A', '1', null, board); this.B1 = new field('fieldB1', 'white', 'B', '1', null, board); this.C1 = new field('fieldC1', 'black', 'C', '1', null, board); this.D1 = new field('fieldD1', 'white', 'D', '1', null, board); this.E1 = new field('fieldE1', 'black', 'E', '1', null, board); this.F1 = new field('fieldF1', 'white', 'F', '1', null, board); this.G1 = new field('fieldG1', 'black', 'G', '1', null, board); this.H1 = new field('fieldH1', 'white', 'H', '1', null, board); this.A2 = new field('fieldA2', 'white', 'A', '2', null, board); this.B2 = new field('fieldB2', 'black', 'B', '2', null, board); this.C2 = new field('fieldC2', 'white', 'C', '2', null, board); this.D2 = new field('fieldD2', 'black', 'D', '2', null, board); this.E2 = new field('fieldE2', 'white', 'E', '2', null, board); this.F2 = new field('fieldF2', 'black', 'F', '2', null, board); this.G2 = new field('fieldG2', 'white', 'G', '2', null, board); this.H2 = new field('fieldH2', 'black', 'H', '2', null, board); this.A3 = new field('fieldA3', 'black', 'A', '3', null, board); this.B3 = new field('fieldB3', 'white', 'B', '3', null, board); this.C3 = new field('fieldC3', 'black', 'C', '3', null, board); this.D3 = new field('fieldD3', 'white', 'D', '3', null, board); this.E3 = new field('fieldE3', 'black', 'E', '3', null, board); this.F3 = new field('fieldF3', 'white', 'F', '3', null, board); this.G3 = new field('fieldG3', 'black', 'G', '3', null, board); this.H3 = new field('fieldH3', 'white', 'H', '3', null, board); this.A4 = new field('fieldA4', 'white', 'A', '4', null, board); this.B4 = new field('fieldA4', 'black', 'B', '4', null, board); this.C4 = new field('fieldC4', 'white', 'C', '4', null, board); this.D4 = new field('fieldD4', 'black', 'D', '4', null, board); this.E4 = new field('fieldE4', 'white', 'E', '4', null, board); this.F4 = new field('fieldF4', 'black', 'F', '4', null, board); this.G4 = new field('fieldG4', 'white', 'G', '4', null, board); this.H4 = new field('fieldH4', 'black', 'H', '4', null, board); this.A5 = new field('fieldA5', 'black', 'A', '5', null, board); this.B5 = new field('fieldB5', 'white', 'B', '5', null, board); this.C5 = new field('fieldC5', 'black', 'C', '5', null, board); this.D5 = new field('fieldD5', 'white', 'D', '5', null, board); this.E5 = new field('fieldE5', 'black', 'E', '5', null, board); this.F5 = new field('fieldF5', 'white', 'F', '5', null, board); this.G5 = new field('fieldG5', 'black', 'G', '5', null, board); this.H5 = new field('fieldH5', 'white', 'H', '5', null, board); this.A6 = new field('fieldA6', 'white', 'A', '6', null, board); this.B6 = new field('fieldB6', 'black', 'B', '6', null, board); this.C6 = new field('fieldC6', 'white', 'C', '6', null, board); this.D6 = new field('fieldD6', 'black', 'D', '6', null, board); this.E6 = new field('fieldE6', 'white', 'E', '6', null, board); this.F6 = new field('fieldF6', 'black', 'F', '6', null, board); this.G6 = new field('fieldG6', 'white', 'G', '6', null, board); this.H6 = new field('fieldH6', 'black', 'H', '6', null, board); this.A7 = new field('fieldA7', 'black', 'A', '7', null, board); this.B7 = new field('fieldB7', 'white', 'B', '7', null, board); this.C7 = new field('fieldC7', 'black', 'C', '7', null, board); this.D7 = new field('fieldD7', 'white', 'D', '7', null, board); this.E7 = new field('fieldE7', 'black', 'E', '7', null, board); this.F7 = new field('fieldF7', 'white', 'F', '7', null, board); this.G7 = new field('fieldG7', 'black', 'G', '7', null, board); this.H7 = new field('fieldH7', 'white', 'H', '7', null, board); this.A8 = new field('fieldA8', 'white', 'A', '8', null, board); this.B8 = new field('fieldB8', 'black', 'B', '8', null, board); this.C8 = new field('fieldC8', 'white', 'C', '8', null, board); this.D8 = new field('fieldD8', 'black', 'D', '8', null, board); this.E8 = new field('fieldE8', 'white', 'E', '8', null, board); this.F8 = new field('fieldF8', 'black', 'F', '8', null, board); this.G8 = new field('fieldG8', 'white', 'G', '8', null, board); this.H8 = new field('fieldH8', 'black', 'H', '8', null, board); } function board() { this.moves = new move_collection(this); this.figures = new figure_collection(this); this.fields = new field_collection(this); this.init = init; this.last_move = null; // Обновляет позицию this.refresh_moves = function() { // Ajax запрос к серверу new Ajax.Request(moves_url, { method: 'get', onSuccess: function(transport) { all_moves = transport.responseText; trace('ajax: ' + all_moves); } }); trace('call => parse_moves(' + all_moves + ')') function existsWhite(move) { return getWhiteMove(move) != "******"; } function existsBlack(move) { return getBlackMove(move) != "******"; } function getWhiteMove(move) { return move.substring(0,6); } function getWhiteTime(move) { return move.substring(13, 19); } function getBlackMove(move) { return move.substring(6,12); } function getBlackTime(move) { return move.substring(20, 26); } function getFrom(color, move) { } function getTo(color, move) { } function isShortCastling(color, move) { } function isLongCastling(color, move) { } moves_split = all_moves.split('|'); moves_strip = new Array(); for(i = 0; i < moves_split.length; i++) { if(moves_split[i] != "") { moves_strip.push(moves_split[i]); trace('split: ' + moves_split[i]); } } var number = moves_strip.length; trace('number = ' + number); var current_move = this.moves.get_current_move(); trace('current_move = ' + current_move); var current_number = current_move != null ? current_move.number : 0; trace('current_number = ' + current_number); if(number == current_number) { if((current_move.color == 'white') && existsBlack(moves_strip[number - 1])) { var move_annotation = getBlackMove(moves_strip[number - 1]); var move_time = getBlackTime(moves_strip[number - 1]); var fieldFrom = getFrom('black', move_annotation); var fieldTo = getTo('black', move_annotation); var move = new move(number, 'black', fieldFrom, fieldTo, fieldFrom.figure, fieldTo.figure, isShortCastling('black', move_annotation), isLongCastling('black', move_annotation), current_move, null, this, move_time); this.moves.add_move(move); } } if(number > current_number){ for(iMove = current_move; iMove < number; iMove++) { var move_annotation = getWhiteMove(moves_strip[number - 1]); if(existsWhite(move_annotation)) { var move_time = getWhiteTime(moves_strip[number - 1]); var fieldFrom = getFrom('white', move_annotation); var fieldTo = getTo('white', move_annotation); var move = new move(iMove + 1, 'white', fieldFrom, fieldTo, fieldFrom.figure, fieldTo.figure, isShortCastling('white', move_annotation), isLongCastling('white', move_annotation), current_move, null, this, move_time); this.moves.add_move(move); } move_annotation = getBlackMove(moves_strip[number - 1]); if(existsBlack(move_annotation)) { var move_time = getBlackTime(moves_strip[number - 1]); var fieldFrom = getFrom('black', move_annotation); var fieldTo = getTo('black', move_annotation); var move = new move(iMove + 1, 'black', fieldFrom, fieldTo, fieldFrom.figure, fieldTo.figure, isShortCastling('black', move_annotation), isLongCastling('black', move_annotation), current_move, null, this, move_time); this.moves.add_move(move); } } } } this.refresh_figures = refresh_figures; this.go_begin = go_begin; this.go_end = go_end; this.go_next = go_next; this.go_preview = go_preview; this.go_custom = go_custom; this.repaint = function() { } // Парсит данные пришедшие от сервера this.parse_moves = function() { var moves = this.all_moves; trace('call => parse_moves(' + moves + ')') function existsWhite(move) { return getWhiteMove(move) != "******"; } function existsBlack(move) { return getBlackMove(move) != "******"; } function getWhiteMove(move) { return move.substring(0,6); } function getWhiteTime(move) { return move.substring(13, 19); } function getBlackMove(move) { return move.substring(6,12); } function getBlackTime(move) { return move.substring(20, 26); } function getFrom(color, move) { } function getTo(color, move) { } function isShortCastling(color, move) { } function isLongCastling(color, move) { } moves_split = moves.split('|'); moves_strip = new Array(); for(i = 0; i < moves_split.length; i++) { if(moves_split[i] != null) { moves_strip.push(moves_split[i]); } } var number = moves_strip.length; var current_move = this.moves.get_current_move; var current_number = current_move != null ? current_move.number : 0; if(number == current_number) { if((current_move.color == 'white') && existsBlack(moves_strip[number - 1])) { var move_annotation = getBlackMove(moves_strip[number - 1]); var move_time = getBlackTime(moves_strip[number - 1]); var fieldFrom = getFrom('black', move_annotation); var fieldTo = getTo('black', move_annotation); var move = new move(number, 'black', fieldFrom, fieldTo, fieldFrom.figure, fieldTo.figure, isShortCastling('black', move_annotation), isLongCastling('black', move_annotation), current_move, null, this, move_time); this.moves.add_move(move); } } if(number > current_number){ for(iMove = current_move; iMove < number; iMove++) { var move_annotation = getWhiteMove(moves_strip[number - 1]); if(existsWhite(move_annotation)) { var move_time = getWhiteTime(moves_strip[number - 1]); var fieldFrom = getFrom('white', move_annotation); var fieldTo = getTo('white', move_annotation); var move = new move(iMove + 1, 'white', fieldFrom, fieldTo, fieldFrom.figure, fieldTo.figure, isShortCastling('white', move_annotation), isLongCastling('white', move_annotation), current_move, null, this, move_time); this.moves.add_move(move); } move_annotation = getBlackMove(moves_strip[number - 1]); if(existsBlack(move_annotation)) { var move_time = getBlackTime(moves_strip[number - 1]); var fieldFrom = getFrom('black', move_annotation); var fieldTo = getTo('black', move_annotation); var move = new move(iMove + 1, 'black', fieldFrom, fieldTo, fieldFrom.figure, fieldTo.figure, isShortCastling('black', move_annotation), isLongCastling('black', move_annotation), current_move, null, this, move_time); this.moves.add_move(move); } } } } // Настройки this.all_moves = ""; this.moves_delay = 3; this.moves_url = '/main/game_moves/1'; this.figures_delay = 2; } // Инициализация доски function init() { trace('call => init()'); // Расставляем шахматы в начальную позицию // белые пешки this.figures.wpA.set_field(this.fields.A2); this.figures.wpB.set_field(this.fields.B2); this.figures.wpC.set_field(this.fields.C2); this.figures.wpD.set_field(this.fields.D2); this.figures.wpE.set_field(this.fields.E2); this.figures.wpF.set_field(this.fields.F2); this.figures.wpG.set_field(this.fields.G2); this.figures.wpH.set_field(this.fields.H2); // белые фигуры this.figures.wrA.set_field(this.fields.A1); this.figures.wrH.set_field(this.fields.H1); this.figures.whB.set_field(this.fields.B1); this.figures.whG.set_field(this.fields.G1); this.figures.wbC.set_field(this.fields.C1); this.figures.wbF.set_field(this.fields.F1); this.figures.wq.set_field(this.fields.D1); this.figures.wk.set_field(this.fields.E1); // черные пешки this.figures.bpA.set_field(this.fields.A7); this.figures.bpB.set_field(this.fields.B7); this.figures.bpC.set_field(this.fields.C7); this.figures.bpD.set_field(this.fields.D7); this.figures.bpE.set_field(this.fields.E7); this.figures.bpF.set_field(this.fields.F7); this.figures.bpG.set_field(this.fields.G7); this.figures.bpH.set_field(this.fields.H7); // черные фигуры this.figures.brA.set_field(this.fields.A8); this.figures.brH.set_field(this.fields.H8); this.figures.bhB.set_field(this.fields.B8); this.figures.bhG.set_field(this.fields.G8); this.figures.bbC.set_field(this.fields.C8); this.figures.bbF.set_field(this.fields.F8); this.figures.bq.set_field(this.fields.D8); this.figures.bk.set_field(this.fields.E8); // Создаем Ajax опрашиватель сервера new PeriodicalExecuter(this.refresh_moves, this.moves_delay); new PeriodicalExecuter(this.refresh_figures, this.figures_delay); } // Перерисовка позиции (делает один ход) function refresh_figures() { //trace('call => refresh_figures'); if(this.exists_move) { this.current_move = this.moves.get_current_move(); this.current_move.forward(); } } // Перейти к началу function go_begin() { } // Перейти к концу function go_end() { } // Следующий ход function go_next() { } // Предыдущий ход function go_preview() { } // Перейти к произвольному ходу function go_custom(number, color) { } // сделать ход function do_move(from_field, to_field) { } // Возвращает поле function get_field(vertical, horizontal) { } // Установить фигуру на поле function set_field(field_to_set) { this.last_field = field_to_set; field_to_set.figure = this; field_to_set.repaint(); } // Возвращает ход по номеру и цвету function get_move(number, color) { } // Возвращает текуший ход function get_current_move() { return this.current_move; } // Возвращает true если есть ход который нужно совершить function exists_move() { } function repaint() { $(this.id).innerHTML = ''; if(this.figure != null) { $(this.id).appendChild(this.figure.img); } } function reload() { this.img.src = images + this.color[0] + this.type[0] + '.gif'; //trace('reload figure [' + this.id + '].src = "' + this.img.src + '"'); } // Ход вперед !! предыдущую фигуру удалить function forward(){ if(this.to_field.figure != null) { } this.figure.do_move(this.from_field, this.to_field); } // Ход назад function backward() { this.figure.do_move(this.to_field, this.from_field); this.alive_figure.set_field(this.to_field); } function trace(message) { $("debug").innerHTML += message + ''; } window.onload=function() { // Запуск var main_board = new board(); main_board.init(); // setBeginingPosition(); // refreshGame(); // new PeriodicalExecuter(refreshGame, periodicalDelay); // new PeriodicalExecuter(refreshBoard, 1); } Приложение Г Листинг программы-регистратора шахматных партий rdgtChess.java --- public class rdgtChess implements Runnable static boolean debug = false; String comport = "COM1"; public static void main(String[] args) { rdgtChess t; if(args.length > 0) t = new rdgtChess(args[0]); else t = new rdgtChess(); } public rdgtChess() { (new Thread(this)).start(); } public rdgtChess(String comport) { this.comport = comport; (new Thread(this)).start(); } // Destructor public void finalize() { rdgtMysql.disconnect(); } // This is the main loop. It samples all boards and tries at regular intervals // to find new boards and to mark non-answering boards as, well, non-answering. Это головная часть. Она опрашивает все доски с регулярным интервалом времени, чтобы найти новые доски и отметить неотвечающие доски как неотвечающие public void run() { rdgtController c = new rdgtController(); if (c.connect(comport) == false) return; System.out.println(rdgtMysql.connect()); int i = 0; while (true) { if ((i==0) || (c.db.count_alive()==0)) { while (c.find_all_boards()==0) {} c.dump_all_active_boards(); i = 15; } else { try {Thread.sleep(1000);} catch(Throwable t) {}} c.poll_all_active_boards(); i--; } } } rdgtChessboard.java --- class rdgtChessboard { Integer address; rdgtHistory history = new rdgtHistory(this); rdgtSnapshot snapshot = new rdgtSnapshot(this); rdgtFenhax myFenhax = new rdgtFenhax(); boolean alive; boolean dumped; boolean updated; rdgtDatabase db; rdgtChessBoardForm board = null; public rdgtChessboard(Integer _address, rdgtDatabase _db) { address = _address; db = _db; alive = true; dumped = false; updated = false; update_html(); board = new rdgtChessBoardForm(); new Thread(new Runnable() { public void run() { board.setVisible(true); } }).start(); } rdgtSnapshot get_snapshot() { return snapshot; } int get_address() { return address.intValue(); } public void print_position() { board.printPosition(snapshot.debugprint()); board.printClock(snapshot.debugprint_clock()); } String print_figure(int figure) { if(figure == rdgtProtocol.EMPTY) { return " "; } else if (figure == rdgtProtocol.WPAWN) { return "P"; } else if(figure == rdgtProtocol.WROOK) { return "R"; } else if(figure == rdgtProtocol.WKNIGHT) { return "N"; } else if(figure == rdgtProtocol.WBISHOP) { return "B"; } else if(figure == rdgtProtocol.WQUEEN) { return "Q"; } else if(figure == rdgtProtocol.WKING) { return "K"; } else if (figure == rdgtProtocol.BPAWN) { return "p"; } else if(figure == rdgtProtocol.BROOK) { return "r"; } else if(figure == rdgtProtocol.BKNIGHT) { return "n"; } else if(figure == rdgtProtocol.BBISHOP) { return "b"; } else if(figure == rdgtProtocol.BQUEEN) { return "q"; } else if(figure == rdgtProtocol.BKING) { return "k"; } else { return " "; } } void set_alive(boolean x) { alive = x; update_html(); } void set_dumped(boolean x) { dumped = x; } void set_updated(boolean x) { updated = x; history.append(snapshot); } boolean get_alive() { return alive; } boolean get_dumped() { return dumped; } boolean get_updated() { return updated; } void set_clockdata(boolean running, boolean batteryLow, boolean frontViewLeftSideHigh, boolean blacksTurn, boolean whitesTurn, int secW, int secB) { snapshot.set_clockdata(running, batteryLow, frontViewLeftSideHigh, blacksTurn, whitesTurn, secW, secB); snapshot.debugprint_clock(); } void update_html() { rdgtMysql.update_snapshot(snapshot); String fen = rdgtMysql.snapshot2fen(snapshot); myFenhax.add(fen); rdgtMysql.update_moves(rdgtFenhax.getMoves(true, false), rdgtFenhax.getMoves(true, true), address.intValue()); } void set_emptyboard() { snapshot.set_emptyboard(); history.append(snapshot); } void set_boarddump(int[] all64, int startpos) { snapshot.set_boarddump(all64, startpos); dumped = true; history.append(snapshot); } void set_fieldupdate(int piece, int pos) { snapshot.set_fieldupdate(piece, pos); updated = true; history.append(snapshot); } } rdgtConfig.java --- class rdgtConfig { String getDbServer() { return server; } String getDbUser() { return user; } String getDbPass() { return pass; } String getDbBase() { return dbase; } boolean useDbServer() { return mysql; } boolean usePgnWriter() { return pgn; } String getPgnFileName() { return pgnfile; } String server= "localhost"; String user= "root"; String pass= "zar1562"; String dbase= "rdgt_development"; boolean mysql = true; boolean pgn = false; String pgnfile = "default.pgn"; } rdgtController.java --- class rdgtController extends rdgtProtocol { rdgtDatabase db; rdgtInterpreter ipr; rdgtReceiver rec; rdgtSerialport ser; rdgtSender snd; public rdgtController() { db = new rdgtDatabase(); ipr = new rdgtInterpreter(db); rec = new rdgtReceiver(ipr); ser = new rdgtSerialport(rec); snd = new rdgtSender(ser); } boolean connect(String comport) { if (ser.open(comport)==false) { System.out.println("Could not open "+comport); return false; } System.out.println("COM port opened: "+comport); return true; } int find_all_boards() { System.out.println("Scanning for boards..."); db.unalive_all(); int alive = 0; while (true) { try {Thread.sleep(300);} catch(Throwable t) {} snd.send(DGT_BUS_PING, 0); try {Thread.sleep(1100);} catch(Throwable t) {} int alivenow = db.count_alive(); if (alivenow == alive) break; alive = alivenow; for (Enumeration e = db.get_boards() ; e.hasMoreElements() ;) { rdgtChessboard b = (rdgtChessboard)(e.nextElement()); if (b.get_alive()==true) { snd.send(DGT_BUS_IGNORE_NEXT_BUS_PING, b.get_address()); } } } System.out.println("Scanning completed, found "+Integer.toString(alive)+" boards.n"); return alive; } void dump_all_active_boards() { for (Enumeration e = db.get_boards() ; e.hasMoreElements() ;) { rdgtChessboard b = (rdgtChessboard)(e.nextElement()); if (b.get_alive()==true) { b.set_dumped(false); for (int i=0; i
  • History for Chessboard: ");
  • Move: ");
  • Snapshot of Chessboard: ");
  • ");

Характеристики ВКР

Просмотров
99
Качество
Идеальное компьютерное
Размер
7,54 Mb

Список файлов

Обратите внимание, что данная работа уже сдавалась в университете, а также её могли покупать другие студенты, поэтому её уникальность может быть нулевой. Для получения уникальной работы воспользуйтесь услугами.

Комментарии

Нет комментариев
Стань первым, кто что-нибудь напишет!
Поделитесь ссылкой:
Бесплатно
Рейтинг автора
4,75 из 5
Поделитесь ссылкой:
Сопутствующие материалы

Подобрали для Вас услуги

-30%
-45%
Вы можете использовать ВКР для примера, а также можете ссылаться на неё в своей работе. Авторство принадлежит автору работы, поэтому запрещено копировать текст из этой работы для любой публикации, в том числе в свою выпускную квалификационную работу в учебном заведении, без правильно оформленной ссылки. Читайте как правильно публиковать ссылки в своей работе.
Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7059
Авторов
на СтудИзбе
258
Средний доход
с одного платного файла
Обучение Подробнее