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=2*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void color(int a)//颜色函数
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void init(int apple[2])//初始化函数(初始化围墙、显示信息、苹果)
{
int i,j;//初始化围墙
int wall[N+2][N+2]={{0}};
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
wall[i][j]=1;
}
color(11);
for(i=0;i<N+2;i++)
{
for(j=0;j<N+2;j++)
{
if(wall[i][j])
cout<<"■";
else cout<<"□" ;
}
cout<<endl;
}
gotoxy(N+3,1);//显示信息
color(20);
cout<<"按 W S A D 移动方向"<<endl;
gotoxy(N+3,2);
color(20);
cout<<"按任意键暂停"<<endl;
gotoxy(N+3,3);
color(20);
cout<<"得分:"<<endl;
apple[0]=rand()%N+1;//苹果
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
cout<<"●"<<endl;
}
int main()
{
int i,j;
int** snake=NULL;
int apple[2];
int score=0;
int tail[2];
int len=3;
char ch=‘p‘;
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]);
color(14);
cout<<"★"<<endl;
}
while(1)//进入消息循环
{
tail[0]=snake[len-1][0];
tail[1]=snake[len-1][1];
gotoxy(tail[0],tail[1]);
color(11);
cout<<"■"<<endl;
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]);
color(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]);
color(14);
cout<<"★"<<endl;
Sleep(abs(200-0.5*score));
if(snake[0][0]==apple[0]&&snake[0][1]==apple[1])//吃掉苹果后蛇分数加1,蛇长加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]);
color(12);
cout<<"●"<<endl;
gotoxy(N+5,3);
color(20);
cout<<score<<endl;
}
if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)//撞到围墙后失败
{
gotoxy(N/2,N/2);
color(30);
cout<<"失败!!!"<<endl;
for(i=0;i<len;i++)
free(snake[i]);
Sleep(INFINITE);
exit(0);
}
}
return 0;
} 

代码运行截图:

时间: 2024-10-13 21:58:56

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

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

本文为H5EDU机构官方的HTML5培训教程,主要介绍贪食蛇JavaScript强化教程 1.首先创建div 并且给div加样式 <div id="pannel" style="width: 500px;height: 500px;z-index: 1;opacity: 0.5"></div> 给 <style...> 地图(div和表格).所有的块(蛇头,食物身体加样式) 2.创建地图     document.write(&q

js贪食蛇

<!DOCTYPE html><head><title>canvas贪食蛇</title><style>.canvas{    background:black;}</style></head><body><canvas class="canvas" id="canvas" width='400' height='400'></canvas><

canvas游戏之贪食蛇

直接上效果图: 这个贪食蛇关键地方在于数组,它的长度增加其实是数组的增长,就是数组的向前追加等操作,核心就是数组的操作. 完整代码: <!DOCTYPE html> <html> <body> <canvas id="myCanvas" width="240" height="240" style="border:1px solid #d3d3d3;"> Your browser

websocket实战(4) websocket版贪食蛇游戏(tomcat官方自带)

websocket实战(1) 入门 websocket实战(2) 信息处理发送.接收和编码 websocket实战(3) 错误处理及配置管理 通过前面3篇的阐述,相信可以构建一个简单的socket应用了.当然,也会遗漏了许多知识点,相信会在以后分享的实例中捎带说明下. 本文的主要是分析下tomcat官方自带的贪食蛇游戏.为什么选择分析这个项目呢. 贪食蛇游戏规则,人人明白,业务方面不需要过多解释(当然这款websocket版的游戏规则也有一定特色). 游戏设计简单,一个对象足以完成游戏,但不涉及

Javascript贪食蛇小游戏

试玩:http://hovertree.com/game/9/ 贪吃蛇是一种风靡全球的小游戏,就是一条小蛇,不停地在屏幕上游走,吃各个方向出现的蛋,越吃越长.只要蛇头碰到屏幕四周,或者碰到自己的身子,小蛇就立即毙命.和别的游戏不同,贪食蛇是一个悲剧性的游戏.许多电子游戏都是打通关到底,游戏操作者以胜利而告终.而贪食蛇的结局却是死亡.“贪食蛇”,要命的就在一个“贪”字上.所以,有时候真的需要及时收手,不要逼人太甚.如果没有余地,就算你的手再快,面临的结局也是——崩盘. HTML代码如下: <!DO

8086汇编双人贪食蛇游戏

突然找到4年前自己写的纯8086汇编语言双人贪食蛇游戏,绝对原创代码纯手打.分享给有需要参考的童鞋! Download : http://download.csdn.net/detail/yarkey09/7415405 源码:game1205.asm 可运行文件:GAME1205.EXE ( Windows XP 32bit 环境下测试成功 ) 字库文件:HZK24 位图图片:256.bmp 主要涉及以下几大难点: 1,8086汇编语言语法 2,BIOS/DOS系统中断功能调用 3,中断向量表

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

前几天用cocos2d-x写了个贪食蛇!这次是全然在osx下开发的.基本的思路是这种我建立了一个Snake类,当中有两个构造函数一个是用于存放蛇身体sprite的图片和Snake的X坐标和Y坐标.另外一个是用于存放蛇头的sprite图片和Snake的X坐标和Y坐标dir方向,还有snake的生命.再在helloword类中建立一个容器 vector<Snake *> snake; 在helloword中的init中先建立蛇头和两节蛇身体而且添?到snake中 Snake *_head_1= n

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

上一篇写的贪食蛇的重力感应控制版,这一篇就讲下触摸控制版吧.额,也不知道写了那个贪食蛇教程究竟有没有获得沈老师的书,假设没有的话,看我不拿西瓜刀砍掉 偶尔E往事 的那啥! 重力版链接:http://blog.csdn.net/start530/article/details/23707985 触摸版与重力版的代码大部分都一样,不一样的地方就是要将打开重力感应换成创建一个触摸监听.步骤例如以下: 1.在GameLayer的init()中创建一个触摸监听事件 [cpp] view plaincopy

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

先扯几句闲话 往往非科班出身的编程爱好者,以C作为入门语言时,往往会问:“我学了这个XX,能做些什么?” 其实,配合Google,基本上啥都能做了. 你甚至连链表都不需要,就可以写一个贪食蛇小游戏 :) 本系列将分4个部分,让任何一个仅仅会二维数组合结构体的初学者写出自己的贪食蛇 进入正题.我们先分析一下问题,确定下四个部分. 0.分析游戏的本质以及在控制台中的表现形式 1.分析贪食蛇游戏的基本结构 2.确定实现方案 3.全部源代码 一.游戏,或者视频游戏的本质是什么? 0.游戏的本质是程序 对