#include<iostream>
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>
using namespace std;
const int N=21;
void Get_xy(int x,int y)   //定位光标位置
{HANDLE hout;COORD pos;pos.X=x*2;pos.Y=y;hout=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(hout,pos);
}void Color(int num)   //设置颜色
{HANDLE hout;hout=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hout,num);
}void Initial()   //初始化
{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;}Get_xy(N+3,1); Color(20);cout<<"按'W','S','A','D'进行操作"<<endl;Get_xy(N+3,2); Color(20);cout<<"按任意键暂停"<<endl;Get_xy(N+3,3); Color(20);cout<<"得分:"<<endl;
}void game()
{int** snake=NULL;int len=1;int i;int score=0;int apple[2];int tail[2];char ch='p';Initial();srand((unsigned)time(NULL));apple[0]=rand()%N+1;apple[1]=rand()%N+1;Get_xy(apple[0],apple[1]);Color(12);cout<<"●"<<endl;snake=(int**)realloc(snake,sizeof(int*)*len);for(i=0;i<len;i++)snake[i]=(int*)malloc(sizeof(int)*2);snake[0][0]=N/2;snake[0][1]=N/2+1;Get_xy(snake[0][0],snake[0][1]); Color(14);cout<<"⊙"<<endl;int flag=1;while(1){if(flag){tail[0]=snake[len-1][0];tail[1]=snake[len-1][1];Get_xy(tail[0],tail[1]);Color(11);cout<<"■"<<endl;}flag=1;for(i=len-1;i>0;i--){snake[i][0]=snake[i-1][0];snake[i][1]=snake[i-1][1];Get_xy(snake[i][0],snake[i][1]);Color(14);cout<<"★"<<endl;}if(kbhit()){Get_xy(0,N+3);ch=getche();}switch(ch){case 'W':case 'w': snake[0][1]--; break;case 'S':case 's': snake[0][1]++; break;case 'A':case 'a': snake[0][0]--; break;case 'D':case 'd': snake[0][0]++; break;default :break;}for(i=1;i<len;i++){if(snake[0][0]==snake[i][0] && snake[0][1]==snake[i][1]){Get_xy(N/2,N/2); Color(30);cout<<"Game over!"<<endl;exit(0);}}Get_xy(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]){flag=0; score++; len++;   srand((unsigned)time(NULL));snake=(int**)realloc(snake,sizeof(int*)*len);snake[len-1]=(int*)malloc(sizeof(int)*2);Get_xy(N+6,3); Color(20); cout<<score<<endl;apple[0]=rand()%N+1; apple[1]=rand()%N+1;Get_xy(apple[0],apple[1]);Color(12);cout<<"●"<<endl;}if(snake[0][0]==0 || snake[0][0]==N || snake[0][1]==0 || snake[0][1]==N){Get_xy(N/2,N/2); Color(30);cout<<"Game Over!"<<endl;for(i=0;i<len;i++)free(snake[i]);Sleep(INFINITE);exit(0);}if(len>=N*N/20){Get_xy(N/2,N/2); Color(30);cout<<"Win!"<<endl;for(i=0;i<len;i++)free(snake[i]);Sleep(INFINITE);exit(0);}}
}
int main()
{game();return 0;
}

C++ 之 贪吃蛇相关推荐

  1. 用html编写一个贪吃蛇,HTML编写的贪吃蛇代码

    <HTML编写的贪吃蛇代码>由会员分享,可在线阅读,更多相关<HTML编写的贪吃蛇代码(14页珍藏版)>请在人人文库网上搜索. 1.使用表格 var fangxiang;fan ...

  2. 结队-结队编程项目贪吃蛇-项目进度

    导入pygame 目前已经实现贪吃蛇游戏的场景绘制,舞台的尺寸 redColour = pygame.Color(255,0,0) blackColour = pygame.Color(0,0,0) ...

  3. 贪吃蛇计时器怎么编写java_java编写简易贪吃蛇游戏

    本文实例为大家分享了java编写的贪吃蛇源码,供大家参考,具体内容如下 程序共包含以下两个文件: 文件:ShellWin.java import java.awt.Color; import java ...

  4. Java项目:贪吃蛇游戏(java+swing)

    源码获取:博客首页 "资源" 里下载! 功能简介: 贪吃蛇游戏 大嘴鱼洁面类.完成大嘴鱼的界面的绘制: /*** 大嘴鱼洁面类.完成大嘴鱼的界面的绘制.*/ public clas ...

  5. JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇

    作者:雷神 QQ:38929568 QQ群:28048051JAVA游戏编程(满) 28047782(将满) 与前一款扫雷比较,这个游戏多了一个 类,用来显示动画,也是蛇要吃的物品类, 也有了代码包, ...

  6. 是男人就下100层【第四层】——Crazy贪吃蛇(2)

    在上一篇<是男人就下100层[第四层]--Crazy贪吃蛇(1)>中我们让贪吃蛇移动了起来,接下来我们来实现让贪吃蛇能够绕着手机屏幕边线移动而且能够改变方向 一.加入状态并改动代码 首先我 ...

  7. 100行代码,使用 Pygame 制作一个贪吃蛇小游戏!

    作者 | 周萝卜 来源 | 萝卜大杂烩 相信我们大家都玩过贪吃蛇游戏,今天我们就从头一起来写一个贪吃蛇小游戏,只需要100多行的代码就完成了. 用到的 Pygame 函数 贪吃蛇小游戏用到的函数 功能 ...

  8. 用c语言编一个贪吃蛇,刚学C语言,想写一个贪吃蛇的代码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #include typedef struct snake { int a; int b; stru ...

  9. 【python教程入门学习】Python实现自动玩贪吃蛇程序

    这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...

  10. Python实现贪吃蛇小游戏(双人模式)

    这篇文章主要为大家详细介绍了Python实现双人模式的贪吃蛇小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 简单用py写了一个贪吃蛇游戏,有单人.双人模式,比较简 ...

最新文章

  1. 从今天开始收集一些经典的算法。
  2. 网狐棋牌(四) TimerEngine
  3. dojo使用query dojo/query
  4. 【Power Automate】如何自动生成Word与PDF文件[上]
  5. matlab与ie交互
  6. 音频源代码_使用开放源代码从丢失的格式中恢复音频
  7. git push git pull 推送/拉取分支
  8. Linux系统启动过程分析
  9. 如何快速的复习学习过的Python
  10. 人体呼吸感应雷达技术,智能雷达传感器,智能化感知雷达应用
  11. 网络工程师/技术支持工程师面试题(1)
  12. ionic refresher(下拉刷新)
  13. ubuntu 18.04/16.04/14.04 双硬盘分区方案
  14. Oracle查询列重命名问题
  15. Sklearn上机笔记--标准化
  16. 苹果手机没有备份怎么恢复照片?
  17. 【科普向】从gtx480的落败到并行计算再到SIMD,MIMD,SIMT
  18. 2018年最流行的十大编程语言,有你用的吗?
  19. STM32F10x_模拟I2C读写EEPROM(2)(切换SDA方向 + 读ACK位 + 完整代码)
  20. 巴纳姆效应心理 学对号入座 营销中惯用的营销心理学

热门文章

  1. 早期的增长黑客 PayPal 如何在2000年初达到每日7%到10%的营收成长?
  2. 图解+笔记-python语言-第5章:数字/5.3 内置数字工具/5.3.2 内置数学函数
  3. 快速解决正则----模糊匹配、字符类、量词
  4. Android利用canvas画各种图形
  5. centos平台openstack spice配置
  6. ie8下ewebeditor无效的解决办法
  7. 防范SQL指令植入式***
  8. 优化问题中的两个挑战是?
  9. formal method lecture 13
  10. vs2010 ATL创建windows服务程序