贪吃蛇游戏

模仿http://zhidao.baidu.com/link?url=73YIrvyI57-_a7ur1H2rK1xjdK8oeTnUu28z6bL0hD28HOaLeeRoEYCh3p2YRTrKM0NP20atWAdFhnOklpMGn_

#include<iostream>
#include<windows.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
using namespace std;

#define N 20
int wall[N+2][N+2]={{0}};
void gotoxy(int x,int y)
{
	COORD pos;
	pos.X=2*x;
	pos.Y =y;
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void setcolor(int a)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void init(int apple[2])
{
	int i,j;
	setcolor(15);
	for(i=0;i<N+2;i++){
		for(j=0;j<N+2;j++){
			if(i==0||i==N+1||j==0||j==N+1)
				cout<<"□";
			else {
				cout<<"■";
				wall[i][j]=1;
			}
		}
		cout<<endl;
	}
	gotoxy(N+3,1);
	setcolor(20);
	cout<<"按 W S A D移动"<<endl;
	gotoxy(N+3,2);
	cout<<"Score: "<<endl;
	apple[0]=rand()%N+1;
	apple[1]=rand()%N+1;
	gotoxy(apple[0],apple[1]);
	setcolor(11);
	cout<<"●"<<endl;
}
int main()
{
	int i,j;
	int ** snake=NULL;
	int apple[2];
	int score=0;
	int tail[2];
	char ch='p';
	int len=3;
	srand((unsigned)time(NULL));
	init(apple);
	snake=(int **)realloc(snake,sizeof(int*)*len);//申请动态内存
	for(i=0;i<len;i++)
		snake[i]=(int*)malloc(sizeof(int)*2);
	for(i=0;i<len;i++)
	{
		snake[i][0]=N/2;
		snake[i][1]=N/2+i;
		gotoxy(snake[i][0],snake[i][1]);
		setcolor(14);
		cout<<"★"<<endl;
	}
	while(1)
	{
		tail[0]=snake[len-1][0];
		tail[1]=snake[len-1][1];
		gotoxy(tail[0],tail[1]);
		setcolor(15);
		cout<<"■";
		for(i=len-1;i>0;i--)
		{
			snake[i][0]=snake[i-1][0];
			snake[i][1]=snake[i-1][1];
			gotoxy(snake[i][0],snake[i][1]);
			setcolor(14);
			cout<<"★"<<endl;
		}
		if(kbhit())
		{
			gotoxy(0,N+2);
			ch=getche();
		}
		switch(ch)
		{
		case 'w':snake[0][1]--;break;
		case 's':snake[0][1]++;break;;
		case 'a':snake[0][0]--;break;
		case 'd':snake[0][0]++;break;
		default :break;
		}
		gotoxy(snake[0][0],snake[0][1]);
		setcolor(14);
		cout<<"★"<<endl;
		Sleep(abs(200-0.5*score));
		if(snake[0][0]==apple[0]&&snake[0][1]==apple[1])
		{
			score++;
			len++;
			snake=(int **)realloc(snake,sizeof(int*)*len);
			snake[len-1]=(int *)malloc(sizeof(int*)*2);
			apple[0]=rand()%N+1;
			apple[1]=rand()%N+1;
			gotoxy(apple[0],apple[1]);
			setcolor(12);
			cout<<"●";
			gotoxy(N+3,5);
			setcolor(20);
			cout<<score<<endl;
		}
		if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)
		{
			for(i=0;i<len;i++)
				free(snake[i]);
			gotoxy(1,N+3);
			cout<<"failed!"<<endl;
			Sleep(INFINITE);
			exit(0);
		}
	}
	return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值