今天老师布置了作业 让我们观察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. 电路交换vs分组交换

    电路交换 交换:动态分配传输线路资源. 须经过:建立连接 -> 通话 -> 释放连接. 特点:传输效率低(大部分时间空闲). 分组交换 位于网络边缘的主机&位于网络核心的路由器都是 ...

  2. Django 配置总结

    配置 app urls 项目下的urls.py from django.conf.urls import url,include urlpatterns = [ url(r'^BookApp/', i ...

  3. 合并单元格/VBA

    ' 合并某一列中相同数据的单元格 Sub MergeColumns() Dim rowN As Integer Dim i, j, m, n As Integer Dim col As Integer ...

  4. python selenium 问题汇总

    FAQ 1.python+selenium+Safari浏览器,定位元素 selenium.common.exceptions.ElementNotVisibleException: Message: ...

  5. Jmeter接口压测

    对于各个组件的使用,建议参考官方文档 1. Jmeter参数化,从txt文件读取. 1.txt

  6. solr之~模糊查询

    有的时候,我们一开始不可能准确地知道搜索的关键字在 Solr 中查询出的结果是什么,因此,Solr 还提供了几种类型的模糊查询.模糊匹配会在索引中对关键字进行非精确匹配.例如,有的人可能想要搜索某个前 ...

  7. 管道(pipe),进程之间的共享内存(Manager,Value)

    1 管道(了解) from multiprocessing import Pipe con1,con2 = Pipe() 管道是不安全的. 管道是用于多进程之间通信的一种方式. 如果在单进程中使用管道 ...

  8. Redis-基本数据类型与内部存储结构

    1-概览 Redis是典型的Key-Value类型数据库,Key为字符类型,Value的类型常用的为五种类型:String.Hash .List . Set . Ordered Set 2- Redi ...

  9. Github入门 - Github基本使用及Github桌面版使用

    知识内容: 1.版本控制 2.Git介绍 3.Github介绍及基本使用 4.Github桌面版介绍及安装 5.Github桌面版基础使用 6.Github桌面版进阶使用 参考: http://www ...

  10. Coxph model Pvalue Select2

    4   1) Put summary(coxphobject) into a variable summcph <- summary(coxphobject) 2) examine it wit ...