📄 worm.cpp
字号:
#include <iostream.h>
#include <stdlib.h>
#define MAX 50
#define MIN 1
#define LENGTH 20
class SnakeNode
{
public:
void Set(int x,int y);
public:
int xpos,ypos;
};
void SnakeNode::Set(int x,int y)
{
xpos=x;
ypos=y;
}
void InitList(SnakeNode *snake)
{
int i;
for(i=0;i<LENGTH;i++)
{
snake[i].Set(11+i,25);
}
}
void outresult(int pos,int flag)
{
switch(flag)
{
case 1:
cout<<"The worm successful made all "<<pos<<" moves ."<<endl;
break;
case 2:
cout<<"The worm ran into itself on move "<<pos<<" ."<<endl;
break;
case 3:
cout<<"The worm ran off the board on move "<<pos<<" ."<<endl;
break;
}
}
int main()
{
int i,j,flag;
int num;
char direction[100];
SnakeNode *snake;
snake=new SnakeNode[LENGTH-1];
flag=1;
while(cin>>num,num!=0)
{
cin>>direction;
InitList(snake);
for(i=1;i<=num;i++)
{
switch(direction[i-1])
{
case 'E':
{
for(j=0;j<LENGTH-1;j++)
{
snake[j].Set(snake[j+1].xpos,snake[j+1].ypos);
}
snake[LENGTH-1].xpos=snake[LENGTH-1].xpos+1;
snake[LENGTH-1].ypos=snake[LENGTH-1].ypos;
if(snake[LENGTH-1].xpos>MAX||snake[LENGTH-1].ypos>MAX||snake[LENGTH-1].xpos<MIN||snake[LENGTH-1].ypos<MIN)
{
flag=3;
outresult(i,flag);
goto End;
}
for(j=0;j<LENGTH-1;j++)
{
if(snake[j].xpos==snake[LENGTH-1].xpos&&snake[j].ypos==snake[LENGTH-1].ypos)
{
flag=2;
outresult(i,flag);
goto End;
}
}
break;
}
case 'S':
{
for(j=0;j<LENGTH-1;j++)
{
snake[j].Set(snake[j+1].xpos,snake[j+1].ypos);
}
snake[LENGTH-1].xpos=snake[LENGTH-1].xpos;
snake[LENGTH-1].ypos=snake[LENGTH-1].ypos+1;
if(snake[LENGTH-1].xpos>MAX||snake[LENGTH-1].ypos>MAX||snake[LENGTH-1].xpos<MIN||snake[LENGTH-1].ypos<MIN)
{
flag=3;
outresult(i,flag);
goto End;
}
for(j=0;j<LENGTH-1;j++)
{
if(snake[j].xpos==snake[LENGTH-1].xpos&&snake[j].ypos==snake[LENGTH-1].ypos)
{
flag=2;
outresult(i,flag);
goto End;
}
}
break;
}
case 'W':
{
for(j=0;j<LENGTH-1;j++)
{
snake[j].Set(snake[j+1].xpos,snake[j+1].ypos);
}
snake[LENGTH-1].xpos=snake[LENGTH-1].xpos-1;
snake[LENGTH-1].ypos=snake[LENGTH-1].ypos;
if(snake[LENGTH-1].xpos>MAX||snake[LENGTH-1].ypos>MAX||snake[LENGTH-1].xpos<MIN||snake[LENGTH-1].ypos<MIN)
{
flag=3;
outresult(i,flag);
goto End;
}
for(j=0;j<LENGTH-1;j++)
{
if(snake[j].xpos==snake[LENGTH-1].xpos&&snake[j].ypos==snake[LENGTH-1].ypos)
{
flag=2;
outresult(i,flag);
goto End;
}
}
break;
}
case 'N':
{
for(j=0;j<LENGTH-1;j++)
{
snake[j].Set(snake[j+1].xpos,snake[j+1].ypos);
}
snake[LENGTH-1].xpos=snake[LENGTH-1].xpos;
snake[LENGTH-1].ypos=snake[LENGTH-1].ypos-1;
if(snake[LENGTH-1].xpos>MAX||snake[LENGTH-1].ypos>MAX||snake[LENGTH-1].xpos<MIN||snake[LENGTH-1].ypos<MIN)
{
flag=3;
outresult(i,flag);
goto End;
}
for(j=0;j<LENGTH-1;j++)
{
if(snake[j].xpos==snake[LENGTH-1].xpos&&snake[j].ypos==snake[LENGTH-1].ypos)
{
flag=2;
outresult(i,flag);
goto End;
}
}
break;
}
}
}
outresult(num,flag);
End: ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -