Differences between revisions 3 and 6 (spanning 3 versions)
Revision 3 as of 2005-06-17 06:00:21
Size: 212
Editor: flyaflya
Comment:
Revision 6 as of 2005-07-28 16:07:49
Size: 2360
Editor: flyaflya
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
flyaflya,喜欢写程序,玩游戏,擅长游戏开发,熟悉C++和python。目前在用pygame开发桌面游戏。
= 技术经验 =
flyaflya,喜欢写程序,玩游戏。
Line 5: Line 4:
=== 代码段 ===
==== ini类 ====
一个好用的ini类,像使用dict一样简单
{{{
#!python
import ConfigParser
import string

class IniSettings(dict):
    def __init__(self, filename):
        self.filename = filename
        self.__loadConfig()
    # Load the ini file into a dictionarie
    def __loadConfig(self):
        self.clear()
        cp = ConfigParser.ConfigParser()
        cp.read(self.filename)
        for sec in cp.sections():
            settings={}
            name = string.lower(sec)
            for opt in cp.options(sec):
                settings[string.lower(opt)] = string.strip(cp.get(sec, opt))
            self.__setitem__(name,settings)

    def reload(self):
        """Reload the config file"""
        self.settings = self.__loadConfig()
    
    def save(self):
        """save the config file"""
        inifile = open(self.filename, 'w')
        for group in self.keys():
            inifile.write("\n["+group+"]\n")
            for key in self[group].keys():
                inifile.write(str(key)+"="+str(self[group][key])+"\n")


if __name__ == '__main__':
    settings = IniSettings('settings.ini')
    settings["t"]["tt"] = "ddd"
    settings.save()

}}}
Line 6: Line 49:
== C/C++ ==
== MFC ==
=== blit_fill ===
用一个surface填充另一个surface
{{{
#!python

def fill_blit(source, dest, dRect, sRect = None ):
    if not sRect:
        sr = source.get_rect()
    else:
        sr = pygame.Rect(sRect)
    dr = pygame.Rect(dRect)
    
    for i in range(dr.height/sr.height):
        for j in range(dr.width/sr.width):
            dest.blit(source, (dr.x + j * sr.width, dr.y + i * sr.height), sr)
        if dr.width%sr.width != 0:
            left = dr.width%sr.width
            dest.blit(source, (dr.x + dr.width - left, dr.y + i * sr.height), (sr.x,sr.y,left,sr.height))
    
    if dr.height%sr.height != 0:
        hleft = dr.height%sr.height
        for j in range(dr.width/sr.width):
            dest.blit(source, (dr.x + j * sr.width, dr.y + dr.height-hleft), (sr.x, sr.y, sr.width, hleft))
        if dr.width%sr.width != 0:
            left = dr.width%sr.width
            dest.blit(source, (dr.x + dr.width - left, dr.y + dr.height-hleft), (sr.x, sr.y, left, hleft))

}}}

个人介绍

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

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

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

flyaflya (last edited 2009-12-25 07:16:32 by localhost)