關於重新遊戲的問題! |
缺席
|
powervic
一般會員 發表:5 回覆:7 積分:2 註冊:2008-03-17 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
powervic
一般會員 發表:5 回覆:7 積分:2 註冊:2008-03-17 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
powervic
一般會員 發表:5 回覆:7 積分:2 註冊:2008-03-17 發送簡訊給我 |
[code cpp] //--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" //--------------------------------------------------------------------------- class snake { public: int body_left,body_top; friend void __fastcall TForm1::Timer1Timer(TObject *Sender); snake(TForm1 *Form1,int i,snake *x[]); void move(); void move(int key,snake *x[],int i); private: TShape *body; static int body_long; static bool Game_Over; int boundx,boundy; int temp_top,temp_left; }; //--------------------------------------------------------------------------- int snake::body_long=0; bool snake::Game_Over=true; snake::snake(TForm1 *Form1,int i,snake *x[]) { body=new TShape(Form1); body->Parent=Form1; body->Shape=stCircle; body->Width=20; body->Height=20; if(body_long==0) body->Brush->Color=(TColor)0xff0000; else body->Brush->Color=(TColor)0x00ffff; if(body_long<3) body->Left=100; body->Tag=body_long; if(body_long!=0) { temp_top=x[i-1]->body->Top; temp_left=x[i-1]->body->Left; } body_long ; boundx=Form1->ClientWidth; boundy=Form1->ClientHeight; move(); body_left=body->Left; body_top=body->Top; } //--------------------------------------------------------------------------- void snake::move() { for(int i=0;i<body_long;i )<br /> body->Left-=20; } //--------------------------------------------------------------------------- void snake::move(int key, snake *x[],int i) { if(body->Tag==0) { if(key==37 && body->Left-20<0) Game_Over=false; if(key==39 && body->Left 20>boundx) Game_Over=false; if(key==38 && body->Top-20<0) Game_Over=false; if(key==40 && body->Top 20>boundy) Game_Over=false; if(key==37) body->Left-=20; if(key==39) body->Left =20; if(key==38) body->Top-=20; if(key==40) body->Top =20; for(int i=1;i<body_long;i )<br /> if(x[0]->body->Left==x[i]->body->Left && x[0]->body->Top==x[i]->body->Top) Game_Over=false; } else { body->Left=temp_left; body->Top=temp_top; temp_left=x[i-1]->body->Left; temp_top=x[i-1]->body->Top; } body_left=body->Left; body_top=body->Top; } //--------------------------------------------------------------------------- TForm1 *Form1; const int no=1000; int now_no=0; int key_temp=39; snake *sa[no]; bool tf,check; void __fastcall TForm1::MyPower() { for(int i=0;i } //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { randomize(); for(int i=0;i<3;i ) { sa[i]=new snake(Form1,i,sa); now_no ; } do { check=true; Shape1->Left=random(Form1->ClientWidth)/20*20; Shape1->Top=random(Form1->ClientHeight)/20*20; for(int i=0;i<3;i ) if(Shape1->Left==sa[i]->body_left && Shape1->Top==sa[i]->body_top) check=false; }while(check==false); } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { if(sa[0]->Game_Over==true) { tf=true; if(key_temp==39) if(sa[0]->body->Left 20==Shape1->Left && sa[0]->body->Top==Shape1->Top) sa[now_no ]=new snake(Form1,now_no,sa); if(key_temp==37) if(sa[0]->body->Left-20==Shape1->Left && sa[0]->body->Top==Shape1->Top) sa[now_no ]=new snake(Form1,now_no,sa); if(key_temp==38) if(sa[0]->body->Top-20==Shape1->Top && sa[0]->body->Left==Shape1->Left) sa[now_no ]=new snake(Form1,now_no,sa); if(key_temp==40) if(sa[0]->body->Top 20==Shape1->Top && sa[0]->body->Left==Shape1->Left) sa[now_no ]=new snake(Form1,now_no,sa); MyPower(); if(sa[0]->body->Left==Shape1->Left && sa[0]->body->Top==Shape1->Top) do { check=true; Shape1->Left=random(Form1->ClientWidth)/20*20; Shape1->Top=random(Form1->ClientHeight)/20*20; for(int i=0;i check=false; }while(check==false); } else { Timer1->Enabled=false; ShowMessage("You Lose!"); } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(tf) { if(key_temp==Key || key_temp==37 && Key==39 || key_temp==38 && Key==40 || key_temp==39 && Key==37 || key_temp==40 && Key==38) return; key_temp=Key; tf=false; } } //--------------------------------------------------------------------------- [/code] 遊戲結束時 我有把sa[i]=NULL; 然後再把FORM初始部分改到Timer裡面 用按鍵去開關我的初始 但是在程式執行都會產生錯誤 不知道是什麼環節出錯了 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |