社区
新手乐园
帖子详情
做一个飞机游戏,怎样让飞机等待键盘输入同时子弹继续运动???
xjbwd
2005-01-27 09:49:45
看了一些解决方法,好像是用while(!kbhit()){游戏主体程序}
可是小弟试了很长时间还是子弹也在等待键盘输入后才运动
那位大虾能帮忙写段小程序明示一下,谢了!
...全文
187
7
打赏
收藏
做一个飞机游戏,怎样让飞机等待键盘输入同时子弹继续运动???
看了一些解决方法,好像是用while(!kbhit()){游戏主体程序} 可是小弟试了很长时间还是子弹也在等待键盘输入后才运动 那位大虾能帮忙写段小程序明示一下,谢了!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yuziyu
2005-01-27
打赏
举报
回复
转贴,呵呵
yuziyu
2005-01-27
打赏
举报
回复
C语言设计并行处理
发表日期:2003年4月22日 出处:TC256网站 作者:吴进 已经有3028位读者读过此文
C语言设计并行处理
2002-8-12
要编写一个好的游戏,必需使用到并行机制。并行机制要涉及到一个重要的语句,那就是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的值,还可以确定小球移动的快慢。这只是一个提示,只要遵循该结构,还可以实现好多有趣的效果,读者可以自己去研究。
liu_jun_
2005-01-27
打赏
举报
回复
给分,我就告诉你。:)
我估计你把子弹运动的程序写在kbhit()之后的函数中了。
我就建议你把子弹运动写成一个完整的函数,一直运动到目标。
而且while(!kbhit()){游戏主体程序}这中结构可是不行的。
你不按的时候就执行,按的时候就不执行。
这样
while(1)
{kbhit();
case 如果是ESC就 break;
case 按开火 就 fire();
}
来吧给分吧。
zdwaiter
2005-01-27
打赏
举报
回复
多线程
zhaoray
2005-01-27
打赏
举报
回复
另开辟一个线层
xjbwd
2005-01-27
打赏
举报
回复
在线等啊!
xjbwd
2005-01-27
打赏
举报
回复
up
C++高射炮打
飞机
游戏
课程设计.docx
本文档是关于
一个
使用C++编程语言完成的“高射炮打
飞机
游戏
”的课程设计报告,旨在让学生通过实践加深对高级语言程序设计的理解。以下是详细的知识点解析: 1. **
游戏
控制函数**:这部分代码负责设置
游戏
背景和控制...
java版全民
飞机
大战
总的来说,Java版全民
飞机
大战是
一个
集成了多线程、图形绘制、数学算法、
游戏
逻辑等多元技术的项目,展现了Java在
游戏
开发中的强大能力。通过学习这个
游戏
的源代码,开发者可以提升自己的编程技能,对
游戏
开发有更...
使用Java开发的
飞机
大战.zip
在本项目"使用Java开发的
飞机
大战.zip"中,我们主要探讨的是如何使用Java编程语言构建
一个
基于2D图形的
飞机
射击
游戏
。这个
游戏
的核心功能包括玩家
飞机
发射
子弹
、敌机碰撞检测以及分数系统。以下是对这些关键知识点的...
空战
游戏
flash源码
《空战
游戏
Flash源码详解》 在数字娱乐领域,Flash技术曾是制作互动内容的主流工具之一,尤其是在开发小型在线
游戏
中,如我们所关注的...总之,这份源码不仅是
一个
游戏
,更是一本活生生的教程,
等待
着被探索和学习。
scratch编程项目源代码文件案例素材-[
飞机
大战v1.2].zip
本压缩包文件"scratch编程项目源代码文件案例素材-[
飞机
大战v1.2].zip"提供了
一个
名为"
飞机
大战v1.2"的
游戏
案例,这将是
一个
很好的学习资源,让孩子们通过实践理解编程的基本概念。 源代码文件".sb2"是Scratch项目...
新手乐园
33,321
社区成员
41,774
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章