1 /// <summary> 2 /// 根据数字确定八卦的上下卦,以及爻 3 /// </summary> 4 /// <param name="numbs"></param> 5 /// <returns></returns> 6 private static List<int> ComputerEightDiagrams(List<int> numbs) 7 { 8 List<int> dias = new List<int>(); 9 10 for (int i = 0; i < numbs.Count; i++) 11 { 12 if (i != numbs.Count - 1) 13 { 14 var m = numbs[i] % 8; 15 16 if (m == 0) m = 8; 17 18 dias.Add(m); 19 20 } 21 else 22 { 23 var n = numbs[i] % 6; 24 25 if (n == 0) n = 6; 26 27 dias.Add(n); 28 } 29 } 30 return dias; 31 }
根据用户的输入确定是哪一卦,哪一爻。
下面的代码是如何在控制台打印八卦图:
1 private static void Print(List<int> diagrams) 2 { 3 //存储 4 string[] keys = { "111", "011", "101", "001", "110", "010", "100", "000" }; 5 6 var up = diagrams[1]; 7 var down = diagrams[0]; 8 9 var upStr = keys[up - 1]; 10 var downStr = keys[down - 1]; 11 12 n = 0; 13 PrintYao(upStr.ToCharArray(), diagrams[2]); 14 PrintYao(downStr.ToCharArray(), diagrams[2]); 15 16 Console.ResetColor(); 17 } 18 19 private static int n = 0; 20 private static void PrintYao(char[] chars, int yao) 21 { 22 bool isYao=false; 23 24 foreach (var item in chars) 25 { 26 n++; 27 28 Console.WriteLine(""); 29 30 isYao = n == 6 - yao + 1; 31 32 if (item == '1') 33 { 34 Console.BackgroundColor =isYao? ConsoleColor.Yellow:ConsoleColor.Blue; 35 Console.WriteLine(" "); 36 } 37 else if (item == '0') 38 { 39 Console.BackgroundColor = isYao ? ConsoleColor.Yellow : ConsoleColor.DarkRed; 40 41 var color = Console.BackgroundColor; 42 43 Console.Write(" "); 44 45 Console.ResetColor(); 46 Console.Write(" "); 47 48 Console.BackgroundColor = color; 49 Console.Write(" "); 50 Console.Write(" "); 51 } 52 } 53 }
diagrams,存储了上卦和下卦的顺序,其中keys数组中存储了八卦的爻信息,1:阳爻,0:阴爻。比如 111代表乾卦。
此程序运行效果如下:
高亮:代表算出的爻。下载完整的代码:https://github.com/wangqiang3311/mywork