1. 个人介绍

flyaflya,喜欢写程序,玩游戏

邮件:image

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. 换肤的实现

简单测试:

skintest.jpg skintest2.jpg

说明对wxpython程序换肤是可行的,需要作进一步实验...

skintest3.jpg

如果只用通用控件(不用Panel),可以实现完美换肤....

skinnewedit.jpg

对newedit进行换肤,好玩....

3. PyGame

3.1. 简介

  • 简述:用于游戏制作

  • 能力:有完备的控制、声音、显示模块,支持bmp,png等多种图像格式,自动载入Alpha通道,能显示复杂特效。

  • 缺点:图像必须读入surface后显示,占用内存多,不适合制作大型游戏,blit算法过于单一。

  • 官方站点: [WWW] 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. 创建型模式

4.2. 结构型模式

4.3. 行为模式

5. 反馈

  • 谢谢!!易读多了!不过图片就要重新上传了………… ZoomQuiet

5.1. 扩展与嵌入

Swig - 强悍的库扩展工具

last edited 2005-08-21 03:24:03 by flyaflya