新手初学java 尝试编程绘画太极图

一位新手通过学习java基础知识,尝试编程实现中国古老的太极图。经过思考和实践,成功画出太极图,包括5个圆构成的黑白双鱼图案。在编程过程中,遇到如何描绘黑鱼黑色部分的挑战,通过判断圆上点的位置来实现。最终展示了编程绘制的太极图效果,并附带了java代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我是个新手,对java理解还不深入,看了些java方面的基础视频,自己尝试着把中国的古老的太极图给画出来,经过一些思考和动手,终于把太极图给绘画出来。

记得以前某位高手也画过类似的太极图,不过当时自己才疏学浅,实在看不懂,也没心思看。这次我要自己独立地把太极图给画出来,

个人编程习惯,开始画的草图:

欣赏:从这幅双鱼太极图就可以看出中国的古老文化的博大精深,简单的几笔,黑与白的交会,却勾勒出了如此美妙的图案。

结构剖析:整体结构比较简单,共可分为5个圆,其中有两个圆是半圆,由黑白两种颜色组成。

遇到的困难:如何把黑鱼的的黑色部分画出?

我的思路:先把黑鱼的黑色部分的所有点,通过圆的方程,在圆内还是在圆外,if语句进行判断,如果符合要求,即可。

最后整体效果图:

附java代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TaiJi extends JFrame {


/**
* @param args
*/
MyJPanel mp=null;
public static void main(String[] args) {
// TODO Auto-generated method stub


TaiJi taiji=new TaiJi();
}
public TaiJi()
{
mp=new MyJPanel();
this.add(mp);
this.setSize(500,500);
this.setLocation(400, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}


}
class MyJPanel extends JPanel 
{
//黑鱼身的点的坐标
int x,y;
public MyJPanel()
{
}
/**
* 画出黑鱼的黑色部分
* 得到鱼身的点的坐标范围
* 并画出所有点
* @param g
*/
public void drawBlack(Graphics g)
{
for(int x=150;x<300;x++)
{
for(int y=0;y<300;y++)
{
if(x>=150)
{
if((x-150)*(x-150)+(y-150)*(y-150)<=150*150)
{
if((x-150)*(x-150)+(y-75)*(y-75)>=25*25)
{
if((x-150)*(x-150)+(y-225)*(y-225)>=75*75)
{
g.drawOval(x, y, 1, 1);
}
}
}
}
}
}
}
/**
* 作画
*/
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.black);
//黑鱼头部
g.fillOval(75, 0, 150, 150);
g.setColor(Color.white);
//黑鱼眼
g.fillOval(125, 300/4-25, 50, 50);
g.setColor(Color.black);
//白鱼眼
g.fillOval(125, 300/4*3-25, 50, 50);
//调用画黑鱼的函数
this.drawBlack(g);
g.setColor(Color.white);
g.drawOval(75, 150, 150, 150);
g.setColor(Color.black);
//外缘
g.drawOval(0, 0, 300, 300);
}


}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值