c++实现贪食蛇
今天老师布置了作业 让我们观察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++实现贪食蛇的更多相关文章
- Javascript贪食蛇小游戏
试玩:http://hovertree.com/game/9/ 贪吃蛇是一种风靡全球的小游戏,就是一条小蛇,不停地在屏幕上游走,吃各个方向出现的蛋,越吃越长.只要蛇头碰到屏幕四周,或者碰到自己的身子, ...
- 一起来做webgame,《Javascript贪食蛇》
2019-09-22更新: 使用canvas实现:https://github.com/onlyfu/SnakeSir-Javascript 以下为HTML4实现: 今天来个略有意思的,<贪食蛇 ...
- canvas游戏之贪食蛇
直接上效果图: 这个贪食蛇关键地方在于数组,它的长度增加其实是数组的增长,就是数组的向前追加等操作,核心就是数组的操作. 完整代码: <!DOCTYPE html> <html> ...
- JavaScript强化教程 - 六步实现贪食蛇
1.首先创建div 并且给div加样式 <div id="pannel" style="width: 500px;height: 500px;z-index: 1; ...
- OS X下开发!ios系统贪食蛇!——from cocos2d-x 3.0
前几天用cocos2d-x写了个贪食蛇!这次是全然在osx下开发的.基本的思路是这种我建立了一个Snake类,当中有两个构造函数一个是用于存放蛇身体sprite的图片和Snake的X坐标和Y坐标.另外 ...
- 【原创】只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(四)
全系列Index: [原创]只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(一) [原创]只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(二) [原创]只学到二维数组和结构体,不用链表也能 ...
- Cocos2dx 3.0 过渡篇(二十五)死不了的贪食蛇(触摸版)
上一篇写的贪食蛇的重力感应控制版,这一篇就讲下触摸控制版吧.额,也不知道写了那个贪食蛇教程究竟有没有获得沈老师的书,假设没有的话,看我不拿西瓜刀砍掉 偶尔E往事 的那啥! 重力版链接:http://b ...
- JavaScript贪食蛇游戏制作详解
之前闲时开发过一个简单的网页版贪食蛇游戏程序,现在把程序的实现思路写下来,供有兴趣同学参考阅读. 代码的实现比较简单,整个程序由三个类,一组常量和一些游戏逻辑以外的初始化和控制代码组成,总共400多行 ...
- js贪食蛇
<!DOCTYPE html><head><title>canvas贪食蛇</title><style>.canvas{ backgr ...
随机推荐
- 出现“安全时间戳无效,因为其创建时间(“2013-10-30T14:42:07.861Z”)是将来的时间。当前时间为“2013-10-30T14:36:23.988Z”,允许的时钟偏差是“00:05:00””的原因
具体原因是服务器的时间和本地的时间不能超过5分钟,超过5分钟了.只要修改你本地机器的时间,和服务器相差的时间不能超过5分钟,就可以了. 根本原因是windows 系统域认证要求的,所有都一样.
- Mysql 性能优化1 硬件设备的选择
--------------------------------------------目录------------------------------------------------- • 我们 ...
- 无需公众号PHP微信登录微信授权微信第三方登录微信开发php开发
无论是个人还是公司,无需申请公众号,无需申请微信开放平台,即可实现手机网站和PC网站的微 信登录!!! 正常的微信登录是这样的: 1.手机版网站做微信登录,需要申请一个认证公众号,认证不仅需要公司营 ...
- 基于Hadoop开发网络云盘系统架构设计方案第一稿
引言 云计算技术的发展,各种网络云盘技术如雨后春笋,层出不穷,百度.新浪.网易都推出了自己的云盘系统,本文基于开源框架Hadoop设计实现了一套自己的网络云盘系统,方案为初步设计方案,不断完善中. 一 ...
- 通过textarea标签解决ClipboardJS在iphone复制失败问题
前段时间做了微信自定义分享的功能,分享出的页面存在邀请码在ios手机上复制失败的问题,然而在PC端和安卓机上是没有问题的.百度了一下,基本给出的解决方案是:ios不单纯支持on,为点击的元素添加空点击 ...
- fiddler script建议教程
http://www.fiddlerbook.com/Fiddler/dev/ScriptSamples.asp
- [UE4]动态数组:TArray容器
为什么使用UE4提供的容器类? 如果你用过C++的STL库,你就知道STL提供了各种各样的容器/数据结构,使得你对处理很多数据的时候非常快捷高效.UE4同样也提供了类似的库,库里面的类型是以T开头的, ...
- 解决不能正常访问workerman的问题
问题描述: 在阿里云ECS上部署了workerman的应用(ECS是专有网络),在ECS安全组里已经允许workerman需要的全部端口,但是外网一直不能正常打开(注,其他服务,比80端口外部是可以用 ...
- CSS3 盒阴影(box-shadow)详解
CSS3 的 box-shadow 有点类似于 text-shadow,只不过不同的是 text-shadow 是对象的文本设置阴影,而 box-shadow 是给对象实现图层阴影效果.本文我们搁下I ...
- 基于Linux的Samba开源共享解决方案测试(六)
在极限读场景下,对于客户端的网络监控如图: 在极限写场景下,对于NAS1网关的网络监控如图: 在极限写场景下,对于NAS2网关的网络监控如图: 在极限写场景下,对于客户端的网络监控如图: 在极限混合读 ...