?»??»?//--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" #include #include #include TImage *piclist[22]; TImage *img[4],*tg[4]; TImage *cmd[2]; TLabel *lb_name[4]; char *datalist[] = {"Ä«ªG","­»¿¼","ÂfÂc","«¢±K¥Ê","¦è¥Ê","¥P®ç","¸²µå","¯ó²ù","»ñ±ù","ºhæ£","¤ì¥Ê","¬h¾í","¦Ëµ«","¿»­X","ÄÀ­{","¬U¤l","´Ç¤l","¬õÅÚ½³","½¬Ãú","«C´Ô","­X¤l","¥É¦Ì"}; 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; //«Ø¥ß¹Ï§Î¤¸¥ó»P«O¦s¹Ï§Îªº­ì©l¦ì¸m 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; //³]©w¨Æ¥óµ{¦¡ img[i]->OnMouseDown=imgMouseDown; img[i]->OnMouseMove=imgMouseMove; img[i]->OnMouseUp=imgMouseUp; poslist[i][0] = img[i]->Left; //«O¦s¤ô¥­®y¼Ð poslist[i][1] = img[i]->Top; //«O¦s««ª½®y¼Ð }; 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; //«Ø¥ß«ö¶s¹Ï§Î¸ê®Æ cmd[0]=new TImage(this); cmd[0]->Picture->LoadFromFile("¹Ï¤ù\\start.jpg"); cmd[1]=new TImage(this); cmd[1]->Picture->LOadFromFile("¹Ï¤ù\\stop.jpg"); loadpictures(); //¸ü¤J¹Ï§ÎÀɮ׸ê®Æ randomize(); Label9->Visible=false; Label9->BringToFront(); game_status=0; } //--------------------------------------------------------------------------- void __fastcall TForm1::Image2Click(TObject *Sender) { int i; switch(game_status){ case 0: //«ö¤Ustart¶s 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: //«ö¤Ustop¶s Image2->Picture=cmd[0]->Picture; Label9->Caption="Stop!"; Label9->Visible=true; game_status=0; break; }; } //¸ü¤J¹Ï§ÎÀɮ׸ê®Æ 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); } } //ÀH¾÷±Æ¦C¦ê¦C¸ê®Æ 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; //Åã¥Ü¹Ï¤ù¦WºÙ lb_name[i]->Caption = datalist[itemlist[item_no][i]]; //ÁÙ­ì¦ì¸m 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Â_¦ì¸m¬O§_­«Å| p=ans_list[no]; //§PÂ_¬O§_©ñ¨ì¥¿½T¦ì¸m 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{ //¤ôªG¹Ï®×¼u¦^­ì¨Ó¦ì¸m img[no]->Left=poslist[no][0]; img[no]->Top=poslist[no][1]; tg_flag[no] = 0; } //Àˬd¥Ø«e±oÃD¥Ø¬O§_¤w¸g§¹¦¨ if(check_all_match() == true){ p_score = p_score +100; Form1->Label4->Caption=p_score; //Åã¥Ü§¹¥þ¥¿½Tªº°T®§ Form1->Label9->Caption="§¹¥þ¥¿½T!"; Form1->Label9->Visible=true; Form1->Update(); waiting(1); Form1->Label9->Visible=false; item_no = item_no + 1; //§PÂ_ÃD¥Ø¬O§_¤w¸gµª§¹ 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(); } } } } //Àˬd¬O§_§¹¦¨ªº¨ç¼Æ 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); } } //---------------------------------------------------------------------------