这次更新修正了几个错误。 1.帧率统计功能实际上是错误的(我脑抽写出的代码),全片过程中帧率一般维持在20FPS 不变。现已将FPS统计改成处理延时。(PS:对于处理延时,程序自动调节) 2.有TX反馈说64位OS下运行不正常,八成是int64的问题,现在已经全部改成longint,问题应该解决。 3.加了个统计功能(把第三行stat=true改成stat=false可以关掉)。 数据文件下载: /usr/uploads/2013/03/badapple.7z 源码:(自己用FPC 2.6编译) uses crt,dos; const stat= true ; inx= 79 ; iny= 24 ; yanchi= 50 ; yanchitj= 800 ; type pic= array [ 1 ..inx, 1 ..iny] of char ; var fin:text; i,j,diff: longint ; ct,dt,dtt,pt: longint ; s: string ; a,b:pic; // 来自 WotorDho <http://user.qzone.qq.com/1320719107> 的时间校准代码(有修改) function currtime : longint ; var a,b,c,d: word ; begin gettime(a,b,c,d); currtime:...
Bad Apple NG:增强版 Bad Apple 播放系统
UPDATE:如果碰到打不开、运行错误2什么的问题,请在 Bad Apple 命令行动画版 看说明下数据文件!!! 上次我的 Bad Apple 命令行动画版 成功被同学WotorDho转载,并且进行了增强,主要是判断延时,以便控制系统卡的时候FPS保持基本不变。可惜他用的是他编写文澜杀时使用的自建Unit XCrt,冗余代码多不说,还不好懂。 我研究了一下XCrt,搞懂他的原理,并且对自己的播放器进行修改,达到了一样的效果。(理论上还会快一点) 同时,由于之前Telnet传输时采取整幅整幅画面传输,浪费了大量流量,我也进行了优化,也就是判断每个像素点是否相同,如果不同就只改像素点,可以有效减小传输带宽。我称之 Bad Apple NG(NG为Next Generation,下一代)。VPS上的Telnet演示将稍后更新。 上源代码: uses crt,dos; type pic= array [ 1 . .79 , 1 . .24 ] of char ; var fin:text; i,j,diff: longint ; ct,dt: int64 ; s: string ; a,b:...
Bad Apple 移植到 Telnet 中并成功放映
今天折腾了半天,把Bad Apple折腾到了我VPS的Telnet里面,用的就是我早些时候发的 命令行动画版 。 如果大家想看,telnet xuyh0120.tk 或 telnet 5.175.156.249 Round 1. 移植到SSH 因为本来和同学说好我要在SSH下折腾出一个,所以就先用这个了。首先把Bad Apple传到 VPS上,我存在/opt/badapple。这个文件夹里两个文件:badapple和badapple.in(资源文件,我改过扩展名)。 useradd badapple passwd badapple # 密码我设的badapple su badapple # 切换过去 chsh # 输入/opt/badapple/badapple exit SSH登录看效果,结果Error 2,找不到资源文件。我就在本地重新编译一遍(VPS上没 FPC),把路径从相对改成绝对,上传,再次登录,就成功出现了Bad Apple的动画。 下一个要解决的问题是放完片子自动把用户T出去,我的一同学给我的建议居然是pkill -9 sshd……这样效果不错,但是你对得起另外在看的人吗……不过我发现,片子放完,...
Bad Apple 命令行动画版
Bad Apple 是岛国东方幻想乡制作的一个动画,全动画采用类似皮影戏的方式,只有黑白,但是做到了3D画面,而且全部手绘!效果非常好,没有任何跳帧丢帧现象。 因为它的黑白特性,大群人开始尝试将它移植到各种平台上,我见过的就有计算器、树莓派,还有人把它用javascript放了出来。我也写了一个Pascal程序用来放Bad Apple,不过是全命令行的。 编译好的程序我懒得放了,而且我用的是Linux,Windows用户下载了也没用,所以我把源代码放出来,你们自己用FPC编译吧。 uses crt; var fin:text; i: longint ; s: string ; begin // 链接源文件并准备读取 assign(fin, 'badapple.txt' ); reset(fin); // 读入第一幅画面并输出版权 for i:= 1 to 24 do begin readln(fin,s); writeln(s); end ; write ( 'Bad Apple ASCII Art by Lan Tian - https://lantian.pub' ); delay( 50 ); // 输出之后画面,不覆盖版权 while ( not (eof(fin))) do begin gotoxy( 1 , 1 )...