要编写一个好的游戏,必需使用到并行机制。并行机制要涉及到一个重要的语句,那就是While语句。你可能不禁会问:那不就是循环吗?对,并行机制就是要利用循环,即游戏循环(Game Loop)。实际上,所有程序并行的本质就是循环,连Windows也不例外。Windows号称多任务操作系统,

实际上,在一个时间内CPU只能执行一条指令。所谓多任务,不过是并行的假象而已。在一个循环中分别执行各程序的一条语句,由于执行完该循环速度极快,于

是看起来好象是多个任务同时工作一样。还有……,哎,不用费口舌了。相信你对并行有了一个初步应像,这就可以了,让我们继续。

不是有一种for循环吗,为什么不用它呢?对,for循环也可以。只要可以构成死循环的语句都可以。死循环呀,听起来有点可怕。其实解决死循环简单的很,用break语句,再不行用goto语句,一切死循环都轻松搞定。现在就让我们来练一下兵:

main()

{ int key;

while(1)

{if(kbhit())

{key=getch();

if(key==0){getch();continue;}

if(key==27)break;

if(key==13)printf("\n");/*支持回车*/

if(key==8&&wherex()>0)

{gotoxy(wherex()-1,wherey());/*支持退格*/

putch(' ');

}

printf("%c",key);/*输出字符*/

}

}

}

上面就是一个典型的文本编辑器界面,现在让我们来修改一下该程序,在屏幕右上角做一个计时器和一个计算击键次数的计数器,该计时器与计数器与文本编辑互不干扰,达到并行的效果。

main()

{ int key,x,y,n=0;

clrscr();

while(1)

{if(kbhit())

{key=getch();

if(key==0){getch();continue;}

if(key==27)break;

if(key==13)printf("\n");/*支持回车*/

if(key==8&&wherex()>0)

{gotoxy(wherex()-1,wherey());/*支持退格*/

putch(' ');

gotoxy(wherex()-1,wherey());

continue;

}

printf("%c",key);/*输出字符*/

n++;/*计数*/

}

x=wherex();y=wherey();

gotoxy(55,1);

printf(" %d sec,keydown times %d ",clock()/18,n);/*记时,显示*/

gotoxy(x,y);

}

}

现在我们实现了简单的并行机制。然而,该循环有个缺点:太耗CPU,如果不按下任何键,CPU也会不停地刷新计数与记时器。于是我们引入了周期的概念,使一个周期只执行一次语句,这样即节省CPU,使用要求执行速度不同的并行语句也容易控制。程序入下:

/*并行结构*/

#define delay_time 4; /*定义的周期长度*/

main()

{ long now_time=0,old_time,time_count=0;

char done=0; /*使用done标志使每一个周期只执行一次指令*/

clrscr();

old_time=clock();

while(!kbhit())

{now_time=clock();

if(now_time-old_time{if(!done)

{puts("计算!"); /*该语句可替换为自己需要并行的语句块*/

done=1;

}

}

else

{old_time=now_time;done=0;}

}

}

如果上面的puts语句换成两个沿对角线移动小球的语句,不就可以实现两个小球同时运动了吗?在程序中动态地调整delay_time的值,还可以确定小球移动的快慢。这只是一个提示,只要遵循该结构,还可以实现好多有趣的效果可以自己去研究。

c语言循环并行处理,C语言设计并行处理相关推荐

  1. c语言循环教案,C语言教学(七-上)for循环

    原标题:C语言教学(七-上)for循环 今天带大家了解C语言for循环的用法,我们知道计算机对每行代码的处理只有一次,如果我们需要重复进行某一步骤的时候,那不是需要重复敲这一段代码吗,要是需要重复一千 ...

  2. c语言三种循环结构特点,c语言循环结构(c语言循环结构特点)

    1.while循环 while语句的一般形式为:while(表达式)语句.其中表达式是循环条件,语句为循环体.while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的. for语句循环1 fo ...

  3. C语言用for循环求最大公约数,C语言循环结构 -C语言求最大公约数

    这是一个C语言 while 循环示例:求正整数 m 和 n 的最大公约数. 问题分析 输入:两个正整数. 输出:一个正整数(最大公约数). 最大公约数(gcd)是指几个数共有的因数之中最大的一个数,比 ...

  4. c语言循环结构排序,C语言循环结构 -C语言冒泡排序算法(附带源码)

    排序(sorting)就是调整列表的顺序,是计算机编程中经常要做的一件事情.经过排序以后的数据,可以极大地提高查找的效率. 冒泡排序(bubble sort)是用嵌套的 for 循环来实现的,其名称来 ...

  5. 统计字符C语言循环结构,C语言循环结构 -C语言统计字符和数字的个数

    这是一个C语言 while 循环示例:输入一串以?为结束标志的字符,统计其中字母和数字的个数. 问题分析 输入:从键盘输入一个以?结尾的字符串. 输出:两个整数(分别表示字母和数字的个数). 这是一个 ...

  6. c语言计算数列和循环,C语言循环结构 -C语言数列求和(使用for循环)

    C语言 for 循环示例:计算 1+2+3+-+100. 问题分析 本题需要反复累加 100 次,而且每次累加的数字都递增 1.这种特性完全符合 for 循环语句的使用条件. 利用 for 循环语句的 ...

  7. 用c语言循环语句,C语言中循环语句有哪些具体怎么用

    C提供三种基本的循环语句:for语句.while语句和do-while语句. 一.for循环 for循环是开界的. 它的一般形式为: for(;;) 语句; 初始化总是一个赋值语句,它用来给循环控制变 ...

  8. c语言循环8,C语言8 循环语句 | CN-SEC 中文网

    摘要 如何实现让某些语句按照一定的条件重复执行呢?比如:打印从0 - N的值? 例子: goto语句 如何实现让某些语句按照一定的条件重复执行呢? 比如:打印从0 - N的值? 例子: goto语句 ...

  9. c语言循环菜鸟,C语言菜鸟基础教程之for循环

    先看程序: #include int main() { for(int i = 0; i < 5; i++) { printf("i = %d\n", i); } print ...

  10. 杨辉三角c语言程序for循环,C语言循环结构 -C语言打印杨辉三角

    杨辉三角形是一个由数字排列组成的三角形数表.其一般形式如图 1 所示,每行开始和结尾处的数字都为 1,其他数字都是它所在行的上一行中靠近它的两个数之和. 图 1:杨辉三角形 请编程输出其中的前 n(n ...

最新文章

  1. 汉拓中国CRM评估报告简介
  2. 京东B2B业务架构演变阅读心得
  3. 计算机考研计划时间,2019计算机考研时间安排:复习时间规划
  4. 很漂亮个人主页自带音乐源码
  5. Amazon发布可持续性数据集,可用于多个领域的数据分析
  6. hiveserver2启动不起来_汽车一键启动除了点火,还有这些功能!车主:现在才明白...
  7. Centos6.6系统root用户密码恢复案例(转)
  8. 每天CookBook之JavaScript-032
  9. 【转】OCI-22053: 溢出错误的原因和解决方法
  10. Python绘制分形树(一)
  11. 暴风影音 去广告 方法
  12. 3 Idiots ——谢 阿米尔·汗
  13. 安装create-react-app教程及简单配置
  14. 计算机知识博大精深,如何学好计算机之忠言逆耳
  15. 09-01 面向对象编程
  16. 切换笔记本外接显示屏 屏幕显示的快捷键
  17. JSteg信息隐藏算法
  18. 语音模块LD3320模块的二次开发,并与树莓派进行串口通信
  19. 神经网络中warmup为什么有效?
  20. 创业需谨慎:减少摩擦,打造快乐体验

热门文章

  1. weblogic创建域生产模式,输入用户名闪退
  2. 正确配置Linux系统ulimit值的方法【转】
  3. dedecms发布文章提示标题不能为空怎么办
  4. IIS7 上配置运行 Ruby CGI环境
  5. 一位数据挖掘成功人士给数据挖掘在读研究生的建议
  6. 判断安卓程序是否高危程序。
  7. 某程序员大佬北漂16年,从住地下室到身家千万,如今回老家躺平!
  8. Docker 从入门到精通(建议收藏的教程)
  9. 如何使用Eclipse内存分析工具定位内存泄露
  10. 一致性协议算法-2PC、3PC、Paxos、Raft、ZAB、NWR超详细解析