freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

“24點(diǎn)”游戲說明書(編輯修改稿)

2024-10-13 15:59 本頁面
 

【文章內(nèi)容簡介】 生成和建立程序(,) .... 。,可以用它來決定窗體是否關(guān)閉。.。 。 我們在這里彈出一個對話框,代碼如下所示:procedure (Sender: TObject。var CanClose: Boolean)。begin if(MessageDlg(39?,F(xiàn)在要退出游戲嗎?39。, mtConfirmation, [mbOk, mbCancel], 0)= mrOk)then canClose:=True else canClose:=False。end。MessageDlg是一種提示對話框,第一個參數(shù)是對話框詢問的訊息,是一個字符串;第二個參數(shù)則代表對話框的類型,mtConfirmation是一個TMsgDlgType的枚舉類型,表示這個對話框是個確認(rèn)對話框。TMsgDlgType類型如下所示:type TMsgDlgType =(mtWarning, mtError, mtInformation, mtConfirmation, mtCustom)。以上定義的對話框類型分別表示:警告、錯誤、提示、確認(rèn)和自定義類型。第三個參數(shù)是TMsgDlgBtn類型的集合,這個集合包含了類型為TMsgDlgBtn的按鈕,TMsgDlgBtn的定義如下:type TMsgDlgBtn =(mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mnNoToAll, mbYesToAll, mbHelp)。在我們的程序中,利用了一個集合[mbOK, mbCancle],表示在對話框中顯示兩個按鈕:OK和Cancel的組合。最后一個參數(shù)是用來描述幫助索引的長整型變量,用來獲取提示用戶的幫助信息,這里我們沒有任何幫助信息,先不管它。..,,用來直觀地表示對話框返回信息。如果用戶單擊了OF按鈕,這個對話框返回gjOF,效果如圖,..所示。 關(guān)閉窗口時詢問用戶現(xiàn)在,我們已經(jīng)完成了程序的主體部分。 第3章 “速算24”撲克游戲單元、異常、邏輯,., 單元間的互相引用 .... 單元引用的概念在第*章關(guān)于單元的知識里,它集中定義了程序中使用的函數(shù),這一節(jié)里,我們就要實(shí)現(xiàn)這樣的一個單元。 我們可以在任何單元中編寫自己的函數(shù),當(dāng)然包括與窗體相連的單元??墒俏覀兂3P枰玫揭恍┏S玫暮瘮?shù),這時最好是創(chuàng)建一個不與窗體相連的獨(dú)立單元,用它來容納自己的函數(shù),這稱為獨(dú)立的單元文件。當(dāng)創(chuàng)建了不與窗體相連的獨(dú)立單元文件后,項(xiàng)目中的其他單元就能很容易地共享這些函數(shù),其他項(xiàng)目也可以很容易地調(diào)用這些函數(shù)了。 對于單元間的引用。 uses語句。,例如....hwk,..k,..。對于我們自己編寫的單元,如果程序中使用了該單元的函數(shù)或代碼。 :公有引用和私有引用。 在..,就是說,這部分的引用可以被其他引用本單元的單元繼承性地引用。在....。 ..,就是說,這部分的引用只能被本單元內(nèi)部使用。....。 對于單元間的引用,要避免交叉引用。.,..,..。因?yàn)檫@樣會產(chǎn)生對單元的循環(huán)訪問,編譯時會出現(xiàn)錯誤信息。 創(chuàng)建另一個單元創(chuàng)建一個不與窗體相連的單元文件的方法是,首先選擇主菜單的.., ,如圖,.*.所示。..l,然后單擊OF按鈕。..l+的獨(dú)立單元文件,并顯示在代碼編輯器中,我們只需在此加入函數(shù)即可。 New Items對話框單元創(chuàng)建之后,就需要實(shí)現(xiàn)單元之間的互相引用。這里有兩種方法: (1)直接在Unit1中寫入uses Unit2,代碼如下所示:var Form1: TForm1。implementation uses Unit2。(2)選擇主菜單的File | Use Unit命令,此時Delphi彈出Use Unit對話框,在此窗口中列出當(dāng)前文件沒有連接的所有文件,只需選擇需要連接的文件即可。當(dāng)選擇了某一文件并單擊OK按鈕后,當(dāng)前文件就包含了對所選文件的引用。 Use Unit對話框如果當(dāng)前文件已經(jīng)連接了當(dāng)前項(xiàng)目中所有其他文件,選擇Qk. Q..l命令后,就會彈出如圖,.*+所示的信息窗口,告訴程序員當(dāng)前文件已經(jīng)連接了當(dāng)前項(xiàng)目中所有其他文件。 Information對話框此時再編譯,程序就沒有任何錯誤了。 現(xiàn)在我們已經(jīng)創(chuàng)建了Q..l+,它將用作我們的數(shù)學(xué)函數(shù)定義單元。在開始定義這個單元之前。 第3章 “速算24”撲克游戲單元、異常、邏輯 異 常 處 理 異常處理的概念 在應(yīng)用程序開發(fā)中如何檢測、處理程序的運(yùn)行錯誤是一個很重要的問題。在 Delphi 的IDE(集成開發(fā)環(huán)境)中提供了一個完善的內(nèi)置調(diào)試器,可以發(fā)現(xiàn)大部分程序錯誤。但并不是所有的錯誤都可以被發(fā)現(xiàn),而且當(dāng)程序涉及到與外設(shè)的數(shù)據(jù)交換或操作外設(shè),如要求用戶輸入、讀寫磁盤等時,錯誤的發(fā)生是程序無法控制的,如輸入非法字符、磁盤不能讀寫等。這些情況不僅會導(dǎo)致應(yīng)用程序異常中止,而且可能引起系統(tǒng)的崩潰。針對這些問題,Delphi提供了一套強(qiáng)大的異常處理機(jī)制。巧妙地利用它,可以使程序更為強(qiáng)健,使用更為友好。Delphi異常處理機(jī)制建立在Protected Blocks(保護(hù)塊)的概念上。所謂保護(hù)塊是指用保留字try和end封裝的一段代碼。保護(hù)塊的作用是當(dāng)應(yīng)用程序發(fā)生錯誤時自動創(chuàng)建一個相應(yīng)的Exception(“異?!鳖悾?。程序可以捕獲并處理這個“異常”類,以確保程序的正常結(jié)束以及資源的釋放和數(shù)據(jù)不受破壞。如果程序不進(jìn)行處理,則系統(tǒng)會自動提供一個消息框?!爱惓!鳖愂荄elphi異常處理機(jī)制的核心,也是Delphi異常處理的主要特色。Delphi提供的所有“異?!鳖惗际穷怑xception的子類。用戶也可以從類Exception派生一個自定義的“異?!鳖悺?資源保護(hù)方式回收分配的資源是確保程序健壯性的一個關(guān)鍵。但默認(rèn)情況下異常發(fā)生時程序會在出錯點(diǎn)自動退出當(dāng)前模塊,因此需要一種特殊的機(jī)制來確保即使在異常發(fā)生的情況下,釋放資源的語句仍能被執(zhí)行,而Delphi的異常處理正提供了這種機(jī)制。Delphi提供了一個保留字finally,用于實(shí)現(xiàn)資源的保護(hù)。{分配資源}try {資源使用情況} finally {釋放資源}end。try?finally?end就形成了一個資源保護(hù)塊。finally后面的語句在任何情況下(不論程序是否發(fā)生異常)都會執(zhí)行。在異常保護(hù)的情況下,當(dāng)異常發(fā)生時,系統(tǒng)會自動彈出一個消息框,在框中顯示異常的消息。退出當(dāng)前模塊后異常類自動清除。 異常響應(yīng)方式異常響應(yīng)為開發(fā)者提供了一個按需進(jìn)行異常處理的機(jī)制。try?except?end形成了一個異常響應(yīng)保護(hù)塊。與finally不同的是:正常情況下except 后面的語句并不被執(zhí)行,而當(dāng)異常發(fā)生時程序自動跳到except處,進(jìn)入異常響應(yīng)處理模塊。當(dāng)異常被響應(yīng)后異常類自動清除。下面是異常響應(yīng)方式的一般代碼:try {程序正常功能} except on ESomething do {響應(yīng)特定異常} else {提供默認(rèn)響應(yīng)} end。保留字on?do用于判斷異常類型。必須注意的是:except后面的語句必須包含在某一個on?do模塊中,而不能單獨(dú)存在。這是又一個與finally不同的地方。 提供默認(rèn)響應(yīng)在異常響應(yīng)模塊中,一般我們只對希望響應(yīng)的特定異常進(jìn)行處理。如果一個異常發(fā)生而響應(yīng)模塊并沒有包含對它的處理代碼,則退出當(dāng)前響應(yīng)模塊,異常類仍被保留。為了保證任何異常發(fā)生后都能在當(dāng)前響應(yīng)模塊中被清除,可以定義默認(rèn)響應(yīng):try {程序正常功能} except on ESomething do {響應(yīng)特定異常} else {提供默認(rèn)響應(yīng)} end。由于else可以響應(yīng)任何異常,包括我們一無所知的異常,因此在默認(rèn)響應(yīng)中最好只包括諸如顯示一個消息框之類的處理,而不要改變程序的運(yùn)行狀態(tài)或數(shù)據(jù)。第3章 “速算24”撲克游戲單元、異常、邏輯 數(shù)學(xué)邏輯單元(1)此游戲程序最關(guān)鍵的地方是如何將用戶輸入的字符串表達(dá)式解析成數(shù)學(xué)表達(dá)式。為了使程序結(jié)構(gòu)清晰明了,我們將此解析代碼和程序的主代碼分開,單獨(dú)編寫成一個單元。 算法設(shè)計(jì)游戲的難點(diǎn)是如何將一字符串形式的表達(dá)式解析成計(jì)算機(jī)能計(jì)算的算術(shù)表達(dá)式。例如對于字符串“3^(4*(9+4))”,如何讓計(jì)算機(jī)解析、計(jì)算。我們的想法是按照數(shù)學(xué)四則運(yùn)算規(guī)則,先逐層進(jìn)入最里層的括號,然后在括號內(nèi)部計(jì)算乘方,接著進(jìn)行乘(除)法運(yùn)算,最后按順序進(jìn)行加(減)運(yùn)算,當(dāng)本層括號內(nèi)部計(jì)算完成后,返回結(jié)果,去掉括號內(nèi)部數(shù)據(jù),退出到下一級括號(如果有)內(nèi)進(jìn)行計(jì)算。這里面涉及的技術(shù)細(xì)節(jié)主要有下面幾點(diǎn):(1)層層剝離括號,然后從最里層的括號開始計(jì)算。(2)對于每一個運(yùn)算符號,找到符號兩側(cè)的數(shù)字,形成一個計(jì)算式。(3)每一個子計(jì)算式完成后,運(yùn)算結(jié)果返回到原始數(shù)列中,作為子串的一部分,繼續(xù)進(jìn)行上述計(jì)算。 字符串的相關(guān)函數(shù)在游戲中,用戶輸入的都是字符數(shù)據(jù),我們需要從這些字符中分析得到數(shù)字和運(yùn)算符號,因此要用到與字符串操作有關(guān)的函數(shù)。function Pos(sub , all:string):integer。這個函數(shù)含有兩個參數(shù):sub表示要查找的字符,all表示原字符串。函數(shù)在字符串a(chǎn)ll中尋找指定的字符sub的位置,如果字符串中不存在sub字符,則函數(shù)結(jié)果為0。function LastDelimiter(sub,all :string):integer 這個函數(shù)含有兩個參數(shù):sub表示要查找的字符,all表示原字符串。函數(shù)返回在字符串a(chǎn)ll中所有查找到的指定字符sub的最后一個的位置,如果字符串中不存在sub字符,則函數(shù)結(jié)果為0。function Copy(allstring:string。first,length:integer):string 這個函數(shù)的3個參數(shù)的含義分別是:allstring代表原來的字符串,first表示拷貝開始的位置,length表示要拷貝的子串長度。函數(shù)返回拷貝成功的子串。procedure Delete(str:string。ppos,length:integer)這個過程用于刪除字符串中的一段字符。參數(shù)str代表將要操作的字符串,ppos代表開始刪除的位置,length表示將要刪除多少個字符。function Length(S): Integer。Length函數(shù)返回字符串S的長度。function Trim(const S: string): string。overload。function Trim(const S: WideString): WideString。overload。Trim函數(shù)返回字符串S去掉前面和后面的空格后的字符串。下面的例子給出一個綜合利用字符串處理函數(shù)編寫的一個處理特定字符串的函數(shù),它的功能是:輸入一個字符串后,可以返回字符串中兩個單括號之間的子字符串,并去掉前面和后面帶著的空格:function GetMyStr(const S: string): string。begin Result:=Trim(Copy(S,Pos(39。39。,S)Pos(39。 end of test’)。,會得到字符串“Result to output”。 算法的代碼編寫基于上述的考慮和知識基礎(chǔ),我們在聲明部分定義下列幾個主要函數(shù):(1)AnyLastPos函數(shù)定位最后一個算術(shù)運(yùn)算符的位置。function AnyLastPos(Str:String):integer。(2)AnyFirstPos函數(shù)定位最先一個算術(shù)運(yùn)算符的位置。function AnyFirstPos(Str:String):integer。(3)AnyFirstF函數(shù)判斷最先出現(xiàn)的符號是+號、號、*號還是/號。function AnyFirstF(Str:String):Char。(4)SubCompute函數(shù)用于計(jì)算不帶()號的加、減、乘、除運(yùn)算。function SubCompute(Str:String):integer。(5)TotalCompute函數(shù)用于計(jì)算表達(dá)式的結(jié)果。function TotalCompute(Str:String):integer。定義4個整數(shù)變量SubPos,PluPos,MulPos,DivPos,在給定的字符串中尋找+,,*,/的最后位置,將這些位置存儲在上述的4個變量中,然后比較4個符號出現(xiàn)的位置,得到數(shù)值最大的運(yùn)算符;在返回的結(jié)果中,返回這個運(yùn)算符的位置。程序代碼如下所示:function AnyLastPos(Str:String):integer。var SubPos:integer。PluPos:integer。MulPos:integer。DivPos:integer。Pos:Integer。begin //定位字符串中最后一個運(yùn)算符的位置SubPos:=LastDelimiter(39。39。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1