【圣诞快乐】如何用代码画一颗圣诞树?

文章目录

    • 一、前言
    • 二、创意角度
    • 三、java swing版 效果展示
    • 四、java swing版 实现步骤&代码
    • 五、springboot项目banner版 效果展示
    • 六、springboot项目banner版 实现步骤
    • 七、 linux shell界面打印版 效果展示
    • 八、 linux shell界面打印版 实现步骤

一、前言

一年一度的圣诞节来了 让我们一起动动小手 给平凡而普通的生活 添加一笔色彩吧
看看谁敢说程序员不懂浪漫? 程序员一天能new 1024个对象(GC 此时有话要说)

二、创意角度

从代码,项目标签,linux等多方面 画一颗圣诞树,让圣诞变得花里胡哨!

三、java swing版 效果展示

(播放有音乐)
在这里插入图片描述

四、java swing版 实现步骤&代码

(基于jdk11)

  1. main方法
package view;public class Main {// 程序入口,运行此处public static void main(String[] args) {try {new MyFrame();} catch (Exception e) {e.printStackTrace();}}
}
  1. JFrame方法
package view;import javax.swing.*;public class MyFrame extends JFrame {MyPanel p;MyFrame() throws Exception {p = new MyPanel();add(p);setBounds(400, 200, 800, 800);setVisible(true);validate();setDefaultCloseOperation(MyFrame.EXIT_ON_CLOSE);}
}
  1. Jpanel方法(核心实现)
package view;import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;public class MyPanel extends JPanel implements ActionListener {// 图片、音乐路径 音乐推荐wav格式 static final String MUSIC = "src/resouce/music.wav";static final String STAR_SHINE = "src/resouce/STAR_SHINE.png";static final String STAR_NOT_SHINE = "src/resouce/STAR_NOT_SHINE.png";static final String ON = "src/resouce/ON.png";static final String OFF = "src/resouce/OFF.png";int x, y;JButton onOff;Timer time;boolean flag;boolean color;File file = new File(MUSIC);URL url = null;URI uri = null;//   since jdk9 : Clip (jdk9 before : AudioClip)Clip clip = null;AudioInputStream ais = null;MyPanel() throws Exception {setLayout(null);ImageIcon icon = new ImageIcon(OFF);icon.setImage(icon.getImage().getScaledInstance(50, 50, 0));onOff = new JButton();onOff.addActionListener(this);onOff.setIcon(icon);onOff.setBorder(null);onOff.setContentAreaFilled(false);onOff.setBounds(0, 0, 50, 50);add(onOff);flag = true;color = true;time = new Timer(300, this);time.stop();try {uri = file.toURI();url = uri.toURL();} catch (MalformedURLException e1) {System.out.println(e1);}clip = AudioSystem.getClip();ais = AudioSystem.getAudioInputStream(file);clip.open(ais);}public void paintComponent(Graphics g) {x = 380;y = 100;if (color) {ImageIcon image1 = new ImageIcon(STAR_NOT_SHINE);g.drawImage(image1.getImage(), x - 3, y - 25, 28, 26, null);} else {ImageIcon image1 = new ImageIcon(STAR_SHINE);g.drawImage(image1.getImage(), x - 3, y - 25, 25, 25, null);}Color red = new Color(255, 0, 0);Color yellow = new Color(255, 241, 0);drawTree(1, 4, g);if (color) {drawDecoration(x + 22, y - 44, 6, yellow, g);drawDecoration(x, y - 22, 8, red, g);} else {drawDecoration(x + 22, y - 44, 6, red, g);drawDecoration(x, y - 22, 8, yellow, g);}x = 380 - 2 * 22;drawTree(3, 6, g);if (color) {drawDecoration(x + 22, y - 44, 10, yellow, g);drawDecoration(x, y - 22, 12, red, g);} else {drawDecoration(x + 22, y - 44, 10, red, g);drawDecoration(x, y - 22, 12, yellow, g);}x = 380 - 4 * 22;drawTree(5, 8, g);if (color) {drawDecoration(x + 22, y - 44, 14, yellow, g);drawDecoration(x, y - 22, 16, red, g);} else {drawDecoration(x + 22, y - 44, 14, red, g);drawDecoration(x, y - 22, 16, yellow, g);}x = 380 - 1 * 22;drwaRoot(g);}void drawTree(int from, int to, Graphics g) {Color c = new Color(9, 124, 37);g.setColor(c);for (int i = from; i <= to; i++) {for (int j = 0; j < (i * 2 - 1); j++) {g.fillRect(x, y, 20, 20);x += 22;}x = 380 - i * 22;y += 22;}}void drawDecoration(int tx, int ty, int num, Color c, Graphics g) {g.setColor(c);g.fillRoundRect(tx, ty, 18, 18, 18, 18);g.fillRoundRect(tx + num * 22, ty, 18, 18, 18, 18);}void drwaRoot(Graphics g) {Color c = new Color(131, 78, 0);g.setColor(c);for (int i = 0; i < 4; i++) {for (int j = 0; j < 3; j++) {g.fillRect(x, y, 20, 20);x += 22;}x = 380 - 1 * 22;y += 22;}}public void actionPerformed(ActionEvent e) {if (e.getSource() == onOff) {if (flag) {ImageIcon icon = new ImageIcon(ON);icon.setImage(icon.getImage().getScaledInstance(50, 50, 0));onOff.setIcon(icon);try {clip.start();} catch (Exception exc) {exc.printStackTrace();}flag = false;clip.setLoopPoints(0, -1);time.restart();} else {ImageIcon icon = new ImageIcon(OFF);icon.setImage(icon.getImage().getScaledInstance(50, 50, 0));onOff.setIcon(icon);flag = true;time.stop();clip.stop();}} else if (e.getSource() == time) {repaint();color = !color;}}
}
  1. 目录结构、资源路径:
    在这里插入图片描述
    音乐推荐wav格式,且开关图片、星星图片、音乐可以自由替换 ,替换后注意文件名保持一致 或在代码里面将相应文件名更改。

  2. 静态资源、代码地址:
    https://github.com/qiuhuanhen/christmasTree

五、springboot项目banner版 效果展示

想想你把这个效果提交到git dev分支之后,同事启动项目时会不会觉得小惊喜呢
在这里插入图片描述

六、springboot项目banner版 实现步骤

  1. 在resources目录下新建banner.txt文件 文件名必须是这个,这是springboot的机制,根据名字读取。(和我们的application.yml处于同级目录)

  2. 将符号文字复制进去,启动项目即可。同样的 符号文字也是可以随意替换的 我们可以在网上找更好看的符号 或者动手能力强的同学可以自己设计

∵∴∵︿︿︿︿︿︿..∴∵∴∵∴∵∴☆∵∴∵
∴∵/     \\∵∴聖∵∴∵/\∴∵∴
∵/       \\∵∴∵∴/ .\∵∴
╭~~~~~~~~~╮○誕∴-/ .  \∵
╰~~~~~~~~~╯∵∴/ .  ★ \
/         \∴快○-- ̄/. \ ̄○
|  ∩   ∩  ---|∵∴∵/★ . \∵
|       ---|∴樂-/    . \
\    ﹏    -/∴∵--○ ̄/ ̄ ̄\ ̄○
∵\       --/∴∵!∴∵|  |∵∴
∴∵ ̄ ̄ ̄ ̄ ̄ ̄ ̄∵∴∵--∴∵∴╰--╯∵∴
〓〓〓◇◇◇〓〓〓○○○〓〓〓☆☆☆〓〓〓〓

七、 linux shell界面打印版 效果展示

在这里插入图片描述

八、 linux shell界面打印版 实现步骤

  1. 我们首先找到张圣诞树图片
    在这里插入图片描述

  2. 图片需要转换成pnm格式 可以利用在线转换网站或者工具进行转换 , 转换后的文件名字 重命名 例如叫 merry.pnm

  3. 将图片上传至linux,

  4. centos使用ascillview merry.pnm命令
    Ubuntu使用aview merry.pnm命令

注: 使用命令前需要先安装aa-lib,aview,ImageMagick等环境 ,
具体教程可以在我博客主页搜索 : 如何实现将图片用代码打印出来

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/59437.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美美的圣诞树画出来-CoCube

2022年圣诞节到来啦&#xff0c;很高兴这次我们又能一起度过~ CSDN诚邀各位技术er分享关于圣诞节的各种技术创意&#xff0c;展现你与众不同的精彩&#xff01;参与本次投稿即可获得【话题达人】勋章【圣诞快乐】定制勋章&#xff08;1年1次&#xff0c;错过要等下一年喔&#…

圣诞树【Python版】小刘教你画圣诞树

平台准备&#xff1a; 首先安装Python及其编写平台&#xff1a; 此处小刘选择的是Python3.6版本以及PyCharm编写平台 其次安装Python所需的相关包“turtle”以及“random” Python相关包安装&#xff1a; 首先查看Python是否安装&#xff1a; 打开PyCharm在Terminal窗口输…

Python画圣诞树和烟花源代码

最近一直想让女朋友开心开心&#xff0c;眼看就到圣诞了&#xff0c;就想着来个不一样的&#xff0c;给她画个圣诞树玩一玩&#xff0c;也算是自己亲手做的&#xff0c;用了心思了。看了关于画圣诞树的很多博客&#xff0c;人才确实很多啊&#xff0c;鄙人不才&#xff0c;也加…

用python画圣诞树的代码

如何用python画一个圣诞树呢&#xff1f; 一、最简单的绘制圣诞树 代码也特别简单&#xff1a; # 最简单的绘制圣诞树height 5 # 树的高度 stars 1 # 树的雪花数&#xff0c;初始为1 for i in range(height): #…

【送给她的圣诞礼物】尝试用turtle画圣诞树

尝试用turtle画圣诞树 前言开发环境步骤一&#xff1a;加载bgm所念皆星河步骤二&#xff1a;窗口界面初始化步骤三&#xff1a;turtle初始化步骤四&#xff1a;画树的外轮廓步骤五&#xff1a;画雪花步骤六&#xff1a;画花朵步骤七&#xff1a;画五角星开源 前言 今天就是平安…

用 Python 画圣诞树的 N 种玩法

作者 | 写代码的明哥 来源 | Pyhton编程时光 马上就是圣诞节了&#xff0c;先提前祝大家圣诞快乐&#xff01; 今天来给大家分享一波如何使用 Python 来画一颗圣诞节树&#xff0c;包含多种版本&#xff0c;从平民版到豪华版&#xff0c;像极了一个程度员从入门到高级秃头程序员…

圣诞节到了,教大家用 Python 绘制几棵圣诞树~

大家好&#xff0c;我是大飞 今天是圣诞节&#xff0c;先在这里祝大家圣诞节快乐~~&#xff0c;用英语来表达就是 Merry Christmas ~~&#xff0c; 为了贴合这个氛围&#xff0c;今天分享五种用 Python 绘制圣诞树的方法&#xff0c;从基础到高级&#xff0c;效果也不断攀升分…

【圣诞来了】3分钟教你用java画一颗彩色圣诞树,送给别人作为圣诞礼物吧

⭐️写在前面 这里是温文艾尔の学习之路&#x1f44d;如果对你有帮助&#xff0c;给博主一个免费的点赞以示鼓励把QAQ&#x1f44b;博客主页&#x1f389; 温文艾尔の学习小屋⭐️更多文章&#x1f468;‍&#x1f393;请关注温文艾尔主页&#x1f345;文章发布日期&#xff1a…

如何用python画圣诞树(附圣诞树代码)

python圣诞树代码 1、简单的绘制圣诞树 新建tree1.py或者直接输入下面代码运行 #声明树的高度 height 5 #树的雪花数&#xff0c;初始为1 stars 1 #以数的高度作为循环次数 for i in range(height): print((’ ’ * (height - i)) (’*’ * stars)) stars 2 #输…

【AI金融】Can ChatGPT Forecast Stock Price Movements? Return Predictability and Large Language Models

titleChatGPT能够预测股票走势吗&#xff1f;回到可预测性与大预言模型出版时间2023年4月6日doiarXiv:2304.07619v3 [q-fin.ST]期刊arXiv类别Null关键词Statistical Finance (q-fin.ST); Computation and Language (cs.CL)文章链接https://arxiv.org/abs/2304.07619 ChatGPT可以…

AIGC—— 内容生产力革命的起点

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.AIGC 1.什么是AIGC? 2.AIGC有哪些优势与挑战 &#xff08;1&#xff0…

QQ、微信、QQ浏览器UserAgent

如果你开发过微信公众好或者手机站的话应该遇到过一些页面访问的时候会提示使用手机或者微信访问。 但是手机上面如何查看页面源码&#xff1f; 如何调试&#xff1f; 方法当然是很多的&#xff0c;下面提供一种方法&#xff1a; 使用Chrome配合UserAgent可查看微信页面。U…

【浏览器】浏览器安全

浏览器安全分为页面安全、系统安全、网络安全 页面安全 为了页面安全浏览器引入了最核心的安全策略&#xff1a;同源策略&#xff08;Same-origin policy&#xff09; 同源策略 同源指&#xff1a;URL的协议、域名和端口都相同。两个不同的源之间若想要相互访问资源或者操作…

5-HT2A靶向药物|适应症|市场销售-上市药品前景分析

据世界卫生组织称&#xff0c;抑郁症是一种多因素疾病&#xff0c;影响全球约3.5 亿人。中枢神经系统最广泛的单胺 - 血清素 (5-HT) 被认为在这种情况的病理机制中起着至关重要的作用&#xff0c;并且神经递质的重要性被“血清素假说”提升&#xff0c;将抑郁症的存在联系起来 …

国内十大上市移动医疗企业盘点

作为医疗改革的重要突破口&#xff0c;我国智慧医疗的发展已经渐行渐近&#xff0c;上海、杭州等地的智慧医疗走在全国前列。随着多项医卫信息化政策的密集出台以及医改的不断深入&#xff0c;人们惊喜地发现&#xff0c;无论是传统的医疗管理理念亦或是传统的就医模式正在或将…

OpenAI正式上线安卓版ChatGPT,支持普通话甚至粤语等方言

OpenAI 今日宣布&#xff0c;安卓版 ChatGPT 已正式上线&#xff0c;目前美国、印度、孟加拉国和巴西四国的安卓用户已经可在谷歌 Play 商店进行下载&#xff0c;并计划在下周拓展到更多地区。 下载直达&#xff1a;https://play.google.com/store/apps/details?idcom.openai…

ChatGPT细说从头(十四):思维链

原文&#xff1a;ChatGPT细说从头(十四)&#xff1a;思维链 - 知乎 引言 ChatGPT刚推出的时候&#xff0c;大家会发现它在数学运算方面表现不佳&#xff0c;因为复杂的数学问题需要多步推理过程&#xff0c;但没过多久就发现它有了重要提升&#xff0c;而且回答方式也有了显著…

人工智能五大趋势预测!这些人将成为职场“香饽饽”!

近日&#xff0c;在如火如荼的「ChatGPT大战」中&#xff0c;科大讯飞发布星火认知大模型&#xff0c;学而思另辟蹊径自研数学大模型「MathGPT」&#xff0c;已经取得了阶段性成果。 作为生成式人工智能的里程碑&#xff0c;ChatGPT在全球引起了新浪潮。未来&#xff0c;人工智…

OpenAI最新官方ChatGPT聊天插件接口《插件安全审查流程》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(六)(附源码)

Plugin review process 插件审查流程 前言Plugin review process 插件审查流程What we are looking for in a plugin 我们正在寻找一个插件Plugin states 插件状态Types of users 用户类型Submit a plugin for review 提交一个插件进行审核其它资料下载 前言 在 ChatGPT 中&am…

chatgpt赋能python:Python插件下载指南

Python插件下载指南 Python作为一种高级编程语言&#xff0c;应用广泛&#xff0c;拥有各种各样的插件库。这篇文章将帮助你了解Python插件下载的基本步骤和注意事项。 找到需要的插件 首先&#xff0c;你需要知道自己想要的插件是什么。你可以在Python官方网站、GitHub或者…