Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2018, 15:19   #1
Roman_Jarckov23
Пользователь
 
Регистрация: 11.09.2018
Сообщений: 20
Вопрос Чат в паскале для игры. Можно ли использовать следующий код без crt, чтобы сообщения выводились в GraphABC в окне?

Можно ли использовать следующий код без crt, чтобы сообщения выводились в GraphABC в окне???
Код:
uses
  System, System.Net, System.Net.Sockets, System.IO, System.Threading, crt;
 
type
  TByteArray = array of byte;
 
var
  client: array [1..64] of TCPClient;
  s_str: array [1..64] of NetworkStream;
  s_raw: TByteArray;
  listener: system.Net.Sockets.TcpListener;
  s_ip, msg, nowdate, cl_str: string;
  s_port, length, i, n: integer;
  thr: array [1..64] of thread;
  thr_s: thread;
 
procedure chat(data: object);
var
  i, err:integer;
  name: string;
begin
  Val(data.ToString, i, err);
  s_str[i] := client[i].GetStream;
  length := s_str[i].Read(s_raw, 0, s_raw.Length);
  name := System.Text.Encoding.Default.GetString(s_raw, 0, length);
  writeln('Есть клиент ', name, '.');
  msg := Concat('Добро пожаловать на сервер ', s_ip, ', ', name, '!');
  s_str[i].Write(System.Text.Encoding.Default.GetBytes(msg), 0, msg.Length);
  try
    while true do 
    begin
      length := s_str[i].Read(s_raw, 0, s_raw.Length);
      cl_str := System.Text.Encoding.Default.GetString(s_raw, 0, length);
      writeln(name, ': ', cl_str);
      for j:integer:=1 to n do begin
        s_str[j] := client[j].GetStream;
        msg := name + ': ' + cl_str{+#13#10};
        if s_str[j].CanWrite then
          s_str[j].Write(System.Text.Encoding.Default.GetBytes(msg), 0, msg.Length)
        else
          writeln('Ошибка. Невозможно отправить сообщение клиенту.');
      end;
    end;
  except
    textcolor(4);
    writeln('Клиент отключился.');
    textcolor(2);
  end;
end;
 
 
begin
  s_raw := TByteArray(System.Array.CreateInstance(typeof(byte), 1024));
  try
    textcolor(14);
    write('Введите IP: ');
    readln(s_ip);
    write('Введите порт: ');
    readln(s_port);
    listener := TCPListener.Create(IPAddress.Parse(s_ip), s_port);
    listener.Start(64);
    textcolor(2);
    writeln('Готово. Ожидаем подключения...');
  except
    textcolor(4);
    writeln('Ошибка. Приложение будет закрыто.');
    sleep(2500);
    exit;
  end;
  i := 0;
  while true do
    if listener.Pending then
    begin
      i += 1;
      n:=i;
      client[i] := listener.AcceptTcpClient();
      thr[i] := new Thread(chat);
      thr[i].Start(i);
    end;
end.
Roman_Jarckov23 вне форума Ответить с цитированием
Старый 14.09.2018, 16:13   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

можно. но зачем?! Вы не поверите, но окно GraphABC предназначено для вывода ГРАФИЧЕСКОЙ информации. Там можно, конечно, выводить текст (в том числе разными шрифтами, разными цветами, разным размером и под любым углом к горизонту), но в данном случае это зачем нужно?!

для вывода текста в графическом окне используется команда TextOut

Код:
// Демонстрация работы со шрифтами
uses GraphABC;

begin
  Window.Title := 'Шрифты';
  SetWindowSize(760,460);
  Font.Name := 'Arial';
  Font.Style := fsBoldItalic;
  for var i:=4 to 14 do
  begin
    Font.Size := 2*i;
    Font.Color := clRandom;
    TextOut(30,2*i*i-15,'PascalABC.NET');
  end;
  Font.Name := 'Times New Roman';
  Font.Style := fsBoldUnderline;
  for var i:=4 to 14 do
  begin
    Font.Size := 2*i;
    Font.Color := clRandom;
    TextOut(400,2*i*i-15,'PascalABC.NET');
  end;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.09.2018, 18:29   #3
Roman_Jarckov23
Пользователь
 
Регистрация: 11.09.2018
Сообщений: 20
Смущение

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
можно. но зачем?! Вы не поверите, но окно GraphABC предназначено для вывода ГРАФИЧЕСКОЙ информации. Там можно, конечно, выводить текст (в том числе разными шрифтами, разными цветами, разным размером и под любым углом к горизонту), но в данном случае это зачем нужно?!

для вывода текста в графическом окне используется команда TextOut

Код:
// Демонстрация работы со шрифтами
uses GraphABC;

begin
  Window.Title := 'Шрифты';
  SetWindowSize(760,460);
  Font.Name := 'Arial';
  Font.Style := fsBoldItalic;
  for var i:=4 to 14 do
  begin
    Font.Size := 2*i;
    Font.Color := clRandom;
    TextOut(30,2*i*i-15,'PascalABC.NET');
  end;
  Font.Name := 'Times New Roman';
  Font.Style := fsBoldUnderline;
  for var i:=4 to 14 do
  begin
    Font.Size := 2*i;
    Font.Color := clRandom;
    TextOut(400,2*i*i-15,'PascalABC.NET');
  end;
end.
Для того чтобы чат был внутри игры, а не в отдельном окне!!!
Roman_Jarckov23 вне форума Ответить с цитированием
Старый 15.09.2018, 09:43   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Roman_Jarckov23 Посмотреть сообщение
Для того чтобы чат был внутри игры, а не в отдельном окне!!!
понятно.
Просто приведённый Вами код - это не совсем игра
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
можно ли как нибудь клонировать token или запусти программу без tokena для того чтобы запустить автотренажер Karim_1989 Свободное общение 2 17.03.2017 14:21
как сделать чтобы выводились все написанные сообщения nikytt PHP 0 09.10.2016 22:35
Можно ли использовать Wi-fi роутер без модема? Heroserodet Компьютерное железо 6 04.09.2014 11:25
Доработать протокол отправки SMS-сообщений таким образом, чтобы удалять можно было только разрешенные для удаления сообщения. Разр Skullet C/C++ Сетевое программирование 0 13.12.2012 02:33
php, perl прием данных, чтобы сообщения доходили без перезагрузки страницы Delphinchik Perl 1 16.02.2011 21:07