今天老师布置了作业 让我们观察c++实现贪食蛇的代码

#include<windows.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#define N 21
#include<iostream>
using namespace std;
void gotoxy(int x,int y)//位置函数
{
COORD pos;
pos.X=*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void color(int a)//颜色函数
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void init(int apple[])//初始化函数(初始化围墙、显示信息、苹果)
{
int i,j;//初始化围墙
int wall[N+][N+]={{}};
for(i=;i<=N;i++)
{
for(j=;j<=N;j++)
wall[i][j]=;
}
color();
for(i=;i<N+;i++)
{
for(j=;j<N+;j++)
{
if(wall[i][j])
cout<<"■";
else cout<<"□" ;
}
cout<<endl;
}
gotoxy(N+,);//显示信息
color();
cout<<"按 W S A D 移动方向"<<endl;
gotoxy(N+,);
color();
cout<<"按任意键暂停"<<endl;
gotoxy(N+,);
color();
cout<<"得分:"<<endl;
apple[]=rand()%N+;//苹果
apple[]=rand()%N+;
gotoxy(apple[],apple[]);
color();
cout<<"●"<<endl;
}
int main()
{
int i,j;
int** snake=NULL;
int apple[];
int score=;
int tail[];
int len=;
char ch='p';
srand((unsigned)time(NULL));
init(apple);
snake=(int**)realloc(snake,sizeof(int*)*len);
for(i=;i<len;i++)
snake[i]=(int*)malloc(sizeof(int)*);
for(i=;i<len;i++)
{
snake[i][]=N/;
snake[i][]=N/+i;
gotoxy(snake[i][],snake[i][]);
color();
cout<<"★"<<endl;
}
while()//进入消息循环
{
tail[]=snake[len-][];
tail[]=snake[len-][];
gotoxy(tail[],tail[]);
color();
cout<<"■"<<endl;
for(i=len-;i>;i--)
{
snake[i][]=snake[i-][];
snake[i][]=snake[i-][];
gotoxy(snake[i][],snake[i][]);
color();
cout<<"★"<<endl;
}
if(kbhit())
{
gotoxy(,N+);
ch=getche();
}
switch(ch)
{
case 'w':snake[][]--;break;
case 's':snake[][]++;break;
case 'a':snake[][]--;break;
case 'd':snake[][]++;break;
default: break;
}
gotoxy(snake[][],snake[][]);
color();
cout<<"★"<<endl;
Sleep(abs(-0.5*score));
if(snake[][]==apple[]&&snake[][]==apple[])//吃掉苹果后蛇分数加1,蛇长加1
{
score++;
len++;
snake=(int**)realloc(snake,sizeof(int*)*len);
snake[len-]=(int*)malloc(sizeof(int)*);
apple[]=rand()%N+;
apple[]=rand()%N+;
gotoxy(apple[],apple[]);
color();
cout<<"●"<<endl;
gotoxy(N+,);
color();
cout<<score<<endl;
}
if(snake[][]==||snake[][]==N||snake[][]==||snake[][]==N)//撞到围墙后失败
{
gotoxy(N/,N/);
color();
cout<<"失败!!!"<<endl;
for(i=;i<len;i++)
free(snake[i]);
Sleep(INFINITE);
exit();
}
}
return ;
}

代码运行截图:

c++实现贪食蛇的更多相关文章

  1. Javascript贪食蛇小游戏

    试玩:http://hovertree.com/game/9/ 贪吃蛇是一种风靡全球的小游戏,就是一条小蛇,不停地在屏幕上游走,吃各个方向出现的蛋,越吃越长.只要蛇头碰到屏幕四周,或者碰到自己的身子, ...

  2. 一起来做webgame,《Javascript贪食蛇》

    2019-09-22更新: 使用canvas实现:https://github.com/onlyfu/SnakeSir-Javascript 以下为HTML4实现: 今天来个略有意思的,<贪食蛇 ...

  3. canvas游戏之贪食蛇

    直接上效果图: 这个贪食蛇关键地方在于数组,它的长度增加其实是数组的增长,就是数组的向前追加等操作,核心就是数组的操作. 完整代码: <!DOCTYPE html> <html> ...

  4. JavaScript强化教程 - 六步实现贪食蛇

    1.首先创建div 并且给div加样式 <div id="pannel" style="width: 500px;height: 500px;z-index: 1; ...

  5. OS X下开发!ios系统贪食蛇!——from cocos2d-x 3.0

    前几天用cocos2d-x写了个贪食蛇!这次是全然在osx下开发的.基本的思路是这种我建立了一个Snake类,当中有两个构造函数一个是用于存放蛇身体sprite的图片和Snake的X坐标和Y坐标.另外 ...

  6. 【原创】只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(四)

    全系列Index: [原创]只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(一) [原创]只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(二) [原创]只学到二维数组和结构体,不用链表也能 ...

  7. Cocos2dx 3.0 过渡篇(二十五)死不了的贪食蛇(触摸版)

    上一篇写的贪食蛇的重力感应控制版,这一篇就讲下触摸控制版吧.额,也不知道写了那个贪食蛇教程究竟有没有获得沈老师的书,假设没有的话,看我不拿西瓜刀砍掉 偶尔E往事 的那啥! 重力版链接:http://b ...

  8. JavaScript贪食蛇游戏制作详解

    之前闲时开发过一个简单的网页版贪食蛇游戏程序,现在把程序的实现思路写下来,供有兴趣同学参考阅读. 代码的实现比较简单,整个程序由三个类,一组常量和一些游戏逻辑以外的初始化和控制代码组成,总共400多行 ...

  9. js贪食蛇

    <!DOCTYPE html><head><title>canvas贪食蛇</title><style>.canvas{    backgr ...

随机推荐

  1. DBLinq (MySQL exactly) Linq To MySql

    http://blog.csdn.net/feihu_guest/article/details/7346948 DBLinq (MySQL exactly) Linq To MySql http:/ ...

  2. 如何在MFC DLL中向C#类发送消息

    如何在MFC DLL中向C#类发送消息 一. 引言 由于Windows Message才是Windows平台的通用数据流通格式,故在跨语言传输数据时,Message是一个不错的选择,本文档将描述如何在 ...

  3. Ionic slides 轮播图

    1. 创建界面 <ion-content> <ion-slides pager class="myslides"> <ion-slide> &l ...

  4. 【python】重定向输出

    重定向的理解:就是把所要输出的结果输出到其他的地方.常用方法:"print >>",(若有其他方法后续补充) 举个例子: __author__ = 'paulwinfl ...

  5. android datepicker monthOfYear getMonth(): 获取当前月(注意:返回数值为0..11,需要自己+1来显示).....

    关键点: 1. getMonth():     获取当前月(注意:返回数值为0..11,需要自己+1来显示) 2. 初始年(译者注:注意使用new Date()初始化年时,需要+1900,如下:dat ...

  6. springMVC学习(11)-json数据交互和RESTful支持

    一.json数据交互: json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservice接口,传输json数据. springMVC进行json交 ...

  7. 1038 Recover the Smallest Number (30 分)

    1038 Recover the Smallest Number (30 分) Given a collection of number segments, you are supposed to r ...

  8. Linux下不同颜色文件的类型

    蓝色表示目录: 绿色表示可执行文件: 红色表示压缩文件: 浅蓝色表示链接文件:主要是使用ln命令建立的文件 灰色表示其它文件: 红色闪烁表示链接的文件有问题了: 黄色是设备文件,包括block, ch ...

  9. TSubobjectPtr和C++传统指针的区别

    转自:http://aigo.iteye.com/blog/2282142 主要有以下区别(1和2的前提条件要满足:指针所在的class必须是UObjcct的子类): 1,TSubobjectPtr指 ...

  10. AWR实战分析之---- PX Deq Credit: send blkd (转载)

    该等待事件我在前面分析过,但是这次和上次产生的原因有些不一样,上次该等待事件的详细分析链接是:http://blog.sina.com.cn/s/blog_61cd89f60102eeen.html  ...