實作了蛇的構成,以及蛇的上下左右操作。
後面還需要添加如:1.如何讓蛇吃食物。
2.如何讓蛇在沒有操作的情況下移動。
源代碼下。VC++6.0實作
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<conio.h>
using namespace std;
#define M 20
#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77
struct snake{
int x;
int y;
snake *next;
};
snake *head,*rear,*mid;
snake *dot;
int quyu[M][M]={0};
void build(){//初始化蛇
head=new snake;
head->x=10;
head->y=10;
mid=new snake;
mid->x=10;
mid->y=9;
rear=new snake;
rear->x=10;
rear->y=8;
head->next=mid;
mid->next=rear;
rear->next=0;
}
void printf(){//驗證
snake *temp;
temp=head;
cout<<"..............."<<endl;
// system("CLS");
while(temp){
cout<<temp->x<<'\t'<<temp->y<<endl;
temp=temp->next;
}
// cout<<rear->x<<'\t'<<rear->y<<endl;
}
void game(){//輸出
int i,j;
snake *temp;
temp=head;
while(temp){
quyu[temp->x][temp->y]=1;
temp=temp->next;
}
system("CLS");
for(i=0;i<M;i++){
for(j=0;j<M;j++){
if(quyu[i][j]==0)
cout<<" ";
if(quyu[i][j]==1&&!(i==rear->x&&j==rear->y))
cout<<"○";
if(i==rear->x&&j==rear->y)
cout<<"●";
}
cout<<endl;
}
temp=head;
while(temp){
quyu[temp->x][temp->y]=0;
temp=temp->next;
}
}
void chi(){//吃食物
mid=rear;
rear->next=dot;
rear=dot;
}
int control(char a){//控制
snake *o;
if(a==UP&&rear->x!=mid->x+1){
o=new snake;
o->x=rear->x-1;
o->y=rear->y;
o->next=0;
}
else
if(a==DOWN&&rear->x!=mid->x-1){
o=new snake;
o->x=rear->x+1;
o->y=rear->y;
o->next=0;
}
else
if(a==LEFT&&rear->y!=mid->y+1){
o=new snake;
o->x=rear->x;
o->y=rear->y-1;
o->next=0;
}
else
if(a==RIGHT&&rear->y!=mid->y-1){
o=new snake;
o->x=rear->x;
o->y=rear->y+1;
o->next=0;
}
else
return 1;
snake *temp;
temp=head;
head=temp->next;
delete temp;
mid=rear;
rear->next=o;
rear=o;
if(rear->x>=M||rear->y>=M||rear->x==-1||rear->y==-1)
return -1;
else
return 0;
}
void newdot(){//産生果實
snake *temp;
temp=head;
int xx,yy;
while(temp)
{
srand(time(0));
xx=rand()%M;
yy=rand()%M;
if(temp->x!=xx&&temp->y!=yy)
temp=temp->next;
}
dot=new snake;
dot->x=xx;
dot->y=yy;
dot->next=0;
}
void main(){
build();
// printf();
newdot();
// chi();
int a;
char key;
// printf();
// printf();
game();
while(1){
key=_getch();
a=control(key);
if(a==-1){
cout<<"您失敗了";
break;
}
else{
game();
}
}
}
blog.memomuse.com
2012.1.14