page contents

如何用java语言编写爱心源表白代码

如何用java语言编写爱心源表白代码?六星小编来教你!

如何用java语言编写爱心源表白代码?

谁说程序员不能浪漫

单纯的心

attachments-2021-11-R6SOD1CT619da47b8b039.png双心

attachments-2021-11-yrbr7x6Z619da4837e332.png

加些点缀

代码所用方程:

心:((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;

}

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-5XoEWG5t62b133d5a56be.jpeg

  • 发表于 2021-11-24 10:37
  • 阅读 ( 3362 )
  • 分类:Java开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章