社区
C语言
帖子详情
做一个飞机游戏,怎样让飞机等待键盘输入同时子弹继续运动???
xjbwd
2005-01-27 09:31:36
看了一些解决方法,好像是用while(!kbhit()){游戏主体程序}
可是小弟试了很长时间还是子弹也在等待键盘输入后才运动
那位大虾能帮忙写段小程序明示一下,谢了!
...全文
423
21
打赏
收藏
做一个飞机游戏,怎样让飞机等待键盘输入同时子弹继续运动???
看了一些解决方法,好像是用while(!kbhit()){游戏主体程序} 可是小弟试了很长时间还是子弹也在等待键盘输入后才运动 那位大虾能帮忙写段小程序明示一下,谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
idler
2005-01-27
打赏
举报
回复
while(1)
{
int kb_code;
kb_code = kbhit();
if (kb_code != 0) {
/* 处理键盘输入 */
}
/* 绘画等其他内容 */
delay(/*若干时间,决定于帧频率*/)
}
xjbwd
2005-01-27
打赏
举报
回复
我顶阿
xjbwd
2005-01-27
打赏
举报
回复
我是初学者啊
KeepRun
2005-01-27
打赏
举报
回复
可能是没用对或者函数有问题,你用汇编试试
xjbwd
2005-01-27
打赏
举报
回复
kbhit就是监测键盘的
KeepRun
2005-01-27
打赏
举报
回复
kbhit是不是检测键盘是否有输入?
你用
mov ah , 01h
int 16h
看看
xjbwd
2005-01-27
打赏
举报
回复
在线等啊!
Behard
2005-01-27
打赏
举报
回复
int Get_Key(void)
/* Uses the BIOS to read the next keyboard character */
{
int key, lo, hi;
key = bioskey(0);
lo = key & 0X00FF;
hi = (key & 0XFF00) >> 8;
return((lo == 0) ? hi + 256 : lo);
} /* Get_Key */
Behard
2005-01-27
打赏
举报
回复
需要使用 bioskey 才能检查 Ctrl 等键的
prgmBaggio
2005-01-27
打赏
举报
回复
idler(偶是豆子。。。)
你是做游戏的啊?
你在北京吗??
寻开心
2005-01-27
打赏
举报
回复
如果你是在dos下,还可以有办法做
在dos系统下,系统内存当中有一个地址保存的是所有的键盘输入数据,这个地方就是键盘缓冲区
而这个系统的内存地址,因为是dos模式嘛, 谁都可以访问
直接就可以找到键盘缓冲里面的内容,
键盘缓冲区是一个循环队列,用数组形式组织的,有一个内存记录当前的位置和结束的位置
因此你可以直接判断里面的内容,你可以自己写一个函数FindKeyBuffer来查找这个缓冲区,看里面是否有你要的数据。
比如在你的游戏当中,你只允许用户使用ABCD四个键盘,那么你可以在FindKeyBuffer函数当中发现非指定按键存在就删除它,或者进行其他的处理
整个处理循环就是:
while (1)
{
Render();
switch ( FindKeyBuffer())
{
case a:
....
break;
case b:
....
break;
}
}
KeepRun
2005-01-27
打赏
举报
回复
如果刷屏还是挺复杂的。我以前上大一的时候做过一个DOS的飞行设计游戏,那时水平比较差,其他没什么问题,就是图形太丑。如果你想做得好,就首先要解决内存和图片资源问题,这个应该还比较简单。然后最好能直接写显存,可以利用一块内存做缓冲。一点一点画到屏幕上效果不好,弄得不好会比较闪。
idler
2005-01-27
打赏
举报
回复
多线程的同学,人家是在DOS环境下用Turbo C吧。。。
日立奔腾浪潮微软松下联想
2005-01-27
打赏
举报
回复
如果是DOS程序就用INT 16取键值,
如果是Windows程序的话,对于游戏,最好的办法是GetAsyncKeyState。
xjbwd
2005-01-27
打赏
举报
回复
up
Li_Dinosaur
2005-01-27
打赏
举报
回复
我做过类似的程序.
while(m_flag) //
{
while(bioskey(1)!=0)
/*如果有输入,就处理相应的操作 ,bioskey(1)是得到键盘是否有输.不用等待*/
{
key=getkey();
switch(key)
{
case 25: ...
case 28: ...
}
}
}
echobf
2005-01-27
打赏
举报
回复
不知可不可以这样,
检查键盘缓冲区,如有用户的输入,处理,否则刷屏
庄鱼
2005-01-27
打赏
举报
回复
你可以使用计数器啊。在计数器的触发事件中,你可以处理一个通用序列。这样,你就可以将飞行、子弹轨迹、运动方式作为一组队列交给计数器处理,键盘事件也是这样提交给序列,通过一个简单的轮巡操作就可以解决这些问题,感觉上很像是并行处理!关键在于你所有的事件处理必须做到是相容的,不然容易出现打架的情况。
寻开心
2005-01-27
打赏
举报
回复
看楼主的描述,感觉还是在玩dos这样的东西哪
windows系统是多线程的,消息处理机制就可以避免这个问题
关键是不要等待键盘处理返回才继续运行程序,常规的标准的c语言函数和键盘或者输入相关的,都是在等待输入结构的返回,因为这个是不是windows消息模式,而是流程模式,没有办法多事件并发的。
topcattempid
2005-01-27
打赏
举报
回复
去
http://www.12Yeah.com/default2.htm?user=yefeiisme
上看看,这种问题的解决方法多的是
加载更多回复(1)
用VSC++
做
一个
飞机
大战的
游戏
本文主要介绍如何用C++
做
一个
简易的
飞机
大战
游戏
[计算机毕设]基于java的打
飞机
游戏
系统设计与实现(项目报告+源代码)
基于java的打
飞机
游戏
系统项目说明报告 1.1 手机软件现状在信息社会中,手机及其他无线设备越来越多的走进普通百姓的工作和生活,随着信息网络化的不断进展,手机及其他无线设备上网络势在必行。但是传统手机存在...
雷霆行动(STG
飞机
游戏
)源码分析
本例子取自cping1982早期公开的
一个
STG源码,loon-simple-20090212,里面带了6个
游戏
。这次我们要分析的是STGSimple这个
飞机
游戏
。截图如下: [img]...
C++实战(二)——
飞机
大战
前言: 最近补习了一下面向对象编程,为了加深自己对类的理解和应用,在网上找了许多小程序的原代码来分析。...还有
一个
主函数文件"main.cpp"。一、头文件"game.h" 头文件"game....
C++原创
飞机
大战代码
C++
飞机
大战代码
C语言
69,364
社区成员
243,083
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章