Что нового

[Гороскоп] Таблица для определения знака животного, его цвета и элемента.

damien2008

Осваивающий
Сообщения
178
Репутация
34
AutoIt: 3.3.8.1
Версия: 1.0
Лицензия:

Категория: Строки, Математика, Разное

Описание: Для интересующихся решил сделать рабочий пример определения знака животного, его цвета и элемента (по восточному гороскопу). В принципе схема объясняющая работу тут. Код под катом.

Код/Пример:
Код:
#cs ------------------------------------------------------------------------
	Версия AutoIt:  3.3.8.1
	Автор:          damien2008
	Описание:       Универсальная таблица для определения знака животного, его цвета и элемента (восточный гороскоп).
#ce ------------------------------------------------------------------------

; Код программы

#include <Array.au3>

Global $powers[5] = ['дерево',  'огонь',   'земля',    'металл', 'вода'            ]
Global $colors[5] = ['зеленый', 'красный', 'желтый',   'белый',  'черный'          ]
Global $pets[12]  = ['крыса',   'бык',     'тигр',     'кролик', 'дракон', 'змея', _
		             'лошадь',  'коза',    'обезьяна', 'петух',  'собака', 'свинья']


main(2013)
Exit


Func main($year)
	Local $color = Ceiling(StringRight(($year - YSHIFT($year)) + 1, 1) / 2)
	Local $pet   = ($year - YSHIFT($year)) + 1
	Local $power

	GetPowerColor($color, $power)
	GetPet($pet)

	MsgBox(0, '', 'Год ' & $year & @CRLF & _
	              $color & ' ' & $pet & ', ' & $power)
	;ConsoleWrite($color & ' ' & $pet & ', ' & $power & @CRLF)
EndFunc   ;==>main



Func GetPowerColor(ByRef $color, ByRef $power)
	If _StringInSet($color, '0,5') Then
		$power = $powers[4]
		$color = $colors[4]
	Else
		$power = $powers[$color - 1]
		$color = $colors[$color - 1]
	EndIf
	Return
EndFunc   ;==>GetColorPower

Func GetPet(ByRef $pet)
	If $pet <= 12 Then
		$pet = $pets[$pet - 1]
	Else
		While 1
			If $pet <= 12 Then ExitLoop
			$pet -= 12
		WEnd
		$pet = $pets[$pet - 1]
	EndIf
	Return $pet
EndFunc   ;==>GetPet

Func YSHIFT($sYear, $rest = 0)
	While 1
		$rest = Mod($sYear, 60)
		If $rest = 4 Then ExitLoop
		$sYear -= 1
	WEnd
	Return $sYear
EndFunc   ;==>YSHIFT

Func _StringInSet($Value, $List, $Delim = ',')
	;by MHz @ http://www.autoitscript.com/forum/topic/12255-udf-stringinset/#entry84375
    Dim $ListArray = StringSplit($List, $Delim)
	If @error Then Return 0
    For $i = 1 To $ListArray[0]
        If $Value = $ListArray[$i] Then Return 1
    Next
EndFunc   ;==>_StringInSet

Снимок: копия с сайта


История версий:
1.0

Источник: autoit-script.ru
Автор(ы): damien2008
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Хорошо, для того чтобы раз в год запускать=)

Мне кажется или от левого верхнего угла в правый нижний идет какая то закономерность циферок? :smile:
 
Верх