
所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误。好了,这本书我也不想说太多了,有兴趣大家可以百度一下:)Kernighan和Ritchie的《TheCProgrammingLanguage》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《CReferenceManual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《PointersonC》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《CTrapsandPitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《ExpertCProgramming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。Unix/Linux还是Windows,这是个很大的问题不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如VisualStudio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的VisutalC++工具栏按钮就可以开始写Hello,World!了,而在Unix下,你需要一些控制台 *** 作的基本知识。有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows的基本 *** 作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。对于一个只懂得Windows基本 *** 作、连DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习ls、cat等命令有趣,况且我们要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等等等等。所以我建议初学者应该以VisualC++60(不是VisualC++NET)或者DevC++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。VisualC++60使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而DevC++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用TurboC20作为实验环境,这是相当不可取的,原因其一是TC20对C标准几乎没有支持,其二是TC20编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC20编译出32位程序,不过那过于复杂了)。等你学完一本C语言的教材,你一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的(比如《C专家编程》)。转变的过程是痛苦的,你需要面对的是各种纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这种痛苦是值得的。Unix与C是共生的,Unix的思考方式和习惯更加符合C语言的思考方式和习惯。在Unix下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格归结起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平台。书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。学习C语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本上有的例子,自己还要“创造”一些例子,比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如p++和(p)++,又比如a=b==c、(a=b)==c和a=(b==c)等等。自己抄的书上的例子以及改造之后的例子,还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富。以我自己举例,阅读《Windows核心编程》时(我只阅读了3/4的内容),除了抄书上的代码,还自己写了很多例子,一共有5574行(用unix下的wc工具统计),时隔多日,我早已记不清Windows的系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通的技术,如果不是学习C语言,你还要具体情况具体分析。
#include<reg52h>
#include<intrinsh>
//#include<mathh>
#include<stdlibh>
#include<lcd12864h>
sbit up = P1^0; //上
sbit down = P1^1; //下
sbit left = P1^2; //左
sbit right = P1^3; //右
sbit restart = P1^4; //功能键
#define snake_max_body 22
#define Key_Up 1
#define Key_Down 4
#define Key_Left 2
#define Key_Right 3
uchar Key_V_temp=0; //上次按键值
uchar Key_Value;
const uchar code failure[]={"很遗憾,你输了"};
const uchar code maker[]={"设计者:机协成员"};
const uchar code huiz[]={"会长:方吉桐"};
const uchar code guanggao[]={"机器人协会欢迎你"};
const uchar code t[]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xF7,0xFF,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xCF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xF7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x0E,0xE0,0x00,0x07,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFE,0xFF,0xFF,0xF7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE0,0x0F,0xC0,0x0E,0xFF,0xFF,0xE7,0x00,0x00,0x00,0x7F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x7F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFD,0xE1,0xF1,0xF8,0xFF,0x9F,0xFF,0x7F,0xF8,0x00,0xFD,0xFB,0xFF,0x8F,0xFF,
0xFF,0xFD,0xED,0xF5,0xBA,0xFF,0xBF,0xFF,0xBF,0xFB,0xDE,0xFD,0xF3,0xFF,0x77,0xFF,
0xFF,0xE0,0x2D,0xF1,0xA8,0xFF,0x1F,0xF8,0x00,0xF8,0x00,0xF0,0x40,0xFE,0xFB,0xFF,
0xFF,0xF8,0xED,0xFF,0xB7,0xFF,0x1F,0xFB,0xFF,0xFB,0xDE,0xFD,0xF6,0xF9,0x04,0xFF,
0xFF,0xF5,0x6D,0xFC,0x03,0xFE,0x4F,0xFA,0x4E,0xF8,0x00,0xFD,0x36,0x7F,0xFF,0xFF,
0xFF,0xED,0xAD,0xFF,0x9F,0xFC,0xE7,0xFB,0x6E,0xFB,0xDE,0xFD,0x6E,0xBC,0x00,0xFF,
0xFF,0xFD,0xED,0xF1,0x28,0xF9,0xF3,0xFB,0x6C,0xFB,0xDE,0xFC,0xDE,0xBF,0x7F,0xFF,
0xFF,0xFD,0xDD,0x74,0x62,0xF3,0xF9,0xFB,0xFF,0xFB,0xDA,0xFD,0xBE,0xFE,0xFB,0xFF,
0xFF,0xFD,0xBE,0x71,0xF8,0xE7,0xFC,0xF2,0x00,0xF7,0xDC,0xFD,0x7C,0xFC,0x01,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
//const uchar zhi[]={
//0xFF,0xF3,0x85,0xE8,0xCC,0xED,0x8D,0xEF};
struct //结构体:食物
{
uchar X;
uchar Y;
uchar Yes;
}Food;
struct //结构体:小蛇
{
uchar X[snake_max_body]; //蛇的X坐标
uchar Y[snake_max_body]; //蛇的Y坐标
uchar Log; //蛇的长度
uchar Life; //蛇的生命
uchar Score; //蛇的分数
uchar Level; //蛇的等级
}Snake;
void Init_time1() //定时器初始化,用来产生随机数
{
EA=1;
ET1=1;
TMOD|=0X20;
TH1=0X01;
TL1=0X01;
TR1=1;
}
void snake_init() //贪吃蛇初始化场地
{
uchar i;
line(0,0,0,80);
line(0,80,50,80);
line(50,80,50,0);
line(50,0,0,0);
SnakeLog=2; //定义初始化蛇的长度
SnakeLife=0;
SnakeScore=0;
// FoodYes=1;
Key_Value=0;
for(i=0;i<SnakeLog;i++) //将蛇给赋值
{
SnakeX[i]=i+2;
SnakeY[i]=2;
}
for(i=0;i<SnakeLog;i++) //将蛇给画出来
{
dot(SnakeX[i],SnakeY[i]);
}
}
key_press() //按键检测
{
// uchar key;
up=1;
if(!up)
{
delay_ms(5);
if(!up)
{
Key_Value=1;
}
while(!up);
}
down=1;
if(!down)
{
delay_ms(5);
if(!down)
{
Key_Value=4;
}
while(!down);
}
left=1;
if(!left)
{
delay_ms(5);
if(!left)
{
Key_Value=2;
}
while(!left);
}
right=1;
if(!right)
{
delay_ms(5);
if(!right)
{
Key_Value=3;
}
while(!up);
}
// return Key_Value;
}
void Run_snake(void) //蛇移动
{
uchar i=0;
if((Key_Value==Key_Right&&Key_V_temp!=Key_Left)||(Key_Value==Key_Left&&Key_V_temp==Key_Right))
{
offdot(SnakeX[0],SnakeY[0]); //先把蛇尾给熄灭掉
for(i=0;i<SnakeLog-1;i++) //蛇身都是它前一段的蛇身的位置
{
SnakeX[i]=SnakeX[i+1];
SnakeY[i]=SnakeY[i+1];
}
SnakeX[SnakeLog-1]=SnakeX[SnakeLog-2]+0;
SnakeY[SnakeLog-1]=SnakeY[SnakeLog-2]+1; //蛇头向要求的方向移动
for(i=0;i<SnakeLog;i++) //蛇显示函数
{
dot(SnakeX[i],SnakeY[i]);
}
Key_V_temp=Key_Right; //保存现在的值,以便下次按下时使用
}
if((Key_Value==Key_Left&&Key_V_temp!=Key_Right)||(Key_Value==Key_Right&&Key_V_temp==Key_Left))
{
offdot(SnakeX[0],SnakeY[0]);
for(i=0;i<SnakeLog-1;i++)
{
SnakeX[i]=SnakeX[i+1];
SnakeY[i]=SnakeY[i+1];
}
SnakeX[SnakeLog-1]=SnakeX[SnakeLog-2]+0;
SnakeY[SnakeLog-1]=SnakeY[SnakeLog-2]-1;
for(i=0;i<SnakeLog;i++)
{
dot(SnakeX[i],SnakeY[i]);
}
Key_V_temp=Key_Left;
}
if(( Key_Value==Key_Up&&Key_V_temp!=Key_Down)||( Key_Value==Key_Down&&Key_V_temp==Key_Up))
{
offdot(SnakeX[0],SnakeY[0]);
for(i=0;i<SnakeLog-1;i++)
{
SnakeX[i]=SnakeX[i+1];
SnakeY[i]=SnakeY[i+1];
}
SnakeX[SnakeLog-1]=SnakeX[SnakeLog-2]-1;
SnakeY[SnakeLog-1]=SnakeY[SnakeLog-2]+0;
for(i=0;i<SnakeLog;i++)
{
dot(SnakeX[i],SnakeY[i]);
}
Key_V_temp=Key_Up;
}
if(( Key_Value==Key_Down&&Key_V_temp!=Key_Up)||( Key_Value==Key_Up&&Key_V_temp==Key_Down))
{
offdot(SnakeX[0],SnakeY[0]);
for(i=0;i<SnakeLog-1;i++)
{
SnakeX[i]=SnakeX[i+1];
SnakeY[i]=SnakeY[i+1];
}
SnakeX[SnakeLog-1]=SnakeX[SnakeLog-2]+1;
SnakeY[SnakeLog-1]=SnakeY[SnakeLog-2]+0;
for(i=0;i<SnakeLog;i++)
{
dot(SnakeX[i],SnakeY[i]);
}
Key_V_temp=Key_Down;
}
if((SnakeX[SnakeLog-1]>=50)||(SnakeY[SnakeLog-1]>=80)||(SnakeX[SnakeLog-1]==0)||(SnakeY[SnakeLog-1]==0))//判蛇头是否撞到墙壁
{
SnakeLife=1;
}
for(i=3;i<SnakeLog;i++) //从第三节开始判断蛇头是否咬到自己
{
if((SnakeX[i]==SnakeX[0])&&(SnakeY[i]==SnakeY[0]))
{
SnakeLife=1;
}
}
/ if(SnakeLife==1)
{
i=Key_Value;
// Display_dead( i);
// clear();
write_comd(0x34);
}/
/ if(SnakeLog==snake_max_body) //判断蛇是否最长了
{
//i=Key_Value;
write_comd(0x34);
// clear();
write_comd(0x30);
// Display_Pass(i);
}/
if(SnakeX[SnakeLog-1]==FoodX&&SnakeY[SnakeLog-1]==FoodY)//判蛇是否吃到食物
{
SnakeLog++; //蛇节数加1
SnakeX[SnakeLog-1]=FoodX;
SnakeY[SnakeLog-1]=FoodY;
SnakeScore++;
FoodYes=1; //食物标志置1
}
if(FoodYes==0) //放果子程序
{
dot(FoodX,FoodY);
}
if(FoodYes==1)
{
while(1)
{
FoodX=TL1/5; //获得随机数
FoodY=TL1/4;
for(i=0;i<SnakeLog;i++) //判断产生的食物坐标是否和蛇身重合
{
if((FoodX==SnakeX[i])&&(FoodX==SnakeY[i]))
break;
}
if(i==SnakeLog)
{
FoodYes=0;
break; //产生有效的食物坐标
}
}
}
}
void main()
{
lcd_init(); //初始化LCD
Init_time1();
clear();
_nop_();_nop_();_nop_();
map(t);
delay_ms(1400);
clear();
snake_init();
// snake_food();
FoodX=TL1/5;
FoodY=TL1/4;
dot(FoodX,FoodY);
// dot(TL1&49,TL1&79);
// dot(TL1&49,TL1&79);
while(1)
{
if(SnakeLife)
{
// clear();
write_comd(0x34);
write_comd(0x30);
delay_ms(100);
display(0x80,7,failure);
display(0x90,8,maker);
display(0x88,6,huiz);
display(0x98,8,guanggao);
}
else
{
key_press();
Run_snake();
write_comd(0x36);
}
if(SnakeScore<15)
delay_ms(150-10SnakeScore);
else
delay_ms(5);
}
}
void a(int aa)
{for(int i=0;i<aa;i++)printf(" ");}
void b()
{printf ("");}
char c(int cc)
{printf("%c",cc);return 0;}
int main()
{a(6);b();a(3);b();a(5);b();a(3);b();
printf ("\n");
a(4);b();a(8);b();a(8);b();
printf ("\n");
a(3);b();a(19);b();
printf ("\n");
a(3);b();a(4);c(73);a(1);c(76);c(111);c(118);
c(101);a(1);c(89);c(111);c(117);a(5);b();
printf ("\n");
a(4);b();a(17);b();
printf ("\n");
a(6);b();a(13);b();
printf ("\n");
a(8);b();a(9);b();
printf ("\n");
a(10);b();a(5);b();
printf ("\n");
a(13);b();
printf ("\n");return 0;
}
效果如下:
延展阅读:
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
以上就是关于有哪些c语言的小项目适合新手练习的,几百到几千行的那种全部的内容,包括:有哪些c语言的小项目适合新手练习的,几百到几千行的那种、跪求一个用C语言写的小程序,答辩用!!!!!!#!@###!!!、求一个示爱的小程序 C语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)