主题:输出汉字 有加分~~~
绿步甲
[专家分:1610] 发布于 2005-08-28 19:54:00
在阿Ben:[原创]贪食蛇+扫雷 2 in 1 游戏,中文界面!!
我看到了汉字,由于程序太长,我没看懂汉字如何输出,谁能教教我.
我加30~~~~~分
回复列表 (共31个回复)
11 楼
绿步甲 [专家分:1610] 发布于 2005-08-30 13:52:00
请问什么是Unit,怎样写?
12 楼
林记 [专家分:1680] 发布于 2005-08-30 16:37:00
Unit就是象Dos,Crt等可以应用的单元,他把一些函数过程
封装起来方便使用和修改
用的方法:uses 单元名;
制作的方法:
unit 单元名;{记住文件名要和这个一样}
interface
var
.....
函数声明{就是没有bein和end和var的函数}
implementation
函数实现;{就是在函数声明;里那些函数的完整板}
end.
13 楼
绿步甲 [专家分:1610] 发布于 2005-08-30 20:18:00
哈哈,我这人较笨,这UNIT又是第一次用,林记你能把你九楼的程序用unit做后的程序给我写出来一下,好让我有个例子可看~~
14 楼
林记 [专家分:1680] 发布于 2005-08-30 20:25:00
unit Chinese;
interface
uses Graph,crt;
procedure putone(x,y:integer;s:string;color:integer);
procedure outchinese(x,y:integer;s:string;blank:integer; color:integer);
implementation
procedure putone(x,y:integer;s:string;color:integer);
type
chinesep=array[1..32] of byte;
var
a:chinesep;
f:file of chinesep;
i,j,x0,y0:integer;
k:byte;
q,w:longint;
begin
q:=ord(s[1])-160;
w:=ord(s[2])-160;
q:=(q-1)*94+(w-1);
assign(f,'HZK16') ;
reset(f);
if (q<0) or (q>=filesize(f)) then
begin
close(f);
exit;
end;
seek(f,q);
read(f,a);
close(f);
y0:=y;
for i:=1 to 32 do
begin
k:=a[i];
if i mod 2=1 then
begin
x0:=7+x;
y0:=y0+1;
end
else
x0:=15+x;
for j:=1 to 8 do
begin
if k and 1 =1 then putpixel(x0,y0,color);
x0:=x0-1;
k:=k shr 1;
end;
end;
end;
procedure outchinese(x,y:integer;s:string;blank:integer; color:integer);
var
temps:string;
k:integer;
begin
k:=1;
while k<length(s) do
begin
temps:=s[k]; k:=k+1;
temps:=temps+s[k]; k:=k+1;
putone(x+(k div 2-1)*(16+blank),y,temps,color);
end;
end;
end.
15 楼
绿步甲 [专家分:1610] 发布于 2005-08-30 20:34:00
光标停在putpixel(x0,y0,color);上,显示标识副未定义。
16 楼
林记 [专家分:1680] 发布于 2005-08-30 20:39:00
改好了,请看
17 楼
绿步甲 [专家分:1610] 发布于 2005-08-30 20:46:00
显示cannot run a unit
但在一旁出现了一个TPU文件
18 楼
林记 [专家分:1680] 发布于 2005-08-30 21:15:00
对呀,把它编译,不要运行,然后在别的程序里就可以用
uses Chinese;来应用这个单元
然后就可以在程序中用outchinese这个函数来输出中文了
19 楼
绿步甲 [专家分:1610] 发布于 2005-08-31 20:28:00
谢谢,我终于成功了.....[em1]
20 楼
无敌傻仔 [专家分:210] 发布于 2005-11-23 16:57:00
你们可以通过ccdos来输入汉字
我来回复