1、预备知识
1.1 相关头文件
“#include”是c语言中用以申明所需调用的库函数或自定义函数的头文件路径及文件名。#include ""和#include <>存在区别,#include "" 当要调用某个函数时先在用户自已编写的文件中查找,如果找不到再到库文件里去找。而#include <> 是直接到库文件里去找,所以如果是调用自己写的函数的话就用#include ""这种形式,而调用标准库函数的话就用#include <> 这种形式,可以提高速度。
1.1.1 stdio.h
这个标准库的头文件定义了用于输入输出的宏和函数。从键盘上读取数据,将输入写入命令行上时,需要包含这个头文件。
1.1.2 stdlib.h
定义了许多一般用途的函数和宏。它包含将字符串转化为数值的函数,生成伪随机数的rand()函数,给数据动态分配和释放内存的函数,搜索和排序例程,整数算数函数,以及转换多字节和宽字节串的函数。
1.1.3 windows.h
系统头文件。
1.2 相关函数与结构
1.2.1 printf
1.2.2 循环结构
c语言有3种用于实现循环结构的语句,分别是for、while(先判断,后循环)和do-while(先循环,后判断)。使用格式如下:
(1)for循环
for(表达式1;表达式2;表达式3)
//表达式1为初值,表达式2为终止条件,表达式3为循环步长
{
//这里是循环体
}
(2)while循环
while(表达式) //表达式即终止循环的条件
{
//这里是循环体
}
(3)do-while循环
do
{
//这里是循环体
}while(表达式)
1.2.3 system("cls")
这是VC环境下的清屏方法,隶属stdlib头文件库,属于调用格式为:
#include
system("cls");
1.2.4 Sleep函数
功 能: 执行挂起一段时间
用 法: unsigned sleep(unsigned seconds);
注意:
在VC中使用带上头文件#include ,在Linux下,gcc编译器中,使用的头文件因gcc版本的不同而不同#include ;
在VC中,Sleep中的第一个英文字符为大写的"S" ,在linux下不要大写,在标准C中是sleep, 不要大写,简单的说VC用Sleep, 别的一律使用sleep;
在VC中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000); 在Linux下,sleep()里面的单位是秒,而不是毫秒。
2、程序构建
2.1 显示静止的小球
// 在坐标(x,y)处输出一个小球
#include
int main(void)
{
int i,j;
int x = ;
int y = ;
// 输出小球上面的空行
for(i=;i
printf("\n");
// 输出小球左边的空格
for (j=;j
printf(" ");
printf("o"); // 输出小球o
printf("\n");
}
2.2 通过改变小球坐标的变量,让小球下落
#include
#include
int main(void)
{
int i,j;
int x = ;
int y = ;
for (x=;x
{
system("cls"); // 清屏函数
// 输出小球上面的空行
for(i=;i
printf("\n");
// 输出小球左边的空格
for (j=;j
printf(" ");
printf("o"); // 输出小球o
printf("\n");
}
}
这里利用了一个清屏函数system("cls");,只需要加上头文件#include 即可。
2.3 实现小球的上下弹跳
在上面一步代码的基础上,增加记录速度的变量,小球的新位置=旧位置+速度。判断小球到达上下边界时,速度改变方向,即改变正负号。
#include
#include
void main()
{
int i,j;
int x = ;
int y = ;
int hight = ;
int velocity = ;
while ()
{
x=x+velocity;
system("cls"); // 清屏函数
// 输出小球前的空行
for(i=;i
printf("\n");
for (j=;j
printf(" ");
printf("o"); // 输出小球o
printf("\n");
//判断边界条件
if (x==hight)
velocity = -velocity;
if (x==)
{
velocity = -velocity;
}
}
}
2.4 实现小球斜跳
主要思路是增加x,y两个方向的速度控制变量,一个碰到上下边界后改变正负号,一个碰到左右边界后改变正负号。
#include
#include
void main()
{
int i,j;
int x = ;
int y = ;
int velocity_x = ;
int velocity_y = ;
int left = ;
int right = ;
int top = ;
int bottom = ;
while ()
{
x = x+velocity_x;
y = y+velocity_y;
system("cls"); // 清屏函数
// 输出小球前的空行
for(i=;i
printf("\n");
for (j=;j
printf(" ");
printf("o"); // 输出小球o
printf("\n");
//判断边界条件
if ((x==top)||(x==bottom))
velocity_x = -velocity_x;
if ((y==left)||(y==right))
velocity_y = -velocity_y;
}
}
大家尽量养成良好的编码习惯,上面的边界坐标尽量不要在程序中写数字,可以用定义的变量或常量。这样程序可读性更好,后面也更容易调整。
2.5 控制小球弹跳速度
介绍一个Sleep函数,可以让游戏中间等待,从而可以控制小球弹跳的速度。使用这个函数,需要#include。
#include
#include
#include
void main()
{
int i,j;
int x = ;
int y = ;
int velocity_x = ;
int velocity_y = ;
int left = ;
int right = ;
int top = ;
int bottom = ;
while ()
{
x = x + velocity_x;
y = y + velocity_y;
system("cls"); // 清屏函数
// 输出小球前的空行
for(i=;i
printf("\n");
for (j=;j
printf(" ");
printf("o"); // 输出小球o
printf("\n");
Sleep(); // 等待若干毫秒
if ((x==top)||(x==bottom))
velocity_x = -velocity_x;
if ((y==left)||(y==right))
velocity_y = -velocity_y;
}
}
3 参考文献
[1]陈萌.C语言编程思维[M].北京:清华大学出版社,2014.
[2]Ivor Horton.C语言入门经典[M].第5版.北京:清华大学出版社,2013.
linux下C语言多线程编程实例
用一个实例.来学习linux下C语言多线程编程实例. 代码目的:通过创建两个线程来实现对一个数的递加.代码: //包含的头文件 #include #include ...
PHP多进程编程实例
这篇文章主要介绍了PHP多进程编程实例,本文讲解的是在Linux下实现PHP多进程编程,需要的朋友可以参考下 羡慕火影忍者里鸣人的影分身么?没错,PHP程序是可以开动影分身的!想完成任务,又觉得一个进 ...
第二章 C语言编程实践
上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...
linux 操作系统下c语言编程入门
2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 ...
Python进阶:函数式编程实例(附代码)
Python进阶:函数式编程实例(附代码) 上篇文章"几个小例子告诉你, 一行Python代码能干哪些事 -- 知乎专栏"中用到了一些列表解析.生成器.map.filter.lam ...
The MySQL C API 编程实例
在网上找了一些MYSQL C API编程的文章,看了后认为还是写的不够充分,依据自己经验写了这篇,希望对须要调用到MYSQL的C的API的朋友有 ...
linux下socket编程实例
linux下socket编程实例一.基本socket函数Linux系统是通过提供套接字(socket)来进行网络编程的.网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符.s ...
Linux Kernel C语言编程范式
介绍 不同的编程语言具有不同的抽象原语(如下),有的原语抽象层次低,有的原语抽象层次高.其中函数式.DSL是这几年十分热门的编程语言概念. 过程式抽象原语:变量 对象式抽象原语:对象 函数式抽象原语: ...
shell及编程实例
1.shell简介 1) 概念--命令解释器 2) 常见shell bash linux标准shell sh 早期shell,较简单 csh ksh tcsh unix shell vi /etc ...
随机推荐
Android 2D Graphics学习 Region和Canvas裁剪
1.首先介绍Region类 Region,中文意思即区域的意思,它表示的是canvas图层上的某一块封闭的区域. /**构造方法*/ public Region() //创建一个空的区域 publi ...
poj1279 半平面交
题意:没看懂= = sol:在纸上随便画两下就可以看出,答案即按逆时针方向建立line,求它们的半平面交的面积. 模板题.注意输出答案时输出ans+eps,否则可能会出现结果为-0.00的情况. #i ...
PHP extract() 函数
PHP extract() 函数从数组中把变量导入到当前的符号表中. 对于数组中的每个元素,键名用于变量名,键值用于变量值. 第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时, ...
Jquery 常用总结
获取元素的宽度: 如果用$(ele).attr("width")获取的值不带px 如果用$(ele).css("width")获取的值带px //获 ...
对consistencygroup的一些研究和实践
声明: 本博客欢迎转载,但请保留原作者信息! 作者:李人可 团队:华为杭州OpenStack团队 consistency group,直译是一致性组,是Juno版本号cinder新引进的一个概念.顾名 ...
javascript 数字字母组合的随机数
Math.random()方法用于生成,结果为0-1间的一个伪随机数(包括0,不包括1) ,通常的办法是结合parseInt().Math.floor() 或者 Math.ceil()进行四舍五入处理 ...
qml 静态编译程序执行错误 无法定位程序输入点 CreateDXGIFactory2 于动态链接库 dxgi.dll 上
重新编译 qt 静态库即可,或 删除该动态库. -no-feature-d3d12 解决方案请参考如下网址: https://forum.qt.io/topic/78380/entry-point-n ...
JAVA_SE基础——56.包的创建
接下来我来给大家讲下--包 , 先看一段代码 class Demo1{ public static void main(String[] args) { System.out.println(&quo ...
[原创]K8Cscan插件之端口扫描C#源码
[原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...
关于A中用到B, B中用到A的问题
//A.h #ifndef AH #define AH class B; class A { public: B* b; void setB(); ~A(); }; #endif //B.h #ifn ...