月度归档:2011年02月

Tomb Raider – Room 151

我的数据结构大作业完成了,一个叫做Tomb Raider – Room 151的游戏,中文译名可以为盗墓者-151室。
当前发布的仅为游戏的demo版本,欢迎帮忙测试找bug,程序附带源代码!

110305修改:
1、互联网多人游戏。
2、联网聊天功能,系统消息。
3、迷宫地图自动生成器,生成了20关地图。
4、优化联网速度,使用脏列表,网络中传输每帧需要重绘的对象。
5、更成熟的复活功能。
6、Ghost、Pharaoh变得更精明。

110301修正bug:
1、单人游戏的时候隐藏的witch不会动。
2、挂掉了仍然可以装雷。
3、去掉Explosion对象,爆炸时候不会增加额外Object数目。
4、优化A*算法,去除不必要的检查。

Room 151 Network 110305 (Win32 Binary & Source Code)

运行平台: Windows XP、Vista、7
开发环境:Codelite、libSDL

玩法很简单。
Ctrl:佩剑
Alt:手枪
Space:安装定时炸弹
方向键:行走

可以联网合作游戏,进入游戏默认为单人模式,F3切换到服务器模式,F2切换到客户端模式。
命令行下执行可以加入一些参数:xxtomb [-m GameMode] [-p PlayerName] [-h HostToConnect]
GameMode可取0:单人游戏,1:服务器模式,2:客户端模式。

附带几张游戏相关的图:


继续阅读

移动硬盘起死回生修复记

起因:
一年前买的Hitachi移动硬盘,外壳是SSK,在昨天晚上去展示游戏作品的时候坏掉了!!!原因可能是人为损坏,因为我昨天晚上迟到了15分钟,然后还没等笔记本关闭,就慌慌忙忙的拔掉了USB线,扔进书包就飞奔去教室。想不到就因为这样出了问题……

症状:
一个分区下的homework目录无法访问,一旦进入这个目录,移动硬盘上的灯先是长亮一下,然后一直熄灭。应用程序无响应,操作系统也不做超时检查,傻乎乎地一直等我拔出usb线后才中断操作。

出现这种问题非常意外,要展示的游戏作品以及源代码全都在损坏的那个目录里,也没有备份过。一旦无法获取那些文件,就可能要重写几天废寝忘食完成的作业了……
继续阅读

xxftp:写了一个功能比较全面的FTP服务器小程序

新版本链接:再次400多行Python代码实现了一个FTP服务器

xxftp WIN32可执行文件及源代码下载地址:xxftp20110217

如有需要,可自行编译Linux版本!

笔记:
已经写了很多个FTPServer了。。。可以说是滚瓜烂熟,代码都可以背出来!
记得上次那个是用C#写的,不怎么好用,又吃内存,又吃CPU!
这次采用多线程写的xxftp,体积不到64KB,运行一段时间之后才占用几MB的内存,而且很好用!
对于像我这样做免费服务又节约资源的站长,适合的才是最好的!

每写一次FTPServer,较之前都有很大的,思路一次比一次清晰,代码一次比一次好看,功能一次比一次强大!
这次增加了OPTS,FEAT,EPSV,EPRT,MTDM等命令,详见源代码中的ftp.h。

这次的服务器模型跟之前写homeserver是不同的,这次不是很注重并发响应能力。之前的homeserver在启动的时候就初始化了足够的线程来等待用户请求,避免响应迟钝的现象。而xxftp服务器运行时候,启动一个守护线程用来回收超时或者已经结束的FTP连接,启动一个监听线程等待用户连接。当有连接请求时,创建一个connection对象和对应的线程去处理用户请求。
继续阅读

Ubuntu10.10也可以通过蓝牙与手机通信使用GPRS拨号上网

以前以为Ubuntu实现连接手机的蓝牙modem上网会很麻烦,需要下载额外的软件,所以一直没有尝试。
最近一次使用蓝牙连接时意外地发现,Ubuntu也内置了这些蓝牙套件功能,像通过蓝牙实现的鼠标远程控制和拨号上网。

蓝牙匹配成功后,把DUN拨号上网的项目选上。


继续阅读

xxfpm: 写了一个小巧的FastCGI进程管理器

经测试,支持Win32和Linux-x86平台。对于用php的人,有了这个东西来维护一定数量的进程,就能制服经常崩溃退出的php-cgi啦!!!

Usage: xxfpm path [-n number] [-i ip] [-p port]
Manage FastCGI processes.

-n, –number number of processes to keep
-i, –ip ip address to bind
-p, –port port to bind, default is 8000
-u, –user start processes using specified linux user
-g, –group start processes using specified linux group
-r, –root change root direcotry for the processes
-h, –help output usage information and exit
-v, –version output version information and exit

第一个写得比较标准的终端应用程序,我是看了cygwin的里的一些源代码,然后学会了如何使用getopt,算是写得比较标准的,但是代码也不短。

使用例子:
xxfpm z:/php5/php-cgi.exe -n 5 -p 8080

有人问,如何给程序加入参数?这个不难,使用双引号即可,路径要用”/”而不用”\”。例如要指定php.ini的路径,可以用下面例子:
xxfpm “z:/php5/php-cgi.exe -c z:/php5/php.ini” -n 5 -i 127.0.0.1 -p 8080

继续阅读