Procedure writexy(x,y:Integer;beta:String);
Begin
gotoxy(x,y);
write(beta)
End;
本段為程式初始化指令,整個程式分為一個個子程式(Procedure)和主程式(Main Program)。每一個子程式以Procedure作開頭,以end作結,結尾用分號;而主程式則以句號作結尾。
Gotoxy(x,y)用于在某一特定位置顯示字句或圖案,x,y內的值可以為任意數,但要注意儘量不要超出螢幕範圍。
Write用于顯示字句,括號內的內容要以『‘’』包含,方可正常顯示,已定義的變量名稱除外。
{view the start}
Procedure start;
Begin
gotoxy(20,6);
WriteLn('111111111111111111111111111111111111111');
gotoxy(20,7);
WriteLn('110110110110111111111111011111101111111');
gotoxy(20,8);
WriteLn('111010101101111111111011011111101111111');
gotoxy(20,9);
WriteLn('110000000100000000111100111111101111111');
gotoxy(20,10);
WriteLn('111100011010111011111110011100000001111');
gotoxy(20,11);
WriteLn('111010101110111011111101101001101101111');
gotoxy(20,12);
WriteLn('110110110110111011111011100101101101111');
gotoxy(20,13);
WriteLn('111101011111011011111111001101101101111');
gotoxy(20,14);
WriteLn('100000000011011011111100101100000001111');
gotoxy(20,15);
WriteLn('111011011111100111111011101111101111111');
gotoxy(20,16);
WriteLn('111100111111010111111111101111101110111');
gotoxy(20,17);
WriteLn('111010011110111011111101011111000000011');
gotoxy(20,18);
WriteLn('110111101101111101111110111000001111011');
gotoxy(20,19);
WriteLn('111111111111111111111111111111111111111');
Repeat
Until KeyPressed;
ClrScr
End;
本段為進入遊戲顯示第一版面的子程式。
每一行的0和1組成的字串已被gotoxy限定位置,隨著縱坐標數值的遞增,每一行的文字顯示完畢後都將自動移到下一行(橫坐標不變)。但若只用writeln的話,每一行文字顯示完後都將自動跳至下一行,但以橫坐標首格作開頭。
倒數第四和第五行的repeat…until是重複性指令。Keypressed是任意鍵輸入指令;
再下一行的Clrscr是Clear screen的縮寫,也就是清除螢幕上的任何文字和圖案,後四句連起來表達就是:『重複直到按下任意鍵,然後便清洗螢幕,結束』 。
{view the title first}
Procedure title;
Begin;
gotoxy(25,13);
writeln('Welcome to the SuDoKu challenge!');
TextColor(YELLOW);
gotoxy(53,20);
writeln('Designer Jerry Crystal Yu');
gotoxy(60,21);
writeln('Beta3.3.4');
gotoxy(60,22);
writeln('2006.10.20');
gotoxy(30,23);
write('All rights reserved');
readln;
Repeat
Until KeyPressed;
ClrScr
End;
本段為進入遊戲的第二個版面。
該版面純粹顯示作者、版本和日期,當然還有歡迎辭。為了保證顯示正常,需要加一個readln。而第一行語句由於沒有說明文本顏色,因此呈白色;而第二行語句前加了一行TextColor(YELLOW),那麼改語句則為黃色,依此類推。
{Enter the user's name}
Procedure enter;
Begin
gotoxy(25,13);
TextColor(WHITE);
write('[s:9]lease enter your name:');
read(Name);
gotoxy(25,15);
TextColor(YELLOW);
writeln('Have fun with the game!');
readln;
Repeat
Until KeyPressed;
ClrScr
End;
本段為進入遊戲第三個版面,該版面的功能是讓用戶鍵入姓名並顯示語句。
其中變量NAME用于記憶用戶姓名,在第一行語句前面使用WRITE,可以使游標不會在顯示完此字句後跳至下一行,以使用戶輸入姓名。在程式下一行加上read來讀取名字NAME ,然後按下回車鍵即可關閉此版面。
{View the map}
Procedure mapview;
Begin
TextColor(COL1);
writexy(1,1,'Sudoku Challenge');
writexy(left,up, '@=@=@==@=@==@=@=@==@=@');
writexy(left,up+1, '| | | | | | | | | |');
writexy(left,up+2, '@---+---+---+---+---+---+---+---+---@');
writexy(left,up+3, '| | | | | | | | | |');
writexy(left,up+4, '@---+---+---+---+---+---+---+---+---@');
writexy(left,up+5, '| | | | | | | | | |');
writexy(left,up+6, '@---+---+---+---+---+---+---+---+---@');
writexy(left,up+7, '| | | | | | | | | |');
writexy(left,up+8, '@---+---+---+---+---+---+---+---+---@');
writexy(left,up+9, '| | | | | | | | | |');
writexy(left,up+10,'@---+---+---+---+---+---+---+---+---@');
writexy(left,up+11,'| | | | | | | | | |');
writexy(left,up+12,'@---+---+---+---+---+---+---+---+---@');
writexy(left,up+13,'| | | | | | | | | |');
writexy(left,up+14,'@---+---+---+---+---+---+---+---+---@');
writexy(left,up+15,'| | | | | | | | | |');
writexy(left,up+16,'@---+---+---+---+---+---+---+---+---@');
writexy(left,up+17,'| | | | | | | | | |');
writexy(left,up+18,'@=@=@=@==@=@=@==@=@=@');
writeln;
writeln;
writeln;
textColor(COL2);
TextBackground(COLBG);
End;
此版面用于顯示數獨遊戲佈局圖。
由第五行起至倒數第七行為止為本子程式的本體部分。這裡與第一個版面的顯示方法略有不同,但最終效果是一樣的。由於一開始在常量部分已經限定了LEFT和UP的初始位置,因此只需再在這兩個常量後面加進數字,便可以逐行顯示所要顯示的文字了。這裡有一個保留字WRITEXY,直接便可以顯示所需顯示的字句,舉一個例子:在本段中,writexy(left,up+1)也可以寫成gotoxy(left,up+1);
[換行]writeln(••••••)。倒數第二行的TextBackground即背景顏色,它只會將文字的背景轉變成另外一種顏色,而不會改變文字本身。