做煙火多執行緒的問題 |
|
13fri
一般會員 發表:1 回覆:3 積分:0 註冊:2002-06-19 發送簡訊給我 |
請問各位大大啊
小弟我正在寫一個煙火程式
目前卡在一個多執行緒的問題
因為我要在按下滑鼠時就要有煙火發射
所以做了一個物件如下
unit1.cpp TForm1 *Form1;
TThread *FireUp;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{ FireUp=new Fire(false,X,Y);
FireUp->Resume(); }
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
delete FireUp;
} unit2.cpp __fastcall Fire::Fire(bool CreateSuspended,int x,int y)
: TThread(false)
{
this->Mouse_x=x;
this->Mouse_y=y;
}
//-------------------------------------------------------------------------
void __fastcall Fire::Execute()
{
for(int y=400;y>=Mouse_y;y-=3)
{
this->FirePrint(Mouse_x,y-3,Mouse_x,y,clRed);
Sleep(50);
this->FirePrint(Mouse_x,y-3,Mouse_x,y,clBlack);
}
}
//-------------------------------------------------------------------------
void Fire::FirePrint(int x1,int y1,int x2,int y2,TColor pencolor)
{ Form1->Canvas->Pen->Width=3;
Form1->Canvas->Pen->Color=pencolor;
Form1->Canvas->Pen->Style =psSolid;
Form1->Canvas->MoveTo(x1,y1);
Form1->Canvas->LineTo(x2,y2);
}
問題是目前只要我同時產生出太多的煙火
還沒到要爆的地方就停著不動了
是因為我只用一個指標(FireUp)的原因嗎?
請各位大大幫小弟解答一下
謝謝
PS:
拜託 請盡量不要給我你們以前寫的程式原始碼
(給我我就會想抄了)
給我提示就好
我想自己寫出來
謝謝
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
依您的程式碼 unit1.cpp 中,
TThread *FireUp;
只有「一個」,但是在每次 FormMouseDown 時您就 new 一次,而每 new 一次,其前一次所記錄下來的指標就已經不見了。
在此最好使用一個陣列
int iTotalFireUp;
TThread *FireUp[100];
來存所有 new 出來的指標,以上是最多限制 100 個煙火,如果您想要無限制,可以使用 TList 來存 TThread 的指標。 至於 unit2.cpp ,因個人不熟 TThread 所以不知.....
------
http://www.ViewMove.com |
13fri
一般會員 發表:1 回覆:3 積分:0 註冊:2002-06-19 發送簡訊給我 |
|
13fri
一般會員 發表:1 回覆:3 積分:0 註冊:2002-06-19 發送簡訊給我 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
|
richard
一般會員 發表:0 回覆:3 積分:0 註冊:2002-03-18 發送簡訊給我 |
|
13fri
一般會員 發表:1 回覆:3 積分:0 註冊:2002-06-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |