java编写周易demo

0x00

疫情期间,闲来无事,在家看周易,对于一般人来说,周易的组合不好记住,比如乾卦+坤卦为否挂等,试一试应该可以用程序的实现方式来展现。(此程序为2月份在家无聊编写,写的不好请各位看官勿喷~毕竟不是专业的开发人员)

0x01

首先得了解八卦的构成。
卦象有三爻组成,爻又分为阳爻(—)和阴爻(- -)。还有八卦的口诀“乾三连,坤六断,震仰盂,艮覆碗,离中虚,坎中满,兑上缺,巽下断”。
此图为百度网图,如有侵权请告知,删除
还有就是64卦象,是八卦的两两组合,也有歌诀,但是太长就不写了,回头看代码吧。
ok,到此为止,基本的知识已经了解的差不多了。
使用java 代码,swing画GUI,先看下效果图:
周易 demo

以后有时间在把各个卦象的说明写下。

0x03

贴代码

import javax.swing.*;
import java.awt.*;

public class godwill {
   
    public static void creatGUI(){
   
        Myframe frame = new Myframe("周易 Demo");
        frame.setBounds(((Toolkit.getDefaultToolkit().getScreenSize().width)/2)-300, ((Toolkit.getDefaultToolkit().getScreenSize().height)/2)-300,600,600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setSize(500,400);
        frame.setVisible(true);
    }

    public static void main(String[] args){
   
        SwingUtilities.invokeLater(new Runnable() {
   
            @Override
            public void run() {
   
                creatGUI();
            }
        });
    }
}

/*@author by pingl
date: 2020年2月
疫情期间闲来无事,研究一下周易八卦,发现可以用计算机的形式解析八卦
乾三连,坤六断,震仰盂,艮覆碗
离中虚,坎中满,兑上缺,巽下断
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentListener;

public class Myframe extends JFrame {
   
    public Myframe(String title){
   
        super(title);

        String[][] hexagrams = {
   
                {
   "乾","履","同人","无妄","姤","讼","遯","否"},
                {
   "夬","兑","革","随","大过","困","咸","萃"},
                {
   "大有","睽","离","噬嗑","鼎","未济","旅","晋"},
                {
   "大壮","归妹","丰","震","恒","解","小过","豫"},
                {
   "小畜","中孚","家人","益","巽","涣","渐","观"},
                {
   "需","节","既济","屯","井","坎","蹇","比"},
                {
   "大畜","损","贲","颐","蛊","蒙","艮","剥"},
                {
   "泰","临","明夷","复","升","师","谦","坤"}};


        //不使用布局器
        Container root = this.getContentPane();
        root.setLayout(null);

       //由于没有布局器,所以默认的,子控件无法显示
        JLabel gua1 = new ColorfulLabel("第一卦",Color.white);
        JLabel name1 = new ColorfulLabel("卦名",Color.white);
        JLabel gau2 = new ColorfulLabel("第二卦",Color.white);
        JLabel name2 = new ColorfulLabel("卦名",Color.white);
        JLabel name3 = new ColorfulLabel("综合挂",Color.white);


        //JTextField[] text = null;
        JTextField textField
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
周易算法是一种古老的占卜算法,可以用来预测未来的运势。以下是一个简单的 Java 实现: ```java import java.util.Random; public class Zhouyi { private static final Random random = new Random(); // 六十四卦的名称 private static final String[] GUA_NAMES = { "乾", "坤", "屯", "蒙", "需", "讼", "师", "比", "小畜", "履", "泰", "否", "同人", "大有", "谦", "豫", "随", "蛊", "临", "观", "噬嗑", "贲", "剥", "复", "无妄", "大畜", "颐", "大过", "坎", "离", "咸", "恒", "遯", "大壮", "晋", "明夷", "家人", "睽", "蹇", "解", "损", "益", "夬", "姤", "萃", "升", "困", "井", "革", "鼎", "震", "艮", "渐", "归妹", "丰", "旅", "巽", "兑", "涣", "节", "中孚", "小过", "既济", "未济", }; /** * 随机生成一个六十四卦的名称 */ public static String generateGuaName() { return GUA_NAMES[random.nextInt(64)]; } /** * 随机生成一组爻的结果:阳爻为 9,阴爻为 6 */ public static int[] generateYao() { int[] yao = new int[6]; for (int i = 0; i < 6; i++) { yao[i] = random.nextBoolean() ? 9 : 6; } return yao; } /** * 根据一组爻的结果,返回对应的卦的名称 */ public static String getYaoGuaName(int[] yao) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 6; i++) { sb.append(yao[i]); } int index = Integer.parseInt(sb.toString(), 2); return GUA_NAMES[index]; } public static void main(String[] args) { int[] yao1 = generateYao(); int[] yao2 = generateYao(); int[] yao3 = generateYao(); String gua1 = getYaoGuaName(yao1); String gua2 = getYaoGuaName(yao2); String gua3 = getYaoGuaName(yao3); System.out.println("第一爻:" + yao1[0] + ",第二爻:" + yao2[0] + ",第三爻:" + yao3[0]); System.out.println("卦象为:" + gua1 + "," + gua2 + "," + gua3); } } ``` 这个实现中,我们随机生成了三组爻,然后根据每组爻的结果来推算出对应的卦的名称。具体的推算方法可以参考周易卜卦的知识,这里不再赘述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值