回 帖 发 新 帖 刷新版面

主题:<罗嗦帖>直接写屏

procedure xpr(x:integer; y:integer; st:string; col:integer; col2:integer);
    var
      colx,i,pt:integer;
    begin
      pt:=x shl 1+y shl 7+y shl 5;
      colx:=col+col2 shl 4;
      for i:=1 to ord(st[0]) do begin
        mem[$B800:pt]:=ord(st[i]);
        mem[$B800:pt+1]:=colx;
        inc(pt,2);
      end;
    end;

x,y是坐标.左上角x=0,y=0. 右下角x=79,y=24.
st是要显示的字符串.
col是前景色.(0-15)
col2是背景色.(0-15)

写的不好, 大家凑合着看吧

PS:我开始不知道mem怎么用, 还用了指针......XD

回复列表 (共2个回复)

沙发

背景色可以使用8~15吗?
另外
uses [B]crt[/B];
procedure xpr(x:integer; y:integer; st:string; col:integer; col2:integer);
begin
  [B]textcolor[/B](col);[B]textbackground[/B](col2);
  [B]gotoxy[/B](x,y);
  write(st);
end;

板凳

用write的话, 不可能在最下面一行写东西(会自动滚屏), 这个函数追求的是速度, 它在我家的AMD-K6机器上显示速度为27000000字符/秒. textcolor和textbackground太耗时间了.

我来回复

您尚未登录,请登录后再回复。点此登录或注册