Программирование на языке Ruby

На нашем литературном портале можно бесплатно читать книгу Программирование на языке Ruby, Фултон Хэл-- . Жанр: Программирование. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Программирование на языке Ruby
Название: Программирование на языке Ruby
Дата добавления: 16 январь 2020
Количество просмотров: 525
Читать онлайн

Программирование на языке Ruby читать книгу онлайн

Программирование на языке Ruby - читать бесплатно онлайн , автор Фултон Хэл
Ruby — относительно новый объектно-ориентированный язык, разработанный Юкихиро Мацумото в 1995 году и позаимствовавший некоторые особенности у языков LISP, Smalltalk, Perl, CLU и других. Язык активно развивается и применяется в самых разных областях: от системного администрирования до разработки сложных динамических сайтов. Книга является полноценным руководством по Ruby — ее можно использовать и как учебник, и как справочник, и как сборник ответов на вопросы типа «как сделать то или иное в Ruby». В ней приведено свыше 400 примеров, разбитых по различным аспектам программирования, и к которым автор дает обстоятельные комментарии. Издание предназначено для программистов самого широкого круга и самой разной квалификации, желающих научиться качественно и профессионально работать на Ruby.

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

Перейти на страницу:

def other_move(who, move, num, board, sock)

 move = sock.gets.chomp

 puts "nПротивник: #{move}"

 move

end

if ARGV[0]

 myself = ARGV[0]

else

 print "Ваше имя? "

 myself = STDIN.gets.chomp

end

if ARGV[1]

 opponent_id = ARGV[1]

else

 print "Ваш противник? "

 opponent_id = STDIN.gets.chomp

end

opponent = opponent_id.split(":")[0] # Удалить имя хоста.

# Обратиться к серверу

socket = TCPSocket.new(ChessServer, ChessServerPort)

response = nil

socket.puts "login # {myself} #{opponent_id}"

socket.flush

response = socket.gets.chomp

name, ipname, color = response.split ":"

color = color.to_i

if color == BLACK   # Цвет фигур другого игрока,

 puts "nУстанавливается соединение..."

 server = TCPServer.new(PeerPort)

 session = server.accept

 str = nil

 begin

  timeout(30) do

   str = session.gets.chomp

   if str != "ready"

    raise "Ошибка протокола: получено сообщение о готовности #{str}."

   end

  end

 rescue TimeoutError

  raise "He получено сообщение о готовности от противника."

 end

 puts "Ваш противник #{opponent}... у вас белые.n"

 who = WHITE

 move = nil

 board = nil        # В этом примере не используется.

 num = 0

 draw_board(board)  # Нарисовать начальное положение для белых.

 loop do

  num += 1

  move = my_move(who, move, num, board, session)

  draw_board(board)

  case move

   when "resign"

    puts "nВы сдались. #{opponent} выиграл."

    break

  when /Checkmate/

    puts "nВы поставили мат #{opponent}!"

    draw_board(board)

    break

  end

  move = other_move(who, move, num, board, session)

  draw_board(board)

  case move

   when "resign"

    puts "n#{opponent} сдался... вы выиграли!"

    break

   when /Checkmate/

    puts "n#{opponent} поставил вам мат."

    break

  end

 end

else                # Мы играем черными,

 puts "nУстанавливается соединение..."

 socket = TCPSocket.new(ipname, PeerPort)

 socket.puts "ready"

 puts "Ваш противник #{opponent}... у вас черные.n"

 who = BLACK

 move = nil

 board = nil        # В этом примере не используется.

 num = 0

 draw_board(board)  # Нарисовать начальное положение.

 loop do

  num += 1

  move = other_move(who, move, num, board, socket)

  draw_board(board) # Нарисовать доску после хода белых,

  case move

   when "resign"

    puts "n#{opponent} сдался... вы выиграли!"

    break

   when /Checkmate/

    puts "n#{opponent} поставил вам мат."

    break

  end

  move = my_move(who, move, num, board, socket)

  draw_board(board)

  case move

   when "resign"

    puts "nВы сдались. #{opponent} выиграл."

Перейти на страницу:
Комментариев (0)
название