免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: the4king
打印 上一主题 下一主题

[C] 字符界面的打字游戏 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-09-10 21:55 |只看该作者
楼主做的很不错,支持。
我试过用printf在终端下作俄罗斯方块,效果如下。楼主可以尝试printf, ...
okocha-jay 发表于 2010-09-09 10:00



    感谢给予建议 ,从你的提示中 我觉得printf也是一个很不错的方法。

  不过我目前的思路是 在一个无限循环中 每间隔一定时间 就 printf 整个屏幕,
  而 要printf 的数据则是 另一个线程或者进程运算好的。。。

  是这样吗。



  在刚才打字的时候 ,我又觉得 ,上面这段话其实就和我用的那个 curses 差不多。
  curses每次循环就是绘制整个屏幕,而另一个线程 操作内存,准备好 curses 要绘制的数据。。。


   额,大概就是这样了 ,表述有点混乱。。。

论坛徽章:
1
黑曼巴
日期:2020-02-27 22:54:26
12 [报告]
发表于 2010-09-10 22:36 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
13 [报告]
发表于 2010-09-11 15:39 |只看该作者
我现在都写不出{:3_204:}

论坛徽章:
0
14 [报告]
发表于 2010-09-14 20:17 |只看该作者
回复 1# the4king


    stop()函数干吗用的???用了select,看起来是个定时器的作用,不知道你想干吗??

论坛徽章:
0
15 [报告]
发表于 2010-09-14 21:10 |只看该作者
回复  the4king


    stop()函数干吗用的???用了select,看起来是个定时器的作用,不知道你想干吗? ...
chong232 发表于 2010-09-14 20:17



    哦,明白了,是变速用的

论坛徽章:
0
16 [报告]
发表于 2010-09-14 21:46 |只看该作者
哦,明白了,是变速用的
chong232 发表于 2010-09-14 21:10



    由于我写程序一直有个坏毛病,不添加注释,而且不爱留空行

再加上在VIM中一个字符一个字符的敲进去的 ,就使得代码结构显得太过于紧凑而难于阅读。。。


下次贴程序的时候 一定 在不同功能的代码之间留空行 , 写好注释

论坛徽章:
0
17 [报告]
发表于 2010-09-14 21:55 |只看该作者
回复 16# the4king

    这个程序有时候经常运行不了,我检查了下,问题出在信号量上:
                sem_post(&sem_one);
                sem_wait(&sem_two);

主线程 经常卡死在sem_wait()上,我不明白是什么原因,我改动了一下,把信号量去掉,换成函数调用,就不会卡死了

论坛徽章:
0
18 [报告]
发表于 2010-09-14 22:13 |只看该作者
回复  the4king

    这个程序有时候经常运行不了,我检查了下,问题出在信号量上:
                s ...
chong232 发表于 2010-09-14 21:55




这儿有没有问题 说实话 我也无法肯定。

但程序在我这儿一直运行良好。

这是我的编译选项
  1. gcc typetest.c -Wall -O3 -o Type -lcurses -lpthread
复制代码
你直接下载附件里的 我编译好的程序  在你电脑上试试。
  1. tar -xf type.rar
复制代码

type.tar

20 KB, 下载次数: 25

论坛徽章:
0
19 [报告]
发表于 2010-09-14 22:20 |只看该作者
回复  the4king

    这个程序有时候经常运行不了,我检查了下,问题出在信号量上:
                s ...
chong232 发表于 2010-09-14 21:55


应该不是信号量的问题 ,

主线程 post 了 sem_one 后,  changekey 函数得以运行 ,不管有没有打中的字符 ,changekey 都会运行到 sem_post(&sem_two )  这儿。

然后主线程继续运行。   所有应该不会是这儿信号量的问题 卡住。。。


我让主线程在 changekey 替换内存中 相应打中字符为 @  或者 将 @替换为 空格  的时候 暂停 ,
是考虑到 主线程会 memmove  ,正确的过程应该是 changekey 先替换内存 ,然后 主线程在  memmove  ,
怕不是这个顺序 导致一些 问题。。。

论坛徽章:
0
20 [报告]
发表于 2010-09-15 08:43 |只看该作者
应该不是信号量的问题 ,

主线程 post 了 sem_one 后,  changekey 函数得以运行 ,不管有没有打中的 ...
the4king 发表于 2010-09-14 22:20



   不行啊,我在ubuntu10.04下,gcc版本4.4.3,,  偶而能运行。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP