1. 个人介绍
flyaflya,喜欢写程序,玩游戏
邮件:
2. python
2.1. 代码段
2.1.1. ini类
一个好用的ini类,像使用dict一样简单易用。
1 import ConfigParser
2 import string
3
4 class IniSettings(dict):
5 def __init__(self, filename):
6 self.filename = filename
7 self.__loadConfig()
8 # Load the ini file into a dictionarie
9 def __loadConfig(self):
10 self.clear()
11 cp = ConfigParser.ConfigParser()
12 cp.read(self.filename)
13 for sec in cp.sections():
14 settings={}
15 name = string.lower(sec)
16 for opt in cp.options(sec):
17 settings[string.lower(opt)] = string.strip(cp.get(sec, opt))
18 self.__setitem__(name,settings)
19
20 def reload(self):
21 """Reload the config file"""
22 self.settings = self.__loadConfig()
23
24 def save(self):
25 """save the config file"""
26 inifile = open(self.filename, 'w')
27 for group in self.keys():
28 inifile.write("\n["+group+"]\n")
29 for key in self[group].keys():
30 inifile.write(str(key)+"="+str(self[group][key])+"\n")
31
32
33 if __name__ == '__main__':
34 settings = IniSettings('settings.ini')
35 settings["t"]["tt"] = "ddd"
36 settings.save()
2.2. wxpython
2.2.1. 换肤的实现
简单测试:
说明对wxpython程序换肤是可行的,需要作进一步实验...
如果只用通用控件(不用Panel),可以实现完美换肤....
对newedit进行换肤,好玩....
3. PyGame
3.1. 简介
简述:用于游戏制作
能力:有完备的控制、声音、显示模块,支持bmp,png等多种图像格式,自动载入Alpha通道,能显示复杂特效。
缺点:图像必须读入surface后显示,占用内存多,不适合制作大型游戏,blit算法过于单一。
官方站点: http://www.pygame.org/
3.2. 技巧
3.3. 代码段
用一个surface填充另一个surface,很常用的功能,pygame里竟然没有,自己写一个。
1 def fill_blit(source, dest, dRect, sRect = None ):
2 if not sRect:
3 sr = source.get_rect()
4 else:
5 sr = pygame.Rect(sRect)
6 dr = pygame.Rect(dRect)
7
8 for i in range(dr.height/sr.height):
9 for j in range(dr.width/sr.width):
10 dest.blit(source, (dr.x + j * sr.width, dr.y + i * sr.height), sr)
11 if dr.width%sr.width != 0:
12 left = dr.width%sr.width
13 dest.blit(source, (dr.x + dr.width - left, dr.y + i * sr.height), (sr.x,sr.y,left,sr.height))
14
15 #填边
16 if dr.height%sr.height != 0:
17 hleft = dr.height%sr.height
18 for j in range(dr.width/sr.width):
19 dest.blit(source, (dr.x + j * sr.width, dr.y + dr.height-hleft), (sr.x, sr.y, sr.width, hleft))
20 if dr.width%sr.width != 0:
21 left = dr.width%sr.width
22 dest.blit(source, (dr.x + dr.width - left, dr.y + dr.height-hleft), (sr.x, sr.y, left, hleft))
-- flyaflya [2005-08-04 09:45:16]
4. 设计模式总说
4.1. 创建型模式
Singleton(单件) - SingletonPattern
4.2. 结构型模式
Proxy(代理) - ProxyPattern
Flyweight(享元) - FlyweightPattern
4.3. 行为模式
Chain of Responsibility(职责链) - CORPattern
Observer(观察者)- ObserverPattern
Template Method(模板方法) - TemplateMethodPattern
Visitor(访问者)- VisitorPattern
Command(命令) - CommandPattern
state(代理) - StatePattern
5. 反馈
谢谢!!易读多了!不过图片就要重新上传了………… ZoomQuiet
5.1. 扩展与嵌入
Swig - 强悍的库扩展工具