{
这是我的首个一千行程序
所以很多地方有冗余 不是很成熟
况且程序上了千行
用譬如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! ' )
Insline在光标所在行的下一行插入一个空行
注意先调用GotoXY函数
11.其他函数
KeyPressed 判定是否有按键动作
Window(x1,y1,x2,y2) 划定一块窗口区域
TextBackground(Color) 确定背景颜色
WhereX WhereY 返回光标位置
使用了CRT单元 我们的程序就会更加有声有色
可以写一点小游戏娱乐娱乐
BOB HAN原创 转载请注明出处http://www.cnblogs.com/Booble/