Freepascal之Crt单元


BOB HAN 原创 转载请注明出处 http://www.cnblogs.com/Booble/

{

这是我的首个一千行程序

所以很多地方有冗余 不是很成熟

况且程序上了千行

用譬如Freepascal 等等

这类的面向过程的平台就力不从心了

Delphi7以前用过 不是很会用

凭着对Crt单元的好奇 我写了这个小游戏

}

先给代码 可以直接copy走

http://files.cnblogs.com/Booble/D_Game_CRT.rar

可以先试试用用

具体的玩法可以见于Readme.txt

鉴于本人水平有限 本小游戏不作娱乐用途

以免精神崩溃 仅用于示范Crt单元的功能

当然几个人在机房寂寞的时候可以玩玩...

下面结合几个程序段来解释Crt单元的某些函数的作用

1.调用单元Uses(Name)

   
   
1 // Bob ' s Great Naval Battles V-1.13.00 Beta 2   // Also Bob ' s Great Naval Battles V-1.00.00 Formal 3   uses crt;

前两行是注释 版本号 第三行是调用Crt单元


2.清屏Clrscr()

复制代码
   
   
1 randomize; 2 clrscr; 3 textcolor(white); 4 writeln( ' +-------------+------------+ ' ); 5 writeln( ' |A simple game| | ' ); 6 writeln( ' +-------------+ | ' ); 7 writeln( ' | | ' ); 8 writeln( ' | Great Naval Battles | ' ); 9 writeln( ' | V-1.00.00 | ' ); 10 writeln( ' | | ' ); 11 writeln( ' | +--------------+ ' ); 12 writeln( ' | |Written by Bob| ' ); 13 writeln( ' +-----------+--------------+ ' );
复制代码

几乎每切换一次界面就要清屏一次

Clrscr后再输出可以视作刷新

 Clrscr就是用来清屏用的函数 没有参数

注意清屏要考虑清楚不要把有用的清掉

 

3.清行ClrEOL()

   
   
  1 writeln( ' ***********%$^$%^#$@% ' );     2 gotoxy( 12 , 1 );   3 ClrEOL;

类似清屏 清除行上的内容

清除光标所在行光标上及以后的所有字符

4.移动光标GotoXY(X0,Y0)

复制代码
   
   
1 procedure print(x,y,z,s:longint); 2   var i:longint; 3   begin 4 x: = x - dx[z]; y: = y - dy[z]; 5   for i: = 0 to s - 1 do 6 begin 7 x: = x + dx[z]; y: = y + dy[z]; 8 gotoxy(x+2,y+3 ); 9 write(tt); 10 end ; 11   end ;
复制代码

这段代码会在屏幕上显示

指定位置指定方向指定类型的一串数

核心就是GotoXY函数

这个函数将光标移动至指定位置

x0 y0是指定屏幕坐标 x从左到右递增 y从上到下递增

5.文本颜色TextColor(Color)

复制代码
   
   
1 procedure finish(flag:boolean); 2   var ch:char; 3   begin 4 clrscr; 5 textcolor(white); 6   if flag then ch: = ' A ' else ch: = ' B ' ; 7 writeln( ' +--------------------------+ ' ); 8 writeln( ' | Game ended | ' ); 9 writeln( ' +--------------------------+ ' ); 10 writeln( ' | | ' ); 11 writeln( ' | Player ' ,ch, ' WINs! | ' ); 12 writeln( ' | <=========> | ' ); 13 writeln( ' | | ' ); 14 writeln( ' +--------------------------+ ' ); 15 textcolor(green); 16 writeln( ' Press any key to continue... ' ); 17 READKEY; 18   end ;
复制代码

将之后打印的文本都使用指定颜色

注意每次打印前都要考虑是否使用这个函数

否则颜色会错乱...

颜色表:(参数可以是颜色名 也可以是一个整型)

Black = 0; Blue = 1; Green = 2; Cyan = 3;
Red = 4; Magenta = 5; Brown = 6; LightGray = 7;
DarkGray = 8; LightBlue = 9; LightGreen = 10;
LightCyan = 11; LightRed = 12; LightMagenta = 13;
Yellow = 14; White = 15; Blink = 128;

6.获取键盘按键Readkey()

   
   
1 textcolor(green); 2 writeln( ' Press any key to continue... ' ); 3 READKEY;

这个可以用来读入按键

可以判定用户是什么操作

也可以用于上面一个程序段所示的Pause函数

注意这是一个函数 读入一个字符 不过可以不记录返回值

7.发声Sound(Hz)

复制代码
   
   
1 WriteLn( ' You will hear some tones from your speaker ' ) ; 2   while (i < 15000 ) do 3 begin 4 inc(i, 500 ); 5 Sound(i); 6   Delay(100); 7 end ;
复制代码

这个函数用于发声

根据赫兹数发出一定的声音

直到程序结束调用NoSound函数调用另一个Sound函数

注意及时清理声音

否则主机会叽里呱啦闹个不停 关音响也不顶用

8.停止发声NoSound()

   
   
1 WriteLn ( ' Quiet now! ' ) ; 2 NoSound; { Stop noise }

用于停止发声

让Sound函数停止

9.延迟Delay(Ms)

复制代码
   
   
1 WriteLn( ' Counting Down ' ); 2   for i: = 10 downto 1 do 3 begin 4 WriteLn(i); 5 Delay(1000); { Wait one second } 6 end ; 7 WriteLn( ' BOOM!!! ' ); 8  
复制代码

可以用于让你的程序暂停几秒

参数的单位是毫秒

10.插入删除空行Insline&Delline

复制代码
   
   
1 gotoxy( 1 , 17 ); 2 insline; 3   if z = 1 4 then if ynpc 5 then writeln( ' WARNING: Computer''s boat sanked! ' ) 6 else writeln( ' WARNING: B''s boat sanked! ' ) 7 else if ynpc 8 then writeln( ' WARNING: Your boat sanked! ' ) 9 else writeln( ' WARNING: A''s boat sanked! ' )
复制代码
Delline删除 光标所在行

Insline在光标所在行的下一行插入一个空行

注意先调用GotoXY函数

11.其他函数

KeyPressed 判定是否有按键动作

Window(x1,y1,x2,y2) 划定一块窗口区域

TextBackground(Color) 确定背景颜色

WhereX WhereY 返回光标位置

使用了CRT单元 我们的程序就会更加有声有色

可以写一点小游戏娱乐娱乐

BOB HAN原创 转载请注明出处http://www.cnblogs.com/Booble/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值