BIGBOA
一般會員
發表:8 回覆:12 積分:4 註冊:2005-06-18
發送簡訊給我
|
最近買了本精采 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=22986733&CC=514087">
有哪問大大可以幫幫忙嘛?
到底出ㄌ什ㄇ問題??
|
GGL
資深會員
發表:104 回覆:600 積分:335 註冊:2006-11-05
發送簡訊給我
|
奇怪,他的範例檔沒有完整的程式碼啊?
可以請你把你的程式碼po出來嗎?不然很難看出是什麼問題。 發表人 -
|
BIGBOA
一般會員
發表:8 回覆:12 積分:4 註冊:2005-06-18
發送簡訊給我
|
#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
發送簡訊給我
|
這樣的確看不出來哪裡有問題 ,看你要不要到會員求助程式檔案上傳區把你的程式完整上傳。
|
BIGBOA
一般會員
發表:8 回覆:12 積分:4 註冊:2005-06-18
發送簡訊給我
|
那ㄍ要怎ㄇ用阿~~
我沒試過耶.......
可以交交我嘛?
|
GGL
資深會員
發表:104 回覆:600 積分:335 註冊:2006-11-05
發送簡訊給我
|
|
BIGBOA
一般會員
發表:8 回覆:12 積分:4 註冊:2005-06-18
發送簡訊給我
|
恩~
謝謝你~
我已經傳上去ㄌ~
希望等一下會有人能替我解答~
謝謝你~
|
GGL
資深會員
發表:104 回覆:600 積分:335 註冊:2006-11-05
發送簡訊給我
|
哇,你沒上傳完整的程式啊?這樣還是真難弄。
我是自己弄元件的,沒有圖檔,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
發送簡訊給我
|
我有將整ㄍ檔案傳上去了~
您指出的錯誤我也取更改ㄌ~
不過問題還是有~
執行後~
出現了錯誤~
它就是卡在這裡~
|
GGL
資深會員
發表:104 回覆:600 積分:335 註冊:2006-11-05
發送簡訊給我
|
首先,在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
發送簡訊給我
|
您跟說的錯誤我已經改了~
可是它現在出現的畫面事...
也搞不懂~
怎ㄇ這個遊戲還是沒有辦法運作呢?
|
GGL
資深會員
發表:104 回覆:600 積分:335 註冊:2006-11-05
發送簡訊給我
|
我把我改好的程式mail到你的yahoo信箱了,你再試試看吧
|
BIGBOA
一般會員
發表:8 回覆:12 積分:4 註冊:2005-06-18
發送簡訊給我
|
太感動了~
它會跑了~
會顯示ㄌ~
大哥真是太謝謝你了~
我得趕快想辦法把它用懂~
還要修改成自己的模式~
報告作業~
老師要我們交ㄉ~ 發表人 -
|
BIGBOA
一般會員
發表:8 回覆:12 積分:4 註冊:2005-06-18
發送簡訊給我
|
請問一下~
如果我想把你改好得程式在簡化一點的化~
有哪些部分可以不用打的嗎?
有些都看不懂它寫那是什ㄇ意思做什ㄇ用的~
可以麻煩你幫我註解一下嘛?謝謝....麻煩你了~高手!!
|
GGL
資深會員
發表:104 回覆:600 積分:335 註冊:2006-11-05
發送簡訊給我
|
稍微看了一下,似乎沒辦法可以剪短,關於註解,你可能要自己研究,畢竟這是你的作業,書上應該也會有說明
|
BIGBOA
一般會員
發表:8 回覆:12 積分:4 註冊:2005-06-18
發送簡訊給我
|
恩恩~~
謝謝你喔~
我在研究了~
試著感變它的變數測試~
有些已經知道在做什麼了~
謝謝喔!!!
我會加油的~
|
BIGBOA
一般會員
發表:8 回覆:12 積分:4 註冊:2005-06-18
發送簡訊給我
|
請問一下喔~
從一開始不能跑到最後完成了~
中間在該錯的時候遇到了什麼問題?
然後是怎麼解決的?
可以跟我說一下嗎?
|
GGL
資深會員
發表:104 回覆:600 積分:335 註冊:2006-11-05
發送簡訊給我
|
因為你給我的檔案裡面沒有圖片,所以我也不知道是哪裡有問題,看你要不要把你的圖片mail給我
|
BIGBOA
一般會員
發表:8 回覆:12 積分:4 註冊:2005-06-18
發送簡訊給我
|
我MAIL給你了喔~
麻煩你囉~
再趕報告~
不好意思麻煩你齁~~
|
GGL
資深會員
發表:104 回覆:600 積分:335 註冊:2006-11-05
發送簡訊給我
|
我不清楚你的問題是什麼?我可以可以玩到GameOver。
只是圖片要放到目的的圈圈似乎有點難放,要位置正確才對
|
BIGBOA
一般會員
發表:8 回覆:12 積分:4 註冊:2005-06-18
發送簡訊給我
|
這個BCB程式我也是剛開始學而已~
有很多語法都還是看不懂~
如果方便的化~
你可以大概跟我敘述一下~
整個程式它跑的流程嗎?
有哪些地方碰到了什麼問題是用什麼方法解決的?麻煩你囉~~
|
GGL
資深會員
發表:104 回覆:600 積分:335 註冊:2006-11-05
發送簡訊給我
|
這有點難說明,程式碼裡面不是都有註解,應該可以大致知道在做什麼。
程式的流程就是,當滑鼠在水果的圖片上按住右鍵拖曳到目的圈圈時,由程式判斷是否在正確的圈圈上。
如果看不懂就看看你的書裡面有提到的元件說明,或是BCB的HELP,看看這個元件有哪些屬性...
|
BIGBOA
一般會員
發表:8 回覆:12 積分:4 註冊:2005-06-18
發送簡訊給我
|
請問一下~
你會做流程圖嗎?
這個程式流程的先後順序過程是怎麼樣的~
|
supman
尊榮會員
發表:29 回覆:770 積分:924 註冊:2002-04-22
發送簡訊給我
|
BIGBOA可以請您先將書本讀一讀,看看Help,找找資料,然後找出您不會的關鍵點再讓版上的大人解答可以嗎?書本上的範例是基本語法的集合,如果您書都沒看完,自己也沒有去找相關資料,那當然一個範例就會有成千上萬的問題...
請GGL大人把程式流程圖畫給您這也太扯了吧,乾脆請GGL大人幫你把程式的企畫案,Spec,Phototype,SA,SD都做一做然後再家教三小時,這樣好不好???
|