该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include

#include

using namespace std;

// 刷新当前屏幕

inline void Refresh(char q[][22], int grade, int gamespeed){

system("cls"); // 清屏

int i,j;

cout << endl;

for(i=0;i<22;i++){

cout << "\t";

for(j=0;j<22;j++)

cout<

if(i==0) cout << "\t等级为:" << grade;

if(i==4) cout << "\t自动前进时间";

if(i==6) cout << "\t间隔为:" << gamespeed << "ms";

cout<

}

}

int main(){

char tcsQipan[22][22]; // 贪吃蛇棋盘是一个二维数组(如22*22,包括墙壁)

int i,j;

for(i=1;i<=20;i++)

for(j=1;j<=20;j++)

tcsQipan[i][j]=' '; // 初始化贪吃蛇棋盘中间空白部分

for(i=0;i<=21;i++)

tcsQipan[0][i] = tcsQipan[21][i] = '-'; //初始化贪吃蛇棋盘上下墙壁

for(i=1;i<=20;i++)

tcsQipan[i][0] = tcsQipan[i][21] = '|'; //初始化贪吃蛇棋盘左右墙壁

int tcsZuobiao[2][100]; //蛇的坐标数组

for(i=0; i<4; i++){

tcsZuobiao[0][i] = 1;

tcsZuobiao[1][i] = i + 1;

}

int head = 3,tail = 0;

for(i=1;i<=3;i++)

tcsQipan[1][i]='*'; //蛇身

tcsQipan[1][4]='#'; //蛇头

int x1, y1; // 随机出米

srand(time(0));

do{

x1=rand()%20+1;

y1=rand()%20+1;

}while(tcsQipan[x1][y1]!=' ');

tcsQipan[x1][y1]='*';

cout<

long start;

int grade = 1, length = 4;

int gamespeed = 500; //前进时间间隔

for(i=3;i>=0;i--){

start=clock();

while(clock()-start<=1000);

system("cls");

if(i>0)

cout << "\n\n\t\t进入倒计时:" << i << endl;

else

Refresh(tcsQipan,grade,gamespeed);

}

int timeover;

char direction = 77; // 初始情况下,向右运动

int x,y;

while(1){

timeover = 1;

start = clock();

while((timeover=(clock()-start<=gamespeed))&&!kbhit());

//如果有键按下或时间超过自动前进时间间隔则终止循环

if(timeover){

getch();direction = getch();

}

switch(direction){

case 72: x= tcsZuobiao[0][head]-1; y= tcsZuobiao[1][head];break; // 向上

case 80: x= tcsZuobiao[0][head]+1; y= tcsZuobiao[1][head];break; // 向下

case 75: x= tcsZuobiao[0][head]; y= tcsZuobiao[1][head]-1;break; // 向左

case 77: x= tcsZuobiao[0][head]; y= tcsZuobiao[1][head]+1; // 向右

}

if(!(direction==72||direction==80||direction==75 ||direction==77)){ // 按键非方向键

cout << "\tGame over!" << endl;return 0;

}

if(x==0 || x==21 ||y==0 || y==21){ // 碰到墙壁

cout << "\tGame over!" << endl;return 0;

}

if(tcsQipan[x][y]!=' '&&!(x==x1&&y==y1)){ // 蛇头碰到蛇身

cout << "\tGame over!" << endl;return 0;

}

if(x==x1 && y==y1){ // 吃米,长度加1

length ++;

if(length>=8){

length -= 8;

grade ++;

if(gamespeed>=200)

gamespeed = 550 - grade * 50; // 改变自动前进时间间隔

}

tcsQipan[x][y]= '#';

tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]] = '*';

head = (head+1)%100;

tcsZuobiao[0][head] = x;

tcsZuobiao[1][head] = y;

do

{

x1=rand()%20+1;

y1=rand()%20+1;

}while(tcsQipan[x1][y1]!=' ');

tcsQipan[x1][y1]='*';

Refresh(tcsQipan,grade,gamespeed);

}

else{ // 不吃米

tcsQipan [tcsZuobiao[0][tail]][tcsZuobiao[1][tail]]=' ';

tail=(tail+1)%100;

tcsQipan [tcsZuobiao[0][head]][tcsZuobiao[1][head]]='*';

head=(head+1)%100;

tcsZuobiao[0][head]=x;

tcsZuobiao[1][head]=y;

tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]]='#';

Refresh(tcsQipan,grade,gamespeed);

}

}

return 0;

}

C语言贪吃蛇如何让蛇一直前进,c++贪吃蛇代码中,哪条代码是让蛇知道前进的相关推荐

  1. c语言调用c 方法,C语言代码中调用C++代码的方法示例

    由于历史原因,以及不同开发人员的技术偏好,C语言和C++语言都有一些独有的非常有价值的项目,因而两种语言的互操作,充分利用前人造的轮子是一件非常有价值的事情. C++代码调用C代码很简单,只要分别在包 ...

  2. Golang cgo:如何在Go代码中调用C语言代码?

    如何在Go代码中调用C语言代码? Go语言是通过自带的一个叫CGO的工具来支持C语言函数调用,同时我们可以用Go语言导出C动态库接口给其它语言使用. 方式一.直接在 Go 代码中写入 C 代码 检查是 ...

  3. C语言贪吃蛇课程设计实验报告(包含贪吃蛇项目源码)

    文末有贪吃蛇代码全览,代码有十分细致的注释!!! 文末有贪吃蛇代码全览,代码有十分细致的注释!!! 文末有贪吃蛇代码全览,代码有十分细致的注释!!! 码文不易,给个免费的小星星和免费的赞吧,关注也行呀 ...

  4. c语言mfc写贪吃蛇,手把手教你用MFC编写贪吃蛇.doc

    手把手教你用MFC编写贪吃蛇 贪吃蛇是一款经典的小游戏,它玩法非常简单,对于MFC的初学者来说,也是一个非常好的练手项目.这篇文章,将从项目创建开始来一步一步教你如何制作一个贪吃蛇小游戏.我用的是vi ...

  5. c语言程序的英式棋盘,使用棋盘法的贪吃蛇代码

    使用棋盘法的贪吃蛇代码 在我此前发了一篇对其他人的贪吃蛇C代码的分析和注释,在那个代码中的算法主要是用一个线性表存储蛇的所有身体节点的位置.然后随着游戏进行,需要把相应的蛇身节点依次平移一次(把数组里 ...

  6. python贪吃蛇_如何用Python写一个贪吃蛇?

    阅读文本大概需要 5 分钟 作者:Hawstein http://hawstein.com/2013/04/15/snake-ai/ 前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游 ...

  7. bat贪吃蛇游戏代码_100行python代码,轻松完成贪吃蛇小游戏

    来源:DataGo数据狗   链接: https://mp.weixin.qq.com/s/fDcr1SfcbynLzHye7Q7VOg 大家小时候都玩过贪吃蛇吧?小编小时候可喜欢拿爸妈的手机玩了,厉 ...

  8. python贪吃蛇毕业设计_【干货|python项目实例——贪吃蛇】- 环球网校

    [摘要]当今世界充满了各种数据,而python是其中一种的重要组成部分.然而,若想其有所应用,我们需要对这些python理论进行实践.其中包含很多有趣的的过程,然后将其用于某些方面.其中一种应用就是p ...

  9. java多线程贪吃蛇实验报告_JAVA开放性实验报告贪吃蛇

    JAVA开放性实验报告贪吃蛇 JAVA程序设计 开放性实验报告 专 业: 计算机科学与技术 班 级: 2012级2班 学 号: 姓 名: 实验2贪吃蛇游戏设计(4学时) 1.实验内容 (1) 创建软件 ...

最新文章

  1. 数学家的亿万商业王国:先后创建“验证码”和“多邻国”,20岁就被盖茨亲自挖去微软!...
  2. STM32的SPI时钟
  3. ALEIDoc EDI(2)--一般流程
  4. linux 企业数据,Linux企业数据标准出炉 IBM惠普等数巨头加盟
  5. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(二)让物体动起来②
  6. java打印条形码Code128C
  7. linux 系统管理员面试,经典linux系统工程师系统管理员面试题
  8. [转载] log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析
  9. CorelDRAWX4的VBA插件开发(二十二)选择路径创建文件和移动文件
  10. Qt安装配置及连接MySQL
  11. 性能测试实战(一):性能测试入门
  12. 关于Hyper-V设置了本地桥接网络后 宿主机网络变慢的问题
  13. 中兴java笔试题_中兴Java 笔试题.doc
  14. Canvas绘制抽奖转盘
  15. 基于 STM32对音频数据的 Flash 读取与 DAC 播放
  16. FPGA知识查漏补缺——为什么setup summary和hold suammay的data path延时不一致
  17. Code Clinic: R 代码诊所:R语言 Lynda课程中文字幕
  18. DevC++ 报错[Error] Id returned 1 exit status
  19. 阿里热修复集成,sophix加载本地补丁包
  20. 组态王图素制作_组态王教程——很实用(杂项)

热门文章

  1. 如何判断当前UI component是运行在IC还是non-IC环境下
  2. Java反射机制在UI自动化测试中的一个应用
  3. 使用nodejs将某个简书用户的文章进行导出
  4. 你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧
  5. 一个前端开发人员多年苦心搜集的Chrome开发者工具使用技巧
  6. SAP CRM Product ACE check调试
  7. 如何证明CRM WebClient UI上的应用是有状态(Stateful)的
  8. Mybatis快速入门的代码实现及报错处理解决org.apache.ibatis.exceptions.PersistenceException
  9. linux编译ffmpeg_[Cmake-Android音视频]ffmpeg3.4编译支持neon,硬解码
  10. java工程师_Java开发工程师需要掌握哪些技能?