2010-10-13 80 views
0

我想知道是否有人可以通過任何機會幫助我。我有一個在10天內到期的學校項目,說實話,我不知道我在做什麼= /我期望的是我編程的記憶遊戲。我目前陷入困境的是,我必須花時間玩這個遊戲需要多長時間,然後顯示他們最終需要多長時間才能成爲'分數'。我如何時間?我應該使用什麼組件,以及如何對這個組件進行編程?它應該在點擊按鈕時開始,然後在遊戲結束時結束。任何幫助將不勝感激!我需要幫助德爾福-7

回答

2

爲什麼當他開始遊戲時不將當前時間保存在變量中,並且在他結束時再次保存時間?

你可以通過現在指令。

var time: TDateTime; 
begin 
time := now; 
ShowMessage(DateTimeToStr(time)); 
end; 

您會在系統中看到當前時間。

2

您需要

1.-在您的形式,

  • 添加一個計時器,它的Enabled屬性設置爲False
  • 添加標籤以顯示時間
  • 添加私人屬性startTime以記錄用戶開始遊戲的時間。

應該導致這樣的事情...

type 
TForm1 = class(TForm) 
    ... 
    Label1: TLabel; 
    Timer1: TTimer; 
    ... 
private 
    startTime:TDateTime; 
    .... 

2:在啓動按鈕的單擊事件,代碼初始化開始時間屬性和開球定時器。

procedure TForm1.Button1Click(Sender: TObject); 
    begin 
    startTime:=Now; 
    Timer1.Enabled:=True; 
    .... 
    end; 

3.-在計時器中的計時器事件,一些代碼以顯示時間計數

procedure TForm1.Timer1Timer(Sender: TObject); 
    begin 
    Label1.Caption:=TimeToStr(Now-startTime); 
    .... 
    end; 

4.-在結束按鈕的點擊事件時,或當程序認爲遊戲結束時,一些代碼停止計時器。

procedure TForm1.Button2Click(Sender: TObject); 
    begin 
    Timer1.Enabled:=False; 
    Label1.Caption:=TimeToStr(now-startTime); 
    .... 
    end; 
+1

該示例中的定時器是冗餘的,並增加了開銷。每當計時器滴答時都會發生事件 – dwarFish 2010-10-14 09:37:50

0

PA的答案似乎正是你所需要的。因爲如果我深知,這是你第一次與德爾福合作,我只補充一點:

  • Now是SysUtils單元定義一個函數,返回當前的日期&時間

  • 你」將在系統組件調色板上找到TTimer(參見下面鏈接中的圖片)

  • 您需要編寫代碼的所有過程將自動生成,方法是在對象檢查器中選擇事件選項卡,然後雙擊輸入框(見圖片i下面n連接)

http://i.stack.imgur.com/0iNsL.png(抱歉,不能內嵌圖片,因爲我沒有從這裏就可以了必要的口碑還)

HOULD很容易完成你的應用程序

好運, ģ

0
  1. 創建在表單TDateTime類型類型的變量(例如開始時間)。
  2. 當用戶開始播放時,將變量設置爲Now()。
  3. 當用戶結束時,計算Now() - StartTime的值。結果是一個十進制數字,表示在開始時間和結束時間之間經過的一天中的一小部分。
  4. 要將其轉換爲秒數,請乘以(60 * 60 * 24)(這是一天中的秒數)。從那裏你可以顯示你想要的數字。