⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 worm.cpp

📁 一个小型的贪吃蛇程序
💻 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 + -