2 qq 30456327 qq_30456327 于 2016.03.03 07:55 提问

求大神给我详细讲解下面的c++贪吃蛇程序
c++

#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      cout   for(j=0;j    cout         if(i==0) cout         if(i==4) cout         if(i==6) cout   cout  }
}
int main(){
    char tcsQipan[22][22];     //  贪吃蛇棋盘是一个二维数组(如22*22,包括墙壁)
    int i,j;
    for(i=1;i         for(j=1;j             tcsQipan[i][j]=' ';     //     初始化贪吃蛇棋盘中间空白部分
    for(i=0;i         tcsQipan[0][i] = tcsQipan[21][i] = '-';      //初始化贪吃蛇棋盘上下墙壁
    for(i=1;i         tcsQipan[i][0] = tcsQipan[i][21] = '|';      //初始化贪吃蛇棋盘左右墙壁
    int tcsZuobiao[2][100];     //蛇的坐标数组
    for(i=0; i         tcsZuobiao[0][i] = 1;
        tcsZuobiao[1][i] = i + 1;
    }
    int head = 3,tail = 0;
    for(i=1;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

1个回答

lovingning
lovingning   2016.03.03 10:27

简单说是这样的:
首先显示界面,定义一个数组或指针链表ss来存储蛇的本身坐标,再定义一个变量der来记录蛇前进方向。
游戏开始后需要监听键盘操作,如果是方向键则更改der的值。
同时启动一个线程,该线程每隔一个固定时间(假如200毫秒)就执行一段代码,该代码会根据der的值来改变ss的内容,然后通知系统根据ss刷新界面。

这样基本操作就完成了,还剩下的就是如何根据der改变ss,其实很简单,保持ss第一个元素和倒数第二个元素之间不变,若下一步不会撞墙,吃到东西,或咬到自身,就根据方向der来判断下一步蛇头位置,然后添加到ss第一个元素,再去除最后一个元素。其他情况另行考虑

pp74875
pp74875 请问下int tcsZuobiao[2][100]; //蛇的坐标数组 for (i = 0; i<4; i++){ tcsZuobiao[0][i] = 1; tcsZuobiao[1][i] = i + 1; }这段中蛇的坐标为什么是2,100呢,循环里面又是要干嘛呢……菜鸟,谢谢
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MIBAO求破解
这是一个密报,密码忘掉了,求大神破解下。
用c语言编写贪吃蛇程序
本程序为贪吃蛇游戏,想必大家都玩过这个游戏,程序源代码用TC2.0编译通过,需要图形驱动文件的支持,在TC2.0的集成环境中有. 本程序利用数据结构中的链表,来将蛇身连接,同时当蛇吃到一定数目的东西时会自动升级,及移动速度会加快,程序会时刻将一些信息显示在屏幕上,包括所得分数,要吃多少东西才能升级,并且游戏者可以自己手动选择游戏级别,级别越高,蛇的移动速度越快. 另外,此游戏可能与CPU的速度有关系.
能不能通俗的讲解下傅立叶分析和小波分析之间的关系?
作者:咚懂咚懂咚 链接:https://www.zhihu.com/question/22864189/answer/40772083 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 从傅里叶变换到小波变换,并不是一个完全抽象的东西,可以讲得很形象。小波变换有着明确的物理意义,如果我们从它的提出时所面对的问题看起,可以整理出非常清晰的思路。 下面
C语言基础(新手)---贪吃蛇代码参考交流~~~
本人小白,欢迎逛楼大佬指导和交流。现阶段只在15pb学习C语言(c++),所以代码都是C语言(注释也是比较多.....)。写贪吃蛇的时候还不熟悉c++的类的部分,也没有分装文件,所以直接就是按C语言的意思直接写上// snake.cpp : 定义控制台应用程序的入口点。 // #include &quot;stdafx.h&quot; #include &amp;lt;iostream&amp;gt; #include &amp;lt;w...
C语言的贪吃蛇,注释很详细,结构明显
自制贪吃蛇,也是我的起步项目,注释十分详细,整个程序结构思路明显
小白入门——“贪吃蛇”的C语言实现(详细)
C语言实现,编译环境VS2017效果图如下(有一些函数kbhit,getch,在这表示为_kbhit与_getch)o(* ̄▽ ̄*)o一、引言    作为一个小白,相信大家的心情都是一样的,渴望写一个人生的第一个“贪吃蛇”。    在网上看了基本思路后,如果有一定的知识(链表的相关操作),写出这个应该是不难的。    1、背景        打印游戏背景框,以及一些初设的东西,如蛇的初始长度,可以...
2017-03-11 贪吃蛇
Description身长为L的贪吃蛇在一个有障碍的N*M的格子中游走,问最少用多少步才能让贪吃蛇的蛇头到达(1,1)。Input第一行三个正整数 N, M,L。L表示贪吃蛇的长度。 接下来 L 行,顺序描述贪吃蛇每节身体的位置。每行两个正整数 X,Y。 表示某节身体的位置,按蛇头到蛇尾的顺序描述。 接下来一个正整数K。 表示有 K个障碍,每个障碍占一个格子。 接下来K行, 每行两个正整数 X
C语言彩色版贪吃蛇——图形界面Easyx的简单使用
大一上大概12月份学完了C语言,基本语法与知识已经基本具备,可以用C语言写出基本的贪吃蛇游戏,但是基础C语言的可视化与交互功能实在是太弱了,为了写出有色彩的游戏,需要在网上安装一个Easyx的插件,具体Easyx如何使用参见https://zhuanlan.zhihu.com/p/24826034点击打开链接 然后编程软件我用的是VS 2017(因为Dev C++不支持Easyx) VS安装入口
队列的使用—WIN32控制台贪吃蛇(VS2010,C++语言)
VS2010平台C++开发的基于数组实现的贪吃蛇小程序
用C/C++实现较完整贪吃蛇游戏
记得在大一时刚学习c/c++语言,学到一半突然想用这门语言做一些小游戏出来,首先想到的便是贪吃蛇。于是本人利用空余时间写出了这么一个简单的小游戏。 由于当时的我还没有能力构造出用户界面,故直接使用dos界面运行。那么问题来了,如何让一个字符在dos界面上自由移动???对于这个问题我采用的解决方案是实现gotoxy函数来控制指针位置从而实现字符的移动。那么我们就先来实现这个函数。 gotoxy