全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1615
推到 Plurk!
推到 Facebook!

配對遊戲~

尚未結案
BIGBOA
一般會員


發表:8
回覆:12
積分:4
註冊:2005-06-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-18 11:48:28 IP:210.59.xxx.xxx 未訂閱
最近買了本精采 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=22986733&CC=514087"> 有哪問大大可以幫幫忙嘛? 到底出ㄌ什ㄇ問題??
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-18 13:10:28 IP:211.76.xxx.xxx 未訂閱
奇怪,他的範例檔沒有完整的程式碼啊? 可以請你把你的程式碼po出來嗎?不然很難看出是什麼問題。 發表人 -
BIGBOA
一般會員


發表:8
回覆:12
積分:4
註冊:2005-06-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-18 17:05:53 IP:210.59.xxx.xxx 未訂閱
#include  #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" #include #include #include<math.h> TImage *piclist[22]; Timage *img[4],*tg[a]; TImage *cmd[2]; TLabel *lb_name[4]; char *datalist[] = {"蘋果","香蕉","檸檬","哈密瓜","西瓜","仙桃","葡萄","草莓","鳳梨","榴璉","木瓜","柳橙","竹筍","蕃茄","釋迦","柿子","棗子","紅蘿蔔","蓮霧","青椒","茄子","玉米"}; int total_items = 5; int itemlist[5][4]; int pic_status[4],ans_list[4]={0,1,2,3},tg_flag[4]; int poslist[4][2]; int game_status,item_no,item_flag,p_score,pic_answer; int dno,px,py; void loadpictures(); void gene_items(); void get_item(); bool check_all_match(); void waiting(int); TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormActivate(TObject *Sender) { int i; //建立圖形元件與保存圖形的原始位置 for(i=0;i<4;i ){ img[i]=new TImage(this); img[i]->Parent=this; img[i]->Visible=false; img[i]->AutoSize=true; img[i]->Stretch=true; img[i]->Transparent=true; img[i]->Tag=i; img[i]->Left=60 i*110; img[i]->Top=166; //設定事件程式 img[i]->imgMouseDown; img[i]->imgMouseMove; img[i]->imgMouseUp; poslist[i][0] = img[i]->Left; //保存水平座標 poslist[i][1] = img[i]->Top; //保存垂直座標 }; tg[0]=Image3;tg[1]=Image4;tg[2]=Image5;tg[3]=Image6; lb_name[0]=Label5;lb_name[1]=Label6; lb_name[2]=Label7;ib_name[3]=Label8; //建立按鈕圖形資料 cmd[0]=new TImage(this); cmd[0]->Picture->LoadFromFile("圖片\\start.jpg"); cmd[1]=new TImage(this); cmd[1]->Picture->LOadFromFile("圖片\\stop.jpg"); loadpictures(); //載入圖形檔案資料 randomize(); Label9->Visible=false; Label9->BringToFront(); game_status=0; } //--------------------------------------------------------------------------- void __fastcall TForm1::Image2Click(TObject *Sender) { int i; switch(game_status){ case 0: //按下start鈕 Label9->Visible=false; item_no = 0; Label2->Caption=item_no; p_score = 0; Label4->Caption=p_score; for(i=0;i<4;i ){ img[i]->Visible=true; } gene_items(); get_item(); game_status=1; Image2->Picture=cmd[1]->Picture; break; case 1: //按下stop鈕 Image2->Picture=cmd[0]->Picture; Label9->Caption="Stop!"; Label9->Visible=true; game_status=0; break; }; } //載入圖形檔案資料 void loadpictures(){ char *picname[] = {"p01","p02","p03","p04","p05","p06","p07","p08","p09","p10","p11", "p12","p13","p14","p15","p16","p17","p18","p19","p20","p21","p22"}; String str1,str2; int i; str1="圖片\\"; for(i=0;i<22;i ){ str2=str1; str2=str2 picname[i]; str2=str2 ".bmp"; piclist[i]=new TImage(Form1); piclist[i]->Picture->LoadFromFile(str2); } } //隨機排列串列資料 void random_list(int *xlist,int size){ int i,j,x; for(i=0;iPicture = piclist[itemlist[item_no][ans_list[i]]]->Picture; pic_status[i] = 0; //顯示圖片名稱 lb_name[i]->Caption = datalist[itemlist[item_no][i]]; //還原位置 img[i]->Left=poslist[i]][0]; img[i]->Top=poslist[i][0]; tg_flag[i]=0; } Form1->Label2->Caption=item_no 1; } void check_position(int no){ int p,cx,cy; if(game_status == 1){ cx=img[no]->Left; cy=img[no]->Top; //判斷位置是否重疊 p=ans_list[no]; //判斷是否放到正確位置 if(xc >tg[p]->Left && cx < tg[p]->Left 52 && cy >tg[p]->Top && cy Top 48){ img[no]->Left=tg[p]->Left; img[no]->Top=tg[p]->Top; tg_flag[no] = 1; } else{ //水果圖案彈回原來位置 img[no]->Left=poslist[no][0]; img[no]->Top=poslist[no][1]; tg_flag[no] = 0; } //檢查目前得題目是否已經完成 if(check_all_match() == true){ p_score = p_score 100; Form1->Label4->Caption=p_score; //顯示完全正確的訊息 Form1->Label9->Caption="完全正確!"; Form1->Label9->Visible=true; Form1->Update(); waiting(1); Form1->Label9->Visible=false; item_no = item_no 1; //判斷題目是否已經答完 if(item_no >=total_items){ game_status = 0; Form1->Image2->Picture=cmd[0]->Picture; Form1->Label9->Caption="Game Over!"; Form1->Label9->Visible=true; } else{ get_item(); } } } } //檢查是否完成的函數 bool check_all_match(){ int i,flag; flag = true; for(i=0;i<4;i ){ if(tg_flag[i]==0){ flag = false; break; } } return flag; } //等待時間的副程式 void waiting(int sec){ int x,y; struct time t; gettime(&t); x=t.ti_sec; y=x; while(abs(y-x)<=sec){ gettime(&t); y=t.ti_sec; } } void _ _fastcall TForm::imgMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X,int Y) { TImage *obj=(TImage *)Sender; dno=obj->Tag; px=X; py=Y; } void _ _fastcall TForm::imgMouseMove(TObject *Sender, TSiftState Shift,int X, int Y) { if(game_status==1){ if(Shift.Contains(ssLeft)){ img[dno]->Left=img[dno]->Left (X-px); img[dno]->Top=img[dno]->Top (Y-py); } } } void _ _fastcall TForm::imgMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,int X, int Y) { if(game_status==1){ check_position(dno); } } 還蠻多ㄉ~ 找不到問題出在哪裡~~
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-18 17:15:13 IP:211.76.xxx.xxx 未訂閱
這樣的確看不出來哪裡有問題,看你要不要到會員求助程式檔案上傳區把你的程式完整上傳。
BIGBOA
一般會員


發表:8
回覆:12
積分:4
註冊:2005-06-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-18 17:19:25 IP:210.59.xxx.xxx 未訂閱
那ㄍ要怎ㄇ用阿~~ 我沒試過耶....... 可以交交我嘛?
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-18 17:36:46 IP:211.76.xxx.xxx 未訂閱
引言: 那ㄍ要怎ㄇ用阿~~ 我沒試過耶....... 可以交交我嘛?
http://delphi.ktop.com.tw/forum.asp?FORUM_ID=97 進去後發表文章,然後他有一個上傳檔案的地方,點選"瀏覽"按鈕上傳你的檔案就可以了
BIGBOA
一般會員


發表:8
回覆:12
積分:4
註冊:2005-06-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-18 19:48:40 IP:210.59.xxx.xxx 未訂閱
恩~ 謝謝你~ 我已經傳上去ㄌ~ 希望等一下會有人能替我解答~ 謝謝你~
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-18 21:27:53 IP:140.126.xxx.xxx 未訂閱
哇,你沒上傳完整的程式啊?這樣還是真難弄。 我是自己弄元件的,沒有圖檔,compiler會有錯誤,但是跟你的錯誤不一樣,是錯在 
if(cx >tg[p]->Left && cx < tg[p]->Left  52 && cy >tg[p]->Top&& cy Top  48)
{
   img[no]->Left=tg[p]->Left;
   img[no]->Top=tg[p]->Top;
   tg_flag[no] = 1;
}
紅色部分是你打錯的。 因為你上傳的程式不完整,我最後雖然compiler過了,但是完全不知道他會有何動作。可能要請你先看看你是不是有哪裡不小心打錯了,再重新compiler看看
BIGBOA
一般會員


發表:8
回覆:12
積分:4
註冊:2005-06-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-19 10:32:41 IP:210.59.xxx.xxx 未訂閱
我有將整ㄍ檔案傳上去了~ 您指出的錯誤我也取更改ㄌ~ 不過問題還是有~ 執行後~ 出現了錯誤~ 它就是卡在這裡~
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-06-19 12:23:53 IP:140.126.xxx.xxx 未訂閱
首先,在Unit1.h裡面加上,因為你的img是動態產生的,因此你需要先定義它的event
__published:
        void __fastcall imgMouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y);
        void __fastcall imgMouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y);
        void __fastcall imgMouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
還有__底線部分中間沒有空格,且是TForm1不是TForm
void __fastcall TForm1::imgMouseMove(TObject *Sender, TShiftState Shift,int X, int Y)
其他還有一些小地方是不小心輸入錯誤的,你必須在自己改,再試試看吧,我可以成功compiler
BIGBOA
一般會員


發表:8
回覆:12
積分:4
註冊:2005-06-18

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-06-19 13:39:01 IP:210.59.xxx.xxx 未訂閱
您跟說的錯誤我已經改了~ 可是它現在出現的畫面事... 也搞不懂~ 怎ㄇ這個遊戲還是沒有辦法運作呢?
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-06-19 14:01:31 IP:140.126.xxx.xxx 未訂閱
我把我改好的程式mail到你的yahoo信箱了,你再試試看吧
BIGBOA
一般會員


發表:8
回覆:12
積分:4
註冊:2005-06-18

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-06-19 15:36:52 IP:210.59.xxx.xxx 未訂閱
太感動了~ 它會跑了~ 會顯示ㄌ~ 大哥真是太謝謝你了~ 我得趕快想辦法把它用懂~ 還要修改成自己的模式~ 報告作業~ 老師要我們交ㄉ~     發表人 -
BIGBOA
一般會員


發表:8
回覆:12
積分:4
註冊:2005-06-18

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-06-19 16:21:39 IP:210.59.xxx.xxx 未訂閱
請問一下~ 如果我想把你改好得程式在簡化一點的化~ 有哪些部分可以不用打的嗎? 有些都看不懂它寫那是什ㄇ意思做什ㄇ用的~ 可以麻煩你幫我註解一下嘛?謝謝....麻煩你了~高手!!
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-06-19 17:16:22 IP:140.126.xxx.xxx 未訂閱
稍微看了一下,似乎沒辦法可以剪短,關於註解,你可能要自己研究,畢竟這是你的作業,書上應該也會有說明
BIGBOA
一般會員


發表:8
回覆:12
積分:4
註冊:2005-06-18

發送簡訊給我
#16 引用回覆 回覆 發表時間:2005-06-19 17:54:16 IP:210.59.xxx.xxx 未訂閱
恩恩~~ 謝謝你喔~ 我在研究了~ 試著感變它的變數測試~ 有些已經知道在做什麼了~ 謝謝喔!!! 我會加油的~
BIGBOA
一般會員


發表:8
回覆:12
積分:4
註冊:2005-06-18

發送簡訊給我
#17 引用回覆 回覆 發表時間:2005-06-19 21:08:54 IP:210.59.xxx.xxx 未訂閱
請問一下喔~ 從一開始不能跑到最後完成了~ 中間在該錯的時候遇到了什麼問題? 然後是怎麼解決的? 可以跟我說一下嗎?
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#18 引用回覆 回覆 發表時間:2005-06-19 21:18:58 IP:211.76.xxx.xxx 未訂閱
因為你給我的檔案裡面沒有圖片,所以我也不知道是哪裡有問題,看你要不要把你的圖片mail給我
BIGBOA
一般會員


發表:8
回覆:12
積分:4
註冊:2005-06-18

發送簡訊給我
#19 引用回覆 回覆 發表時間:2005-06-19 21:29:50 IP:210.59.xxx.xxx 未訂閱
我MAIL給你了喔~ 麻煩你囉~ 再趕報告~ 不好意思麻煩你齁~~
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#20 引用回覆 回覆 發表時間:2005-06-19 21:36:47 IP:211.76.xxx.xxx 未訂閱
我不清楚你的問題是什麼?我可以可以玩到GameOver。 只是圖片要放到目的的圈圈似乎有點難放,要位置正確才對
BIGBOA
一般會員


發表:8
回覆:12
積分:4
註冊:2005-06-18

發送簡訊給我
#21 引用回覆 回覆 發表時間:2005-06-19 21:56:25 IP:210.59.xxx.xxx 未訂閱
這個BCB程式我也是剛開始學而已~ 有很多語法都還是看不懂~ 如果方便的化~ 你可以大概跟我敘述一下~ 整個程式它跑的流程嗎? 有哪些地方碰到了什麼問題是用什麼方法解決的?麻煩你囉~~
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#22 引用回覆 回覆 發表時間:2005-06-19 22:05:39 IP:211.76.xxx.xxx 未訂閱
這有點難說明,程式碼裡面不是都有註解,應該可以大致知道在做什麼。 程式的流程就是,當滑鼠在水果的圖片上按住右鍵拖曳到目的圈圈時,由程式判斷是否在正確的圈圈上。 如果看不懂就看看你的書裡面有提到的元件說明,或是BCB的HELP,看看這個元件有哪些屬性...
BIGBOA
一般會員


發表:8
回覆:12
積分:4
註冊:2005-06-18

發送簡訊給我
#23 引用回覆 回覆 發表時間:2005-06-19 23:31:50 IP:210.59.xxx.xxx 未訂閱
請問一下~ 你會做流程圖嗎? 這個程式流程的先後順序過程是怎麼樣的~
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#24 引用回覆 回覆 發表時間:2005-06-20 00:00:52 IP:219.68.xxx.xxx 未訂閱
BIGBOA可以請您先將書本讀一讀,看看Help,找找資料,然後找出您不會的關鍵點再讓版上的大人解答可以嗎?書本上的範例是基本語法的集合,如果您書都沒看完,自己也沒有去找相關資料,那當然一個範例就會有成千上萬的問題... 請GGL大人把程式流程圖畫給您這也太扯了吧,乾脆請GGL大人幫你把程式的企畫案,Spec,Phototype,SA,SD都做一做然後再家教三小時,這樣好不好???
系統時間:2024-06-01 23:33:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!