设为首页收藏本站喵玉殿官方微博

 找回密码
 少女注册中
搜索
查看: 7892|回复: 10

[编程算法] 一个简易的弹幕脚本系统

[复制链接]
发表于 2015-6-15 12:45:25 | 显示全部楼层 |阅读模式
http://pan.baidu.com/s/157xLG

用的引擎是libtcc
能够使用
QQ截图20150615123926.png
这样的脚本生成
QQ截图20150615124207.png
这样的弹幕

只实现了极坐标(对,,,,,逻辑比起上次还没增加一丝一毫。。)

除此之外还有什么需要的功能请大家给我点意见。。。

我最近得去研究buffer object去了。。

评分

参与人数 1积分 +5 喵玉币 +40 萌度 +120 收起 理由
drzzm32 + 5 + 40 + 120 Good

查看全部评分

发表于 2015-6-15 14:13:43 | 显示全部楼层
我那个是参数方程呢。。。
目前来看应该可以读取脚本。。。
但是依然蛋疼啊(((

点评

参数方程是啥?  发表于 2015-6-15 22:23
我需要解决数学表达式的读取……如果做脚本的话  发表于 2015-6-15 14:59
参数方程?这么厉害。。  发表于 2015-6-15 14:51
回复

使用道具 举报

 楼主| 发表于 2015-6-15 19:02:56 | 显示全部楼层
本帖最后由 song_5007 于 2015-7-16 11:00 编辑

QQ截图20150615190214.png

  1. #include "danmu.h"
  2. #include "math.h"
  3. void* danmu=NULL;

  4. void create(void* lp)
  5. {
  6. danmu=lp;
  7. static long timeProc = 200;
  8. static num=0;
  9. if (getPassed() - timeProc >=1800)
  10. {
  11. timeProc = getPassed();

  12. for(int i=0;i<6;i++)
  13. {
  14. XMFLOAT2 pos={184,125};
  15. polar *p=(polar*)(getLpMem(init(lp,pos,1,1)));
  16. if(p)
  17. {
  18. p->o=XM_2PI/6*i + num*XM_2PI/16.0f;

  19. }

  20. }
  21. num++;
  22. }
  23. }

  24. int safechk(XMFLOAT2 pos)
  25. {
  26. if (pos.x>468 || pos.x<-100 || pos.y>440 || pos.y<-40)
  27. return 1;
  28. return 0;
  29. }

  30. void secCre(XMFLOAT2 pos)
  31. {
  32. for(int i=0;i<16;i++)
  33. {
  34. polar *p=(polar*)(getLpMem(init(danmu,pos,1,2)));
  35. if(p)
  36. {
  37. p->o=XM_2PI/16*i;

  38. }
  39. }
  40. }

  41. int proc(void* lp,int catalogue)
  42. {
  43. XMFLOAT2 *pos=getLpPos(lp);
  44. XMFLOAT2 *centre = getLpCentre(lp);

  45. if(catalogue==1)
  46. {
  47. polar *p=(polar*)(getLpMem(lp));
  48. p->r+=1.0f;
  49. XMFLOAT2 tp={p->r*cos(p->o),p->r*sin(p->o)};
  50. *pos=*centre;
  51. pos->x+=tp.x;
  52. pos->y+=tp.y;

  53. if(getMyPassed(lp)>2000)
  54. {
  55. secCre(*pos);
  56. return -1;
  57. }


  58. }else
  59. {
  60. polar *p=(polar*)(getLpMem(lp));

  61. if(getMyPassed(lp)>2600)
  62. {
  63. return -1;
  64. }else
  65. if(getMyPassed(lp)>1000)
  66. {
  67. p->rv+=0.1f;
  68. p->r += p->rv;
  69. }else
  70. if(getMyPassed(lp)>500)
  71. {
  72. p->r+=0.1f;
  73. }else
  74. {
  75. p->r+=1.0f;
  76. }
  77. XMFLOAT2 tp={p->r*cos(p->o),p->r*sin(p->o)};
  78. *pos=*centre;
  79. pos->x+=tp.x;
  80. pos->y+=tp.y;
  81. }

  82. return 0;
  83. }
复制代码

GIF.gif
回复

使用道具 举报

发表于 2015-6-15 22:22:18 来自手机 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
回复

使用道具 举报

发表于 2015-6-15 23:29:22 | 显示全部楼层
虽然学过编程。。。还从来没试过编弹幕、搞下来学习一发
回复

使用道具 举报

发表于 2015-6-16 02:29:00 | 显示全部楼层
libtcc看起来有点厉害
回复

使用道具 举报

 楼主| 发表于 2015-7-1 23:43:47 | 显示全部楼层
7.1更新了一下 分离了逻辑与渲染
优化了GPU的访问
现在2-3w弹幕应该没问题了。
最近考试大约不会再有更新
回复

使用道具 举报

发表于 2015-7-2 00:30:53 来自手机 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
回复

使用道具 举报

发表于 2015-7-3 08:37:36 | 显示全部楼层
虽然感觉很简易的。。。但是我依然还是看不懂= =
回复

使用道具 举报

 楼主| 发表于 2015-7-16 01:31:27 | 显示全部楼层
0.9版本出炉了,这次可是重大更新,可以实现所有(非激光)弹幕了哟!
更新日志等放假补,就先这样了。
下一次估计就是最后的更新了,我会同时附上一份使用文档。
假设再有更新的话,估计已经是我正式开始写stg的时候了。

点评

tnl
汇编...大触  发表于 2015-7-16 09:05
对了运行环境。。。支持AVX的CPU与支持dx11的显卡。。。新的弹幕信息存储方式炸了效率,,,我为了优化已经上汇编了。。。不要见怪,,,不过有dx11一般都有avx吧。。  发表于 2015-7-16 01:33
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 少女注册中

本版积分规则

合作与事务联系|无图版|手机版|小黑屋|喵玉殿

GMT+8, 2025-10-31 03:40

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表