Differences between revisions 6 and 8 (spanning 2 versions)
Revision 6 as of 2005-07-28 16:07:49
Size: 2360
Editor: flyaflya
Comment:
Revision 8 as of 2005-07-28 16:19:33
Size: 2502
Editor: flyaflya
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
邮件:[[MailTo(flyaflyaa AT SPAMFREE gmail DOT com)]]
Line 6: Line 7:
一个好用的ini类,像使用dict一样简单 一个好用的ini类,像使用dict一样简单易用。
Line 50: Line 51:
用一个surface填充另一个surface 用一个surface填充另一个surface,很常用的功能,pygame里竟然没有,自己写一个。
Line 53: Line 54:
Line 68: Line 68:
    #填边
Line 75: Line 76:

个人介绍

flyaflya,喜欢写程序,玩游戏。 邮件:MailTo(flyaflyaa AT SPAMFREE gmail DOT com)

python

代码段

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()

pygame

blit_fill

用一个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 (last edited 2009-12-25 07:16:32 by localhost)