个人介绍

flyaflya,喜欢写程序,玩游戏。

python

代码段

ini类

一个好用的ini类,像使用dict一样简单

Toggle line numbers
   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

Toggle line numbers
   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     if dr.height%sr.height != 0:
  16         hleft = dr.height%sr.height
  17         for j in range(dr.width/sr.width):
  18             dest.blit(source, (dr.x + j * sr.width, dr.y + dr.height-hleft), (sr.x, sr.y, sr.width, hleft))
  19         if dr.width%sr.width != 0:
  20             left = dr.width%sr.width
  21             dest.blit(source, (dr.x + dr.width - left, dr.y + dr.height-hleft), (sr.x, sr.y, left, hleft))