16年1个月前IP:未同步
269558
2楼
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即背景顏色,它只會將文字的背景轉變成另外一種顏色,而不會改變文字本身。
评论
文号 / 269558

浪迹天涯
名片发私信
学术分 0
总主题 2 帖总回复 32 楼拥有证书:进士 笔友
注册于 2010/11/23 18:30:12最后登录 2018/12/19 14:51:25
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的