예제 #1
0
    def get_ceshu(gua, index):
        try:
            code = Gua.guatu64(gua)

            answer = 0
            #原策数,阳 36 阴 24
            yuanceshu = 24 * 6 + sum(code) * 12

            up = Gua.get_8gua_index(code[0:3])
            down = Gua.get_8gua_index(code[3:])
            answer = yuanceshu + up + down + index
            if index > 3:

                answer += (index * 10 + up) * yuanceshu
            else:
                answer += (down * 10 + index) * yuanceshu
            answer = str(answer)
            answer = answer[len(answer) - 4:]
            #元会世运
            result = {}
            result[u'元'] = answer[0]
            result[u'会'] = answer[1]
            result[u'世'] = answer[2]
            result[u'运'] = answer[3]
            print answer
            return result
        except Exception, e:
            traceback.print_exc()
            print e
예제 #2
0
 def get_ceshu(gua,index):
     try:
         code = Gua.guatu64(gua)
         
         answer = 0
         #原策数,阳 36 阴 24
         yuanceshu = 24*6+sum(code)*12
         
         up = Gua.get_8gua_index(code[0:3])
         down = Gua.get_8gua_index(code[3:])
         answer = yuanceshu + up + down + index
         if index > 3:
             
             answer += (index*10+up)*yuanceshu
         else:
             answer += (down*10+index)*yuanceshu
         answer = str(answer)
         answer = answer[len(answer)-4:]
         #元会世运
         result = {}
         result[u'元'] = answer[0]
         result[u'会'] = answer[1]
         result[u'世'] = answer[2]
         result[u'运'] = answer[3]
         print answer
         return result
     except Exception,e:
         traceback.print_exc()
         print e
예제 #3
0
파일: ZhanGua.py 프로젝트: wuxf1937/hzl
	def __init__(self, date, whom, what, gender, qi_gua):
		self.date = LunarDate(date[0], date[1], date[2])
		self.whom = whom
		self.what = what
		self.gender = gender

		bengua_num = 0b000000
		zhigua_num = 0b000000
		self.bianyao = []
		for x in range(6):
			if qi_gua[x] == "单":
				yao = 1 << x
				bengua_num = bengua_num | yao
				zhigua_num = zhigua_num | yao
			elif qi_gua[x] == "坼":
				yao = 0 << x 				# just for clearness
				bengua_num = bengua_num | yao
				zhigua_num = zhigua_num | yao
			elif qi_gua[x] == "重":
				yao = 1 << x
				self.bianyao.append(x)
				bengua_num = bengua_num | yao
				zhigua_num = zhigua_num | yao ^ (1 << x)
			elif qi_gua[x] == "交":
				yao = 0 << x
				self.bianyao.append(x)				
				bengua_num = bengua_num | yao
				zhigua_num = zhigua_num | yao ^ (1 << x)
			else:
				raise ValueError
		self.bengua = Gua(bengua_num)
		self.zhigua = Gua(zhigua_num)
		self.an_bianqin()
		self.an_liushou()
예제 #4
0
    def yungua(year):
        try:
            gua,gua_remain = HUI_YUAN_YUN_SHI.gua(year)
            return Gua.biangua(gua,gua_remain)

        except Exception,e:
            traceback.print_exc()
            print e
예제 #5
0
    def shigua(year):
        try:
            gua = HUI_YUAN_YUN_SHI.yungua(year)
            shi = HUI_YUAN_YUN_SHI.Shi(year)[0]
            return Gua.biangua(gua,(shi+1)/2)

        except Exception,e:
            traceback.print_exc()
            print e
예제 #6
0
    def gua(year):
        try:
            hui,hui_remain = HUI_YUAN_YUN_SHI.Hui(year)
            yun,yun_remain = HUI_YUAN_YUN_SHI.Yun(year)
            
            guas = HUI_YUAN_YUN_SHI.HUI[hui-1]
      
            values = guas[guas.keys()[0]]
            
            yun_tmp = yun % 6
            if yun_tmp == 0:
                yun_tmp = 6
                return Gua.get_64gua_fullname(values[yun/6-1]),yun_tmp
            else:
                return Gua.get_64gua_fullname(values[yun/6]),yun_tmp

        except Exception,e:
            traceback.print_exc()
            print e
예제 #7
0
    def niangua(year):
        try:
            gua = HUI_YUAN_YUN_SHI.shigua(year)
            value = 0
            for i,v in enumerate(HUI_YUAN_YUN_SHI.XIANTIAN_60_PEIGUATU):
                if v in gua:
                    value = i+1
                    break
            
            shi,shi_remain = HUI_YUAN_YUN_SHI.Shi(year)
            value = value -1 + shi_remain
            if shi % 2 == 0:
                value += 30
            tmp = value % 60
            if tmp == 0:
                tmp = 60
            
            return Gua.get_64gua_fullname(HUI_YUAN_YUN_SHI.XIANTIAN_60_PEIGUATU[tmp-1])

        except Exception,e:
            traceback.print_exc()
            print e
예제 #8
0
파일: ZhanGua.py 프로젝트: wuxf1937/hzl
class ZhanGua(object):
	"""一次占卦。
	date: 起卦日期。named tuple. 如date.year .month .day = "甲子",
	whom: 所占何人,如:"同事",
	what: 所占何事,如:"婚姻",
	gender: 问卜者性别,"男" or "女",
	qi_gua: 摇卦结果, 如("单坼重交单坼"),
	"""
	def __init__(self, date, whom, what, gender, qi_gua):
		self.date = LunarDate(date[0], date[1], date[2])
		self.whom = whom
		self.what = what
		self.gender = gender

		bengua_num = 0b000000
		zhigua_num = 0b000000
		self.bianyao = []
		for x in range(6):
			if qi_gua[x] == "单":
				yao = 1 << x
				bengua_num = bengua_num | yao
				zhigua_num = zhigua_num | yao
			elif qi_gua[x] == "坼":
				yao = 0 << x 				# just for clearness
				bengua_num = bengua_num | yao
				zhigua_num = zhigua_num | yao
			elif qi_gua[x] == "重":
				yao = 1 << x
				self.bianyao.append(x)
				bengua_num = bengua_num | yao
				zhigua_num = zhigua_num | yao ^ (1 << x)
			elif qi_gua[x] == "交":
				yao = 0 << x
				self.bianyao.append(x)				
				bengua_num = bengua_num | yao
				zhigua_num = zhigua_num | yao ^ (1 << x)
			else:
				raise ValueError
		self.bengua = Gua(bengua_num)
		self.zhigua = Gua(zhigua_num)
		self.an_bianqin()
		self.an_liushou()

	def an_bianqin(self):
		"""重定变爻六亲"""
		for x in self.bianyao:
			self.zhigua.yao[x].liuqin = self.bengua.find_liuqin(self.zhigua.yao[x].wuxing)
			"""
			if gong2wuxing[self.bengua.gong] == self.zhigua.yao[x].wuxing:
				self.zhigua.yao[x].liuqin = "兄弟"
			elif wuxing_sheng[gong2wuxing[self.bengua.gong]] == self.zhigua.yao[x].wuxing:
				self.zhigua.yao[x].liuqin = "子孙"
			elif wuxing_shengwo[gong2wuxing[self.bengua.gong]] == self.zhigua.yao[x].wuxing:
				self.zhigua.yao[x].liuqin = "父母"
			elif wuxing_ke[gong2wuxing[self.bengua.gong]] == self.zhigua.yao[x].wuxing:
				self.zhigua.yao[x].liuqin = "妻财"
			elif wuxing_kewo[gong2wuxing[self.bengua.gong]] == self.zhigua.yao[x].wuxing:
				self.zhigua.yao[x].liuqin = "官鬼"
			else:
				raise ValueError
			"""
	def an_liushou(self):
		if self.date.day[0] == "甲" or self.date.day[0] == "乙":
			liushou_start = 0
		elif self.date.day[0] == "丙" or self.date.day[0] == "丁":
			liushou_start = 1
		elif self.date.day[0] == "戊":
			liushou_start = 2
		elif self.date.day[0] == "己":
			liushou_start = 3
		elif self.date.day[0] == "庚" or self.date.day[0] == "辛":
			liushou_start = 4
		elif self.date.day[0] == "壬" or self.date.day[0] == "癸":
			liushou_start = 5
		else:
			raise ValueError

		for x in range(6):
			self.bengua.yao[x].liushou = liushou[(liushou_start + x) % 6]
	
	def __str__(self):
		s = "问卜人,{},于 {}年{}月{}日 问 {} {} 事,\n".format(self.gender, self.date.year, self.date.month, self.date.day, self.whom, self.what)
		s = s + "得 {} 之 {} 卦。\n".format(self.bengua.lname, self.zhigua.lname)

		for x in reversed(range(6)):
			yao_s = ". ".join([self.bengua.yao[x].name, self.bengua.yao[x].liushou, self.bengua.yao[x].zhi + self.bengua.yao[x].wuxing, self.bengua.yao[x].liuqin])
			if x in self.bianyao:
				yao_s = yao_s + " 化为 " + ". ".join([self.zhigua.yao[x].zhi + self.zhigua.yao[x].wuxing, self.zhigua.yao[x].liuqin])
			if x == self.bengua.shi:
				yao_s = yao_s + ", " + "世"
			elif x == self.bengua.ying:
				yao_s = yao_s + ", " + "应"
			s = s + yao_s + "\n"

		return(s)
예제 #9
0
def get_Hui(year):
    if year > 0:
        index = 67017 + year
    else:
        index = 67018 + year
    hui = index / 10800

    #这是计算hui
    if index % 10800 != 0:
        hui += 1

    hui_value = Hui[(hui - 1) % 12].keys()[0]

    tmp = index % 10800
    if tmp == 0:
        tmp = 10800

    #这是算运
    yun = tmp / 360
    if tmp % 360 != 0:
        yun += 1
    #result[u'运'] = yun

    tmp = tmp % 360
    if tmp == 0:
        tmp = 360

    #这是算世
    shi = tmp / 30
    if tmp % 30 != 0:
        shi += 1
    #result[u'世'] = shi
    shi_yu = tmp % 30
    if shi_yu == 0:
        shi_yu = 30

    gua = yun / 6
    if yun % 6 != 0:
        gua += 1
    gua_value = Hui[(hui - 1) % 12][hui_value][gua - 1]
    tmp = yun % 6
    if tmp == 0:
        tmp = 6
    tmp_gua = Gua(u'坤', u'乾')
    up, down = tmp_gua.get_up_down(gua_value)
    tmp_gua = Gua(up, down)
    #gua_value = tmp_gua.get_name(up,down)
    yungua = tmp_gua.bian_yao(tmp)

    tmp_gua = Gua(yungua[0], yungua[1])
    #print 1+(result[u'世']-1)/2
    shigua = tmp_gua.bian_yao(1 + (shi - 1) / 2)

    for i, value in enumerate(XianTian_60_PeiGuaShu):
        if value == shigua[2:]:
            tmp = i + 1
            break

    nian = None

    if shi % 2 == 0:
        nian = shi_yu + tmp - 1 + 30
    else:
        nian = shi_yu + tmp - 1
    nian = nian % 60
    if nian == 0:
        nian = 60

    niangua = XianTian_60_PeiGuaShu[nian - 1]
    up, down = tmp_gua.get_up_down(niangua)
    niangua = tmp_gua.get_name(up, down)
    nian = shi_yu
    return (hui, yun, shi, nian, yungua, shigua, niangua)
예제 #10
0
def get_Hui(year):
    if year > 0:
        index = 67017+year
    else:
        index = 67018+year
    hui = index/10800
    
    #这是计算hui
    if index % 10800 != 0:
        hui += 1
   
    hui_value = Hui[(hui-1) % 12].keys()[0]
    
    tmp = index % 10800
    if tmp == 0:
        tmp = 10800
    
    #这是算运
    yun = tmp / 360
    if tmp % 360 != 0:
        yun += 1
    #result[u'运'] = yun
    
    tmp = tmp % 360
    if tmp == 0:
        tmp = 360
    
    #这是算世
    shi = tmp/30
    if tmp % 30 != 0:
        shi += 1
    #result[u'世'] = shi
    shi_yu = tmp % 30
    if shi_yu == 0:
        shi_yu = 30
    
    gua = yun/6
    if yun % 6 != 0:
        gua += 1
    gua_value = Hui[(hui-1) % 12][hui_value][gua-1]
    tmp = yun % 6
    if tmp == 0:
        tmp = 6
    tmp_gua = Gua(u'坤',u'乾')
    up,down = tmp_gua.get_up_down(gua_value)
    tmp_gua = Gua(up,down)
    #gua_value = tmp_gua.get_name(up,down)
    yungua = tmp_gua.bian_yao(tmp)
    
    tmp_gua = Gua(yungua[0],yungua[1])
    #print 1+(result[u'世']-1)/2
    shigua = tmp_gua.bian_yao(1+(shi-1)/2)
    
    
    for i,value in enumerate(XianTian_60_PeiGuaShu):
        if value == shigua[2:]:
            tmp = i + 1
            break
    
    nian = None
    
    if shi % 2 == 0:
        nian = shi_yu + tmp -1 +30
    else:
        nian = shi_yu + tmp -1
    nian = nian % 60
    if nian ==0:
        nian = 60
    
    
    niangua = XianTian_60_PeiGuaShu[nian -1]
    up ,down = tmp_gua.get_up_down(niangua)
    niangua = tmp_gua.get_name(up,down)
    nian = shi_yu
    return (hui,yun,shi,nian,yungua,shigua,niangua)