我正在参加中秋创意投稿大赛,详情请看:中秋创意投稿大赛
思路
- 输出一个月亮
- 清屏
- 换一个颜色输出一个月亮
- 清屏
- 换一个颜色输出一个月亮
- 达到效果
难点
java 如何清空控制台????
代码
一、清空控制台
-
思路
- 在c++ 中
window:system("cls");
mac/linux:system("clear");
可以直接清空 - 可以通过 JNI 实现 java 调用 C++/C 的dll
- 声明一个 native
- 将class通过javah编译成 xx.h
- 编写c++项目
- 生成 dll
- 将 dll copy到自己的jdk\jre\lib的目录下
- java代码调用
- 在c++ 中
-
声明一个 native
public class Cls { /** * 声明本地方法 */ public native void clear(); static { //加载动态链接库DLL //必须保证加载的 xxxx.dll 或者 xxx.dylib 在你jdk\jre\lib下目录 System.loadLibrary("cls"); } }
-
将class通过javah编译成 xx.h
-
编写c++项目
-
生成 dll
ctrl/command + F9
-
将 dll copy到 自己的 jdk\jre\lib 的目录下
-
java 调用
-
效果
二、绘制月亮
public class zhongqiu {
public static void main(String[] args) throws Exception {
for (int i = 31; i <= 36; i++) {
//清空控制台
new Cls().clear();
//输出月亮
yueLiang(i);
//慢一点,不然会闪
Thread.sleep(300);
//循环换颜色
if (i == 36) {
i = 31;
}
}
}
//输出月亮
public static void yueLiang(int c) {
int r = 15;
double R = 2 * r;
for (int i = 0; i <= R; i += 2) {
double y = Math.round(Math.sqrt(r * r - Math.pow(r - i, 2)));
double x = r - y;
int b = i == 0 || R - i == 0 ? 4 : 0;
for (int j = 0; j < x + 2 * y + b; j++) {
System.out.print(" ");
}
int yl = 6;
if (i == 0 || R - i == 0) {
yl = 2;
} else if (i == 1 || R - i == 1) {
yl = 4;
} else if (i == 2 || R - i == 2) {
yl = 5;
}
for (int j = 0; j < yl; j++) {
System.out.print("\033[" + c + "m*\033[m");
}
System.out.println("");
}
}
}
效果
注意事项:不能在idea运行,要去终端运行才有效果