2 pp74875 pp74875 于 2016.03.03 16:11 提问

菜鸟求大神帮忙解答贪食蛇问题
c++

以下的这段贪食蛇代码是我在百度上看到的,我不理解int tcsZuobiao[2][100]; //蛇的坐标数组for (i = 0; i tcsZuobiao[0][i] = 1;
tcsZuobiao[1][i] = i + 1;
}这里为什么蛇的坐标是[2][100]呢,还有循环里面的也不懂为什么要这样弄
#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]; 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;
}

1个回答

devmiao
devmiao   Ds   Rxr 2016.03.06 08:59
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
ELM——HOG
代码有问题 出现内存访问错误 求大神帮忙修改
从前端菜鸟到大神,一篇总结得很好的文章
从前端菜鸟到大神                                                                                                                                                         转载自:https://github.com/qiu-deqing/FE
C++ 程序设计例题解答完整版
C++ 程序设计例题解答完整版 菜鸟到大神
菜鸟到大神的上位历程,即学即用走向人生巅峰(大神学习经验)
结合个人经历总结的前端入门方法,总结从零基础到具备前端基本技能的道路、学习方法、资料。由于能力有限,不能保证面面俱到,只是作为入门参考,面向初学者,让初学者少走弯路。     互联网的快速发展和激烈竞争,用户体验成为一个重要的关注点,导致专业前端工程师成为热门职业,各大公司对前端工程师的需求量都很大,要求也越来越高,优秀的前端工程师更是稀缺。个人感觉前端入门相对容易,但是也需要系统地认
fifo to uart
VHDL 带fifo的uart 源代码,求大神帮忙修改。
新浪漫步者6.1
感觉很不好的一个软件 求更好的 有没有大神帮忙!
java从菜鸟到大神的成神之路学习路线_me
JAVA从菜鸟到大神的学习路线
从前端菜鸟到大神
联网的快速发展和激烈竞争,用户体验成为一个重要的关注点,导致专业前端工程师成为热门职业,各大公司对前端工程师的需求量都很大,要求也越来越高,优秀的前端工程师更是稀缺。个人感觉前端入门相对容易,但是也需要系统地认真学习,在打好基础后坚持学习,成为优秀前端工程师也只是时间问题。 学习任何知识最重要的都是兴趣,如果经过一段时间的学习感觉不喜欢,那可能强迫自己学习是很痛苦的,效果也不会好,毕竟这很可
问题求大神解答
求大神解答,还在加班
oracle菜鸟到大神之路
从http://www.eygle.com/archives/2008/10/oracle_dba_study_road.html抄过来的,如果作者您老人家不高兴了,跟我说哈,我会删除的 开始学习oracle啦,嘿嘿~ 经常有DBA朋友们向我咨询,如果打算进入DBA这一行,应该怎样入门,或者可以通过怎样一个路线图来进行学习。 关于这个主题,其实网络上已经有了一些内容可