BCB小瑪俐設計(一)
  由於自己本身也還是學生,因此,難免有些狂言謬論,如果有錯誤之處,還請多多指教,或者,你有些想法也可以提出討論。
  個人習慣在寫程式之前,會先想一下遊戲的雛型,比如說遊戲的畫面、規則等等…,這樣才好規劃流程圖,在做流程圖同時順便設計一下公式,接著就開始蒐集資料、參考的圖片,畫些遊戲圖片、使用者介面圖形,再來就開始寫程式,測試,除錯,繼續迴圈,直到完成為止。
  以小瑪俐來說,依面板上的水果圖案數量取亂數,比如說有14個,那就設定取亂數1~14,再來就是利用switch來移動LED燈,透過設定物件的Left、Top值來達成目的,使用計時器控制移動的速度。
程式碼:
※bw為LED燈物件
| 
//--------------------------------------------------------------------------- 
#include  
#pragma hdrstop 
#include "Unit1.h" 
//--------------------------------------------------------------------------- 
#pragma package(smart_init) 
#pragma resource "*.dfm" 
TForm1 *Form1; 
//全域變數(num中獎的號碼),(pos代表LED燈位置),(sel控制移動速度) 
int num,pos = 1,sel; 
//--------------------------------------------------------------------------- 
__fastcall TForm1::TForm1(TComponent* Owner) 
        : TForm(Owner) 
{ 
} 
//--------------------------------------------------------------------------- 
//點擊開始按鈕 
void __fastcall TForm1::bGoClick(TObject *Sender) 
{ 
  srand((unsigned)time(NULL)); //取得系統時間作為亂數種子 
  Timer1->Enabled = true; //開啟計時器1 
  Timer1->Interval = 100; //設定計時器執行時間 
  num=rand()%14; //取亂數 
  num += 56; //將取得的亂數加56,可多繞4圈 
  sel = num; 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::Timer1Timer(TObject *Sender) 
{ 
  sel--; 
  if(sel<6) //判斷sel小於6增加計時器執行時間為500(0.5秒執行一次) 
    Timer1->Interval = 500; 
  if(sel<3) //判斷sel小於3增加計時器執行時間為1000(1秒執行一次) 
    Timer1->Interval = 1000; 
  if(sel==0) //判斷sel等於0關閉計時器 
  { 
    Timer1->Enabled = false; 
  } 
  pos++; //移動位置加1,等於15(即繞完一圈)回到1 
  if(pos==15) 
    pos=1; 
  switch(pos) //依照pos移動到指定的位置 
  { 
    case 1: 
      bw->Left = 64; 
      bw->Top = 16; 
      break; 
    case 2: 
      bw->Left = 112; 
      bw->Top = 16; 
      break; 
    case 3: 
      bw->Left = 160; 
      bw->Top = 16; 
      break; 
    case 4: 
      bw->Left = 208; 
      bw->Top = 16; 
      break; 
    case 5: 
      bw->Left = 208; 
      bw->Top = 64; 
      break; 
    case 6: 
      bw->Left = 208; 
      bw->Top = 112; 
      break; 
    case 7: 
      bw->Left = 208; 
      bw->Top = 160; 
      break; 
    case 8: 
      bw->Left = 160; 
      bw->Top = 160; 
      break; 
    case 9: 
      bw->Left = 112; 
      bw->Top = 160; 
      break; 
    case 10: 
      bw->Left = 64; 
      bw->Top = 160; 
      break; 
    case 11: 
      bw->Left = 16; 
      bw->Top = 160; 
      break; 
    case 12: 
      bw->Left = 16; 
      bw->Top = 112; 
      break; 
    case 13: 
      bw->Left = 16; 
      bw->Top = 64; 
      break; 
    case 14: 
      bw->Left = 16; 
      bw->Top = 16; 
      break; 
  }} | 

 
沒有留言:
張貼留言