數獨程式本體
Program Sudokugame;
Uses crt;
{Instruction
Second code Meaning
0 Null(空)
27 ESC
59-68 Keys F1-F10
71 Home
72 ↑
73 PgUp
75 ←
77 →
79 End
80 ↓
81 PgDn
82 Ins
83 Del}
本段為附加部分。
程式第一行,『Sudokugame』是本程式的名稱。
第二行,uses crt是Free pascal editor(以下簡稱FPE)每一個程式的開頭必須輸入的指令語句。與FPE所不同的是,Turbo Pascal(以下簡稱TP)的指令語句是uses wincrt。 在Pascal中有一個 CRT 單元及一個 GRAPH 單元,那麼什麼是CRT呢?簡單的說CRT 單元是為了實現字符的顯示與處理,另外的那個稱為 GRAPH 單元是專門用來處理圖形的。我們看到的有關圖形的程式往往都要用到。所以若是要在Pascal中實現圖形操作,就必須要調用 CRT 單元及GRAPH 單元。到目前為止,FPE的CRT的性能是所有的PASCAL之中最穩定的。
第三行至最後一行都是電腦的鍵盤輸入代碼,正式名稱為『ASCII碼』或『ASCII(American Standard Code for Information Interchange,美國資訊互換標準代碼)是基於拉丁字母的一套電腦編碼系統。它主要用于顯示現代英語和其他西歐語言。它是現今最通用的單字節編碼系統,並等同於國際標準ISO 646(注:部分轉載自維基百科)。它的實質是將鍵盤上的每一個鍵都轉換成電腦所能識別的符號或數字代碼,以供電腦讀取和接受指令。
Const
left=20;
up=3;
SPACE = ' ';
COL1 = LIGHTGRAY;
COL2 = WHITE;
COLBG = BLUE;
COL3=YELLOW;
本段為程式的常量(Constant)部分。
第一行和第二行為遊戲佈局圖初始位置的指令,即從左往右數第二十個游標位,從上往下數第三個游標位為佈局圖的左上角第一個坐標的位置。
第三行,SPACE為常量定義字符,在本程式中的意義為無字符游標位(空格),在主程式中將有詳細說明。
的四行之第七行是程式的字符顏色定義。以後若出現等號前的定義字符,那麼接下來的需要顯示的文字將會變成此種顏色,除非有另外的說明。其中COLBG不是字符顏色定義,而是字體背景顏色,下文將作詳述。
Var I
{'q' is short for question;'a' is short for answer}
qeasy:Array [1..9,1..9] Of char;
qmedium:Array [1..9,1..9] Of char;
qhard:Array [1..9,1..9] Of char;
aeasy:Array [1..9,1..9] Of char;
本段為變量(Variation)說明。由於版面的限制,故以Var I 和Var II區分,但在實際的程式編寫時並不允許這樣做。
第一行是附加說明,不影響程式的本體,今後若使用花括號,則裡面的文字均為附加說明,用于方便程式員閱讀。
第二行至第五行是陣列(Array)變量說明。在本程式中用於題目與答案的儲存和讀取。
二維陣列(Two-Dimentional Array)的一般格式是
XXX:Array[A..B,C..D] Of char(也可以是Longint、integer或real)
最左項的字符串是該變量的定義名稱。
Var II
amedium:Array [1..9,1..9] Of char;
ahard:Array [1..9,1..9] Of char;
qchall:Array [1..9,1..9] Of char;
achall:Array [1..9,1..9] Of char;
memory:Array[1..9,1..9] Of Boolean;
save:Array[1..9,1..9] Of char;
winner:Array[1..100] Of String;
datafile:text;
insFile:text;
i,j,z:Integer;
x,y:Integer;
ch:char;
mark:Integer;
{'sec' is short for second;'min' is short for
minute;'hr' is short for hour}
sec,min,hr:Real;
Name:String;
press:char;
content:String;
本段為變量說明第二部分。
第一至第七行同上,皆是陣列,但只有第一部分的第二至四行和第二部分的第一至四行是題目和答案的文本文檔儲存變量,其他的三個陣列分別是布爾值記憶陣列(用于記錄數獨遊戲的空格填數與否)、整數記憶陣列(作用同前者,但處理對象不同)和用戶姓名記憶陣列。這三個陣列將於下文予以詳細說明。
第八行和第九行是TEXT(文本文檔)的說明,也就是說該個變量用于儲存文本文檔的資訊。
第十行至第十一行是整數變量,將於下文予以詳解。
第十一行是輸入鍵的變量,通常以Readkey來為之賦值,十七行的功能與之相似。
第十二行的MARK是遊戲分數的變量說明,再下面兩行是附加說明。
第十五行是時間變量,分別是秒鐘、分鐘和小時。
下一行的NAME是用戶輸入姓名的變量,用于儲存用戶的資料。
最後一行是文本文檔的字符串變量說明,與第十七行的定義有聯繫。
Program Sudokugame;
Uses crt;
{Instruction
Second code Meaning
0 Null(空)
27 ESC
59-68 Keys F1-F10
71 Home
72 ↑
73 PgUp
75 ←
77 →
79 End
80 ↓
81 PgDn
82 Ins
83 Del}
本段為附加部分。
程式第一行,『Sudokugame』是本程式的名稱。
第二行,uses crt是Free pascal editor(以下簡稱FPE)每一個程式的開頭必須輸入的指令語句。與FPE所不同的是,Turbo Pascal(以下簡稱TP)的指令語句是uses wincrt。 在Pascal中有一個 CRT 單元及一個 GRAPH 單元,那麼什麼是CRT呢?簡單的說CRT 單元是為了實現字符的顯示與處理,另外的那個稱為 GRAPH 單元是專門用來處理圖形的。我們看到的有關圖形的程式往往都要用到。所以若是要在Pascal中實現圖形操作,就必須要調用 CRT 單元及GRAPH 單元。到目前為止,FPE的CRT的性能是所有的PASCAL之中最穩定的。
第三行至最後一行都是電腦的鍵盤輸入代碼,正式名稱為『ASCII碼』或『ASCII(American Standard Code for Information Interchange,美國資訊互換標準代碼)是基於拉丁字母的一套電腦編碼系統。它主要用于顯示現代英語和其他西歐語言。它是現今最通用的單字節編碼系統,並等同於國際標準ISO 646(注:部分轉載自維基百科)。它的實質是將鍵盤上的每一個鍵都轉換成電腦所能識別的符號或數字代碼,以供電腦讀取和接受指令。
Const
left=20;
up=3;
SPACE = ' ';
COL1 = LIGHTGRAY;
COL2 = WHITE;
COLBG = BLUE;
COL3=YELLOW;
本段為程式的常量(Constant)部分。
第一行和第二行為遊戲佈局圖初始位置的指令,即從左往右數第二十個游標位,從上往下數第三個游標位為佈局圖的左上角第一個坐標的位置。
第三行,SPACE為常量定義字符,在本程式中的意義為無字符游標位(空格),在主程式中將有詳細說明。
的四行之第七行是程式的字符顏色定義。以後若出現等號前的定義字符,那麼接下來的需要顯示的文字將會變成此種顏色,除非有另外的說明。其中COLBG不是字符顏色定義,而是字體背景顏色,下文將作詳述。
Var I
{'q' is short for question;'a' is short for answer}
qeasy:Array [1..9,1..9] Of char;
qmedium:Array [1..9,1..9] Of char;
qhard:Array [1..9,1..9] Of char;
aeasy:Array [1..9,1..9] Of char;
本段為變量(Variation)說明。由於版面的限制,故以Var I 和Var II區分,但在實際的程式編寫時並不允許這樣做。
第一行是附加說明,不影響程式的本體,今後若使用花括號,則裡面的文字均為附加說明,用于方便程式員閱讀。
第二行至第五行是陣列(Array)變量說明。在本程式中用於題目與答案的儲存和讀取。
二維陣列(Two-Dimentional Array)的一般格式是
XXX:Array[A..B,C..D] Of char(也可以是Longint、integer或real)
最左項的字符串是該變量的定義名稱。
Var II
amedium:Array [1..9,1..9] Of char;
ahard:Array [1..9,1..9] Of char;
qchall:Array [1..9,1..9] Of char;
achall:Array [1..9,1..9] Of char;
memory:Array[1..9,1..9] Of Boolean;
save:Array[1..9,1..9] Of char;
winner:Array[1..100] Of String;
datafile:text;
insFile:text;
i,j,z:Integer;
x,y:Integer;
ch:char;
mark:Integer;
{'sec' is short for second;'min' is short for
minute;'hr' is short for hour}
sec,min,hr:Real;
Name:String;
press:char;
content:String;
本段為變量說明第二部分。
第一至第七行同上,皆是陣列,但只有第一部分的第二至四行和第二部分的第一至四行是題目和答案的文本文檔儲存變量,其他的三個陣列分別是布爾值記憶陣列(用于記錄數獨遊戲的空格填數與否)、整數記憶陣列(作用同前者,但處理對象不同)和用戶姓名記憶陣列。這三個陣列將於下文予以詳細說明。
第八行和第九行是TEXT(文本文檔)的說明,也就是說該個變量用于儲存文本文檔的資訊。
第十行至第十一行是整數變量,將於下文予以詳解。
第十一行是輸入鍵的變量,通常以Readkey來為之賦值,十七行的功能與之相似。
第十二行的MARK是遊戲分數的變量說明,再下面兩行是附加說明。
第十五行是時間變量,分別是秒鐘、分鐘和小時。
下一行的NAME是用戶輸入姓名的變量,用于儲存用戶的資料。
最後一行是文本文檔的字符串變量說明,與第十七行的定義有聯繫。
200字以内,仅用于支线交流,主线讨论请采用回复功能。