大一软件工程在读,java萌新一只,第一次写博客,技术很菜勿喷。如有错误欢迎指出!
这个小程序是给朋友的生日礼物,耗时半天,实际写起来碰到的知识点和困难还挺多,故发出来分享一下。
可设置画布尺寸,添加图形元件,设置元件坐标和效果。元件闪烁效果,横向滚动效果。
图形元件父类
public class Shape implements IShape{ String shape[];//图形形状字符串 String shape_flicker[];//闪烁形状字符串 int height,width;//高、宽 int x,y;//位置坐标 String id;//元件id,用于制作动画效果时获取元件 public Shape(int x,int y,String id) {//构造方法初始化 this.x=x;this.y=y;this.id=id; } public Shape(String id) { this(0,0,id); } }
图形绘画工具类
import java.util.HashMap; public class Shapes {//存放图形元件 int width,height;//画布大小 public static String canvas[];//画布图像字符串 HashMapShapeMap=new HashMap ();//图形元件容器,添加到画布的图形都会存放在这 public Shapes(int width ,int height) {//初始化空白画布 this.width=width; this.height=height; canvas=new String[height]; for(int h=0;h height-1) { System.out.println("超出画布边界!!"); return; } if(myShape.width+px>width-1) { System.out.println("超出画布边界!!"); return; } ShapeMap.put(myShape.id,myShape);//将元件添加到容器中 for(String line :myShape.shape) { char Line[]=canvas[py+count].toCharArray(); for(int i=px;i
动画类
import java.io.IOException; public class Animation {//用于动画效果 long timer;//计时器 int rolled;//滚动计数器 private Shapes shapes;//图形工具 public Animation() { timer=0; rolled=0; init(); } public void flicker(String id,int interval) {//闪烁效果,id为元件的id,interval是闪烁间隔 Shape myShape=shapes.ShapeMap.get(id); String shape_flicker[]=myShape.shape.clone(); //闪烁图像 for(int i=0;i=px&&i<=to&&i 300) { timer=0; } cls(); if(timer<100) { flicker("HB1",5); }else { roll("HB1",0,110,1); } flicker("Nt1",10); shapes.drawCanvas(); timer++; Thread.sleep(sleep); System.out.println(timer); } } public static void cls() throws IOException, InterruptedException//清屏方法(ide中无效) { new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); // 清屏命令 } }
主类
import java.io.IOException; public class Main {//启动动画 public static void main(String args[]) throws InterruptedException, IOException { Animation animator=new Animation(); animator.play(30); } }
具体图形子类(Happy Birthday文字)
public class Shape_Text extends Shape{//继承图形父类 String s[]= {//字符图像 "==================================================================================================", "= O O OO OOOO OOOO O O OOOOO OOOOO OOOOOO OOOOOO O O OOOOO OO O O =", "= O O O O O O O O O O O O O O O OO O O O O O O O O =", "= OOOOOO O O O O O O O O O O O OOOOOO OO OOOOOO O O O O O O =", "= O O OOOOOO OOOOO OOOOO OOOO OOOOO O O O OO O O O O OOOOOO OOOO =", "= O O O O O O O O O O O O OO O O O O O O O =", "= O O O O O O O OOOOOO OOOOO O O OO O O OOOOO O O O =", "==================================================================================================" }; public Shape_Text(int i, int j,String id) { super(i,j,id); this.shape=s; this.height=shape.length; this.width=shape[0].length(); } public Shape_Text(String id) { this(0,0,id); } }
到此这篇关于java小程序之控制台字符动画实现的文章就介绍到这了,更多相关java控制台字符动画内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!