[Asm] 纯文本查看 复制代码#include
#include
#include
#include
#include
using namespace std;
int eat_food = 0;
float score = 0;
short int grade = 0;
short int timeout = 700;
int step = 0;
short int derect=77;//上下左右 asc
class SNAKE
{
short int x;
short int y;
SNAKE* Qian;
SNAKE* Hou;
public:
SNAKE(){x = 0; y = 0; Qian = NULL; Hou = NULL;}
SNAKE(int a, int b){x = a; y =b; Qian = NULL; Hou = NULL;}
void change(int a ,int b){if(a!=-1)x = a; if(b!=-1)y = b;}
short int getx(){return x;}
short int gety(){return y;}
SNAKE* qian(){return Qian;}
SNAKE* qian(SNAKE* a){Qian=a;return Qian;}
SNAKE* hou(){return Hou;}
SNAKE* hou(SNAKE* a){Hou=a;return Hou;}
};
class FOOD
{
public:
short int x;
short int y;
};
FOOD food;
SNAKE* end;//尾巴地址
SNAKE* head;///头地址
bool move(int,int,short int **);
bool randfood(int, int , short int &,short int &,short int **);
int main()
{
cout << "\n\t贪吃蛇\n\n\n\t\t Powered by xxxxxxx(差点忘了删)";
short int i,j, a, b;
cout<
cin>>a; cin.sync(); cin.clear();
cout<
cin>>b; cin.sync(); cin.clear();
a+=2;b+=2;
short int **point;
point = new short int* [a]; //-1 墙 0 空 1 身子 2 食物 3头
for(i=0; i
point[i]=new short int[b];
for(i = 1; i < a-1; ++i)
for(j = 1; j < b-1; ++j)
point[i][j] = 0;
for(i = 0; i < a; ++i)
point[i][b-1]=point[i][0]=-1;
for(i = 0; i < b; ++i)
point[0][i]=point[a-1][i]=-1;
cout << " 游戏马上开始,请按任意键继续\n PS:可随时以cmd选择模式暂停\n\n";
system("pause");
end = new SNAKE;
SNAKE* save_end = end;
for(i = 1; i < (a-2)*(b-2); ++i)
{
head = new SNAKE;
end -> qian(head);
head -> hou(end);
end = head;
}
head -> qian(save_end);
save_end -> hou(head);
head=head->qian();/形成a*b的环状双向链表,已验证
end->change(a/2, b/2-1);
head->change(a/2, b/2);
point[a/2][b/2-1]=1;
point[a/2][b/2]=3;
randfood(a, b, food.x,food.y,point);
while(move(a,b,point));///传值边界含外框
for(i=0;i