java实现心形图案|桃心_程序员的浪漫--java打印心形图案
原标题:程序员的浪漫--java打印心形图案
谁说程序员不能浪漫
单纯的心
双心
加些点缀
代码所用方程:
心:((0.05*x)^2 + (0.1*y)^2-1)^3-(0.05*x)^2 * (0.1*y)^3 < = 0
箭:4*y-x == 0
原理:根据方程,打印出空格或者文字
注意:
本程序使用idea编写时打印,如果用其他ide或者命令行中可能会变形
使用中根据汉字或者英文需要进行微调
代码不够简洁,抱歉
代码:
public static void main(String[] args) {
//单心
heart(15,0.9,"love");
//双心
heartTwo(15,0.9,"爱","梁山伯","祝英台");
//点缀
heartTwoWithXK(15,0.9,"爱","梁山伯","祝英台");
}
private static void heart(int r,double size,String req){
size=1/(1.5*r*size);
StringBuilder sb=new StringBuilder();
for (int y = r; y > -r; y--,sb.append("\n"))
for (int x = -2*r; x < 2*r; x++ ) {
char msg=(req + req).charAt((x - y) % req.length() + req.length());
sb.append((inHeart(size,x,y)?msg+ " " : " "));
}
System.err.println(sb.toString());
}
private static void heartTwo(int r,double size,String center,String left,String right){
size=1/(1.5*r*size);
StringBuilder sb=new StringBuilder();
for (int y = r; y > -r; y--,sb.append("\n"))
for (int x = -2*r; x <4*r; x++ ) {
boolean isLeft=inHeart(size,x,y);
boolean isRight=inHeart(size,x-25,y-3);
//双空格
String req=null;
if(isLeft && isRight) req=center;
else if(isLeft) req=left;
else if (isRight) req=right;
if(req!=null) sb.append((req + req).charAt((x - y) % req.length() + req.length()));
else sb.append(" ");//双空格
}
System.err.println(sb.toString());
}
private static void heartTwoWithXK(int r,double size,String center,String left,String right){
size=1/(1.5*r*size);
StringBuilder sb=new StringBuilder();
for (int y = r; y >=-r; y--,sb.append("\n"))
for (int x = -2*r; x <= 4*r; x++ ) {
boolean isLeft=inHeart(size,x,y+3);
boolean isRight=inHeart(size,x-25,y);
//双空格
String req=null;
String w="";
if(isLeft && isRight) req=center;
else if(isLeft) req=left;
else if (isRight) req=right;
else if((y==-r || y==r)) {
if (x < 3 * r - 7) {
req = "♥";
w = " ";
}
}
else if(x==4*r || x==-2*r || line(x,y+3)) req="♥";
if(req!=null) sb.append((req + req).charAt((x - y) % req.length() + req.length()) + w);
else sb.append(" ");//双空格
}
System.err.println(sb.toString());
}
private static boolean inHeart(double size,int x,int y){
return Math.pow(Math.pow(x * size, 2) + Math.pow(y * 2*size, 2) - 1, 3) - Math.pow(x * size, 2) * Math.pow(y * 2*size, 3) <= 0;
}
private static boolean line(int x,int y){
return 4*y-x == 0;
}
上次发表由于某些原因被删除,新增功能后重新补发
Java新人自学交流群:202250194返回搜狐,查看更多
责任编辑:
java实现心形图案|桃心_程序员的浪漫--java打印心形图案相关推荐
- java程序员的浪漫代码_专属于程序员的浪漫-Java输出动态闪图iloveyou
代码测试可用,运行结果非常辣眼睛,有种二十一世纪初流行于广大中小学生之间的失落非主流的感觉! 还是比较有参考价值的,获取当前日期时间,日期类格式化,图形界面的开发等. java awt实现小程序动态闪 ...
- i love java怎么写编程_专属于程序员的浪漫-Java输出动态闪图iloveyou
代码测试可用使用的,运行结果非常辣眼睛,有种二十一世纪初流行于广大中小学生之间的失落非主流的感觉! 还是比较有参考网上卖的,获取当前日期时间,日期类格式化,图形界面的开发等. java awt实现小程 ...
- python 程序员专属情话_程序员最浪漫情话
程序员往往城还没攻下来,我们的头发就先掉下来! 程序员最浪漫情话: 段子一 "等我敲完这行代码,就和你离婚!" 他头也不抬的说 听完之后,她心里暖暖的 她想,这可能是最长情的承诺. ...
- object转成实体对象_程序员的浪漫,new一个对象
程序员都喜欢 面向对象编程,但如果你没有对象怎么办?当然是 new 一个对象出来. 面向对象编程 是一种程序设计思想,而不是真正的面向你的对象去编程.如果你真的这么做了,恭喜你获得:你爱我还是爱电脑? ...
- java压测请求线程数_程序员撕开京东 618 大促压测的另一面 | 原力计划
作者 | 天涯泪小武 责编 | 王晓曼 出品 | CSDN博客 前天618大促演练进行了全链路压测,在此之前刚好我的热key探测框架也已经上线灰度一周了,小范围上线了几千台服务器,每秒大概接收几千个k ...
- 平安java面试流程_程序员:平安Java岗面试耗尽了我毕生所学,想了想,还是去阿里吧...
之前有个朋友给我发来了一份平安Java中级开发的面试题,我也不知道是否靠谱哈!但是霸哥坚决认为...这绝对不是Java中级工程师的面试,不怕Java程序员造反啊? 后面我把这个文件发给了另一个参加了几 ...
- el-date-picker设置默认日期_程序员必备:Java 日期处理的十个坑
前言 整理了Java日期处理的十个坑,希望对大家有帮助. 一.用Calendar设置时间的坑 反例: Calendar c = Calendar.getInstance(); c.set(Calend ...
- java开发文档怎么写_程序员该不该写技术文档,怎么写文档,易懂又能提升自己...
最近公司项目的调用量突然涨了一大波,很多系统都纷纷扛不住了,于是需要对系统进行优化,系统优化的第一步,便是梳理业务! 在这个过程中,经常出现了这样一些情况,发现数据库的某些字段,没有注释,也没有一定的 ...
- java写一个简单的浪漫代码_程序员的浪漫弹窗表白,圣诞节给Ta惊喜吧(附源码,简单易学哦)...
不要以为程序员都是木讷的,浪漫起来也会让很多妹子心动的.而程序员的表白方式也很不一般,通过一堆代码,无限释放浪漫.今天教给大家通过改写脚本语言,利用弹窗可充分自由发挥,用来表白或者恶搞都是不错的选择. ...
最新文章
- java和打印机通信,通过Windows驱动程序与热敏打印机进行双向通信
- svm学习之线性部分总结
- JS判断鼠标从哪个方向进入DIV容器
- 使用IntelliJ IDEA的原因
- react学习(5)----通过设置初始值控制页面render渲染
- 多线程之多生产多消费者
- jsp连接mysql----------第一篇技术类文章
- Python一秒搭建ftp服务器,帮助你在局域网共享文件
- RHEL7.0时间同步设置
- IE浏览器无法通过ftp:\\192.168.xxx.xxx连接ftp服务器
- python汉化版编辑器_Thonny(Python编辑器)
- ERP采购管理 华夏
- 华为月薪11万招前端工程师,看到要求我傻眼了!
- 抖音APP终极瘦身方案
- iTunes下载的ipa文件的目录位置
- oracle 分区表,分区索引
- libusb,libusbk,winusb的区别
- IE使用ntko插件,查看文件提示“文件存取错误”
- 怎么关闭自动启动的屏幕键盘
- 什么是网关模块 工业物联网以太网网关WiFi模块的选型
热门文章
- php 微信时间,微信开发中如何进行时间转换代码实例介绍
- Activiti(web-based)
- 由百事引起的、关于五月天的 胡言乱语
- 计算机毕业设计asp.net电脑彩票销售管理系统VS开发sqlserver数据库web结构c#编程计算机网页源码项目
- vue 数据库 登录界面_Vue学习之路之登录注册
- InDesign 教程如何覆盖母版页项目?
- Java之格林威治时间,字符串格式时间
- NOIP 2017 普及组 棋盘 chess
- css outline是什么意思,用法
- 子曰:“吾十有五而志于学.......