線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4016
推到 Plurk!
推到 Facebook!

Falling pieces

 
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-11 11:41:29 IP:211.76.xxx.xxx 未訂閱
看到這個問題覺得很有趣: ■【BCB】【問題】有誰能做出圖片的這種SNOW效果?
引言:有誰能做出圖片的這種SNOW效果?
於是試著作作看,結果還讓我玩出來了 < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=17577154&CC=393106"> 不想下載的可以看以下的原始碼:
//---------------------------------------------------------------------------
// Falling pics by dllee (Dong-Liang Lee) http://dllee.ktop.com.tw
// <2004-09-11>
//---------------------------------------------------------------------------
#include 
#pragma hdrstop    #include "FallingUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
Graphics::TBitmap *pBitmap;
Byte *Ptn[10];
Byte *PtnIndex;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  int ReOrder[8]={8,1,5,3,4,7,2,6};
  pBitmap = new Graphics::TBitmap();
  pBitmap->PixelFormat=pf24bit;
  pBitmap->Width=256;
  pBitmap->Height=128;
  for(int i=0;i<10;i++)
  {
    Ptn[i]=new Byte[256*3];
    memset(Ptn[i],0x10,256*3);
    for(int j=0;j<256;j++)
      if(j%3==0)
        memset(&Ptn[i][j*3],0,3);
  }
  for(int i=0;i<256;i++)
  {
    if(i%3==0) continue;
    Ptn[ReOrder[(i/3)%8]][i*3]=0xFF;
    Ptn[9][i*3]=0xFF;
  }
  PtnIndex=new Byte[128];
  memset(PtnIndex,0,128);
  this->Color=clBlack;
}
//---------------------------------------------------------------------------
__fastcall TForm1::~TForm1()
{
  delete [] PtnIndex;
  for(int i=0;i<10;i++) delete [] Ptn[i];
  delete pBitmap;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  memset(PtnIndex,0,128);
  int iStep=-64;
  for(int i=0;i<128;i++)
  {
    iStep++;
    PtnIndex[127]=i%8+1;
    memmove(&PtnIndex[0],&PtnIndex[2],126);
    for(int i=0;iScanLine[128-j],
        Ptn[PtnIndex[j-1]],256*3);
    }
    Canvas->Draw(15,15,pBitmap);
    Sleep(5);
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Close();
}
//---------------------------------------------------------------------------
吃軟也吃硬 dllee.ktop.com.tw 視動科技 VMASK - ViewMove Automation Software Kernel
------
http://www.ViewMove.com
附加檔案:56160_Falling.zip
roger-c
一般會員


發表:7
回覆:14
積分:4
註冊:2003-11-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-11 15:04:48 IP:211.74.xxx.xxx 未訂閱
不好意思,小弟的程式能力不足,不知可否方便對每一列程式碼做詳細註解,謝謝你囉!
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-11 20:07:17 IP:61.64.xxx.xxx 未訂閱
既知自己能力多少 就應以自身不足部份補強 好高鶩遠 不是好事 要求 程式碼說明 還真不如題出不解之處 來的有討論意義 此舉 聰明反被誤之 遇到這樣的說法 不知要笑還是要哭 很多 開放原始碼 為什麼都沒註解 1 其一是保留 2 留下更廣擴的思維 可讓旁人取其義不取其法 學習 總是 堅苦的 快樂的學習 不代表沒有艱澀難熬的日子
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-12 02:58:59 IP:211.76.xxx.xxx 未訂閱
不知道有下載的網友是否有看出問題了呢? 如果沒有,就表示,人的眼睛還是很好騙的 < > 因為我發現我只算完成了一半,效果有點像,但不一樣 < > 說真的,不留說明...我本來的用意是要考考同事是否可以看得懂我在寫什麼? 同時也要向他說明,不寫說明,可能過個幾天或幾個月自己都看不懂了 class="code">Ptn[ReOrder[(i/3)%8]][i*3]=0xFF; 如果陣列名稱再故意取得沒什麼意義,如:
A[B[(i/3)%8]][i*3]=0xFF;
再使用完全指標表示法:
*(*(A *(B (i/3)%8)) i*3)=0xFF;
這像樣的 Code 我寫得出,但自己過 10 分鐘就看不懂了 < href="http://dllee.ktop.com.tw" target="blank">吃軟也吃硬 dllee.ktop.com.tw 視動科技 VMASK - ViewMove Automation Software Kernel
------
http://www.ViewMove.com
roger-c
一般會員


發表:7
回覆:14
積分:4
註冊:2003-11-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-12 10:53:44 IP:210.68.xxx.xxx 未訂閱
感謝兩位大大的指教,我想小弟我真的要下點功夫去專研了,謝囉!
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-09-12 19:10:23 IP:211.76.xxx.xxx 未訂閱
在發現 BUG 後,就不是用試的可以試出來的... 把一些說明寫上,不然,連自己都無法 Bugfix  < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=17587170&CC=393330"> 看得出分別嗎? 為了自己除錯方便,同時新增 class="code"> //--------------------------------------------------------------------------- // Falling pieces by dllee (Dong-Liang Lee) http://dllee.ktop.com.tw // <2004-09-11> First release // <2004-09-12> Bugfixed, pieces falling and gathering perfectly //--------------------------------------------------------------------------- #> #>>>>>=>>>=>=>>>>>>>>>>>>Name="Terminal">Font->Size=6; for(int i=0;i<10;i++) Canvas->TextOut(235,15+7*i,String("Ptn[")+i+String("]")); for(int i=10;i<18;i++) Canvas->TextOut(200,15+7*i,String("FallingPtn[")+(i-10)+String("]")); } //--------------------------------------------------------------------------- 吃軟也吃硬 dllee.ktop.com.tw 視動科技 VMASK - ViewMove Automation Software Kernel
------
http://www.ViewMove.com
系統時間:2024-04-20 6:16:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!