通过一学期对C语言的学习,我感觉学习C语言是有一定难度却又是非常有趣的科目。也是很有帮助的,特别是对将要面对的计算机二级考试。 这段时间的学习我知道了C语言的基本特点有以下几点:
1.语言简洁,使用灵活方便。
2.运算符丰富,表达能力强。
3.数计类型丰富。
4.目标程序质量高,具有面向硬件系统的特点。
5.具有结构化的控制语句和模块化的程序结构。
6.具有编译预处理功能。
7.程序设计自由度大,可移植性好。
这段时间学习使我掌握了:
一、 我学习了C语言的数据类型、常量与符号常量、变量、C语言的运算符和表达式、赋值运算符和赋值表达式、自增自减运算符以及逗号表达式等。
二、 这章介绍了结构化程序的三种基本结构、C语句概述、数据输出包括字符输出函数putchar()和格式输出函数printf()、数据输入包括字符输入函数getchar()和格式输入函数scanf(),还有一些简单的C语程序设计举列等。
前几天一直在看C++语法,所以对一些比较实际的例子总感到比较抽象,但是那也是一个必需阶段,可能大家和我的学习方式不一样,但从刚接触程序到现在来看,发现这样学习语言的方法挺不错的。
经过第一阶段对语法的学习,我觉得实例阶段应该是一个过渡阶段吧,通过前一阶段对语法的学习之后,可能有很多概念我们都比较模糊,或者说很多东西太抽象了,这就为我们第二个阶段的学习做好了实例化的准备,可以这样说吧,第一个阶段就我们为我们的学习一样东西而构建的一个类,里面讲了我们应该在这里面要做什么?第二阶,也就是本阶段,我们就应该去把前一段的东西具体化(实例化先前创建的类),那怎么个具体化呢,呵呵!说白了,去练习一些小例子,从网上下载的电子书上有很多这方面的例子的,如果有自己去书店买书的话,里面也应该提供了不少,里面的例子,我是每次都打了一遍,也许有的人不会亲自去用手打一遍,什么copy等,当然这样也行,但我个人认为,对于初学者来说,最好还是自己动手打一遍比较好,毕竟这些东西对我们来说,都比较陌生,如果每个字都自己打完的话,有些代码你不想记住也难了,在这里,我们得弄懂练习的每一个例子,如果能把一些例子稍稍修改,弄懂里面精髓的东西,让自己知道为什么这样做,那么是最好不过的了,我平时练习时,这一步是少不了的,都习惯了,所以也就成了条件反射,想不这样都不行。最后,我们就应该汇一下总,把前面做过的例子里所用的技术理一下,再做一个比较大的例子,尽量把到目前为止所懂的知识全部应用到里面去,只是尽量,当然有些东西是不能集成到一起的,也是是代码之间的排斥性。
这是个人的一点学习心得,希望能更好的运用到学习中去。C语言是一门很有用的、对于我们的就业很实际的语言,学习好C语言是一项必须而实际的任务。我们必须要好好掌握。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define N 35
void print(int [][N]);//输出函数
void movebul(int [][N]);//×××移动函数
void movepla(int [][N]);//敌机移动函数
void setting(void);//设置函数
void menu(void);//菜单函数
int scr[22][N]={0},pl=9,width=24,speed=2,density=50,score=0,death=0;//全局变量:界面、我机初始位、界面宽度、敌机速度、敌机密度、得分、死亡
main(void)
{
menu();
int i=0,j=0;
scr[21][pl]=1;
scr[0][5]=3;
while(1){if(kbhit())switch(getch())//控制左右移动和进入菜单
{case 'a':case 'A':if(pl>0)scr[21][pl]=0,scr[21][--pl]=1;break;
case 'd':case 'D':if(pl<width-2)scr[21][pl]=0,scr[21][++pl]=1;
break;
case 'w':case 'W':scr[20][pl]=2;break;case 27 :setting();
break;
}
if(++j%density==0)//控制生产敌机的速度
{j=0;srand(time(NULL));
scr[0][rand()%width]=3;
}
if(++i%speed==0)//控制敌机移动速度,相对于×××移动速度
movepla(scr);
movebul(scr);
print(scr);
if(i==30000)i=0;//以免i 越界
}
}
void print(int a[][N]){system("cls");
int i,j;
for(i=0;i<22;i++){a[i][width-1]=4;
for(j=0;j<width;j++){if(a[i][j]==0)printf(" ");
if(a[i][j]==1)printf("\5");//输出我机的符号
if(a[i][j]==2)printf(".");//×××
if(a[i][j]==3)printf("\3"); //输出敌机符号
if(a[i][j]==4)printf("|");
if(i==0&&j==width-1)printf("得分:%d",score);//右上角显示得分
if(i==1&&j==width-1)printf("死亡:%d",death);
if(i==2&&j==width-1)printf("设置:Esc");
if(i==3&&j==width-1)printf("Copyright:杜鑫达");
}
printf("\n");
}
}
void movebul(int a[][N]){int i,j;
for(i=0;i<22;i++)
for(j=0;j<width;j++)
{
if(i==0&&a[i][j]==2)a[i][j]=0;if(a[i][j]==2)
{
if(a[i-1][j]==3)score+=10,printf("\7");
a[i][j]=0,a[i-1][j]=2;
}
}
}
void movepla(int a[][N])
{
int i,j;
for(i=21;i>=0;i--)//从最后一行往上是为了避免把敌机直接冲出数组。
for(j=0;j<width;j++)
{
if(i==21&&a[i][j]==3)a[i][j]=0;//底行赋值0 以免越界。
if(a[i][j]==3)a[i][j]=0,a[i+1][j]=3;
}
if(a[20][pl]==3&&a[21][pl]==1)death++;
}
void setting(void)
{
int sw=0,i,j;
system("cls");
do{sw=0;printf("\n 游戏界面的大小:1.大2.小>> ");
switch(getche())
{
case '1':width=34;break;
case '2':width=24;break;
default:printf("\n 错误,请重新选择...\n");
sw=1;
}
}
while(sw);
do
{
sw=0;
printf("\n 请选择敌机密度:1.大2.中3.小>> ");
switch(getche())
{
case '0':density=10;
break;
case '1':density=20;
break;case '2':density=30;
break;case '3':density=40;break;
default:printf("\n 错误,请重新选择...\n");
sw=1;
}
}
while(sw);
do
{
sw=0;
printf("\n 敌机的飞行速度:1.快2.中3.慢>> ");
switch(getche())
{
case '1':speed=2;
break;
case '2':speed=3;
break;
case '3':speed=4;
break;
default:printf("\n 错误,请重新选择...\n");
sw=1;
}
}
while(sw);
for(i=0;i<22;i++)
for(j=0;j<45;j++)
scr[i][j]=0;
scr[21][pl=9]=1;
printf("\n 按任意键保存...");
getch();
}
void menu(void)
{
printf("说明:按A D 控制我机左右飞行,W 发射×××\n 设置:请按Esc\n 开始游戏:任意键\n by yan_xu");
if(getch()==27)setting();
}
飞机游戏中就用到了我们许多学到的知识 像if语句 switch语句 case语句 等等
而飞机游戏的结构很简单先设置函数 再设置变量 之后再设置输入变量 最后输出
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。