?? dragon.cpp
字號:
// DRAGON.cpp: implementation of the DRAGON class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "PROGRAM1.h"
#include "DRAGON.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
DRAGON::DRAGON()
{
Init();
}
DRAGON::~DRAGON()
{
}
void DRAGON::Move()
{
tail->rlink=first;
first->llink=tail;
first=tail;
tail=tail->llink;
tail->rlink=NULL;
}
DRAGON::DRAGONNODE::DRAGONNODE()
{
x=0;
y=0;
llink=NULL;
rlink=NULL;
}
void DRAGON::UpMove()
{
tail->x=first->x;
tail->y=first->y-Width;
Move();
}
void DRAGON::DownMove()
{
tail->x=first->x;
tail->y=(first->y)+Width;
Move();
}
void DRAGON::LeftMove()
{
tail->x=first->x-Width;
tail->y=first->y;
Move();
}
void DRAGON::RightMove()
{
tail->x=first->x+Width;
tail->y=first->y;
Move();
}
int DRAGON::GetX(int nflag)
{
DRAGONNODE *current=first;
for(int i=0;i<nflag;i++) if(current!=tail) current=current->rlink;
return current->x;
}
int DRAGON::GetY(int nflag)
{
DRAGONNODE *current=first;
for(int i=0;i<nflag;i++) if(current!=tail) current=current->rlink;
return current->y;
}
void DRAGON::DgnMove()
{
if(Direction==1) UpMove();
if(Direction==2) DownMove();
if(Direction==3) LeftMove();
if(Direction==4) RightMove();
}
BOOL DRAGON::IsBody(int x, int y)
{
for(int i=1;i<Lenth;i++)
if(GetX(i)==x&&GetY(i)==y) return TRUE;
return FALSE;
}
void DRAGON::Eat()
{
DRAGONNODE *newnode=new DRAGONNODE;
newnode->llink=tail;
tail->rlink=newnode;
if(GetX(Lenth)==GetX(Lenth-1))
{
newnode->x=tail->x;
if(GetY(Lenth)>GetY(Lenth-1)) newnode->y=tail->y+1;
else newnode->y=tail->y-1;
}
else if(GetY(Lenth)==GetY(Lenth-1))
{
newnode->y=tail->y;
if(GetX(Lenth)>GetX(Lenth-1)) newnode->y=tail->y+1;
if(GetX(Lenth)>GetX(Lenth-1)) newnode->y=tail->y+1;
}
tail=newnode;
Lenth++;
}
void DRAGON::Init()
{
tail=first=NULL;
IsDead=FALSE;
Direction=4;
Lenth=6;
Width=15;
for(int i=0;i<Lenth;i++)
{
DRAGONNODE *newnode=new DRAGONNODE;
newnode->x=Width+Width*i;
newnode->y=Width;
newnode->rlink=first;
if(first!=NULL) first->llink=newnode;
first=newnode; if(newnode->rlink==NULL) tail=newnode;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -