迎国庆-为祖国庆生python、Java、C各显神通

        " 金秋送爽,丹桂飘香“,我们即将即将迎来祖国母亲的华诞!!

        七十余载风雨兼程,无数先辈以热血铸就辉煌,换来了今日的繁荣昌盛。从东方破晓的第一缕曙光,到星辰大海的无限探索,中国以坚韧不拔的意志和日新月异的成就,屹立于世界东方,绽放出耀眼的光芒。

        值此国庆佳节,让我们共同祝福伟大的祖国繁荣昌盛,国泰民安;愿山河无恙,人间皆安。不论身在何方,心向祖国,让我们携手并进,在新时代的征程上续写华章,为实现中华民族伟大复兴的中国梦贡献自己的力量。

        为了融入这浓厚的节日氛围,表达一下自己的爱国情怀,我掏出了我尘封已久的,Pycharm,idea以及 VScode,分别画了一个国旗。大家也来评评,哪一种编程语言最善!

Java 版国旗

首先登场的是 Java,我采用的是 Swing 编程绘制的国旗。

完整代码如下:

package com.moxuan;import javax.swing.*;
import java.awt.geom.*;
import java.awt.*;public class FiveStarFlag extends JPanel {/*** 主函数* @param args*/public static void main(String[] args) {// 创建窗体JFrame jFrame = new JFrame("五星红旗");// 添加面板jFrame.getContentPane().add(new FiveStarFlag(600));jFrame.pack();// 设置默认的关闭选项,关闭的时候退出程序jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置位置居中jFrame.setLocationRelativeTo(null);// 设置可见性jFrame.setVisible(true);}/*** 创建一个五角星形状.* 该五角星的中心坐标为(sx,sy),中心到顶点的距离为radius,其中某个顶点与中心的连线的偏移角度为theta(弧度)** @return pentacle 一个☆*/public static Shape createPentacle(double sx, double sy, double radius, double theta) {final double arc = Math.PI / 5;final double rad = Math.sin(Math.PI / 10) / Math.sin(3 * Math.PI / 10);GeneralPath path = new GeneralPath();path.moveTo(1, 0);for (int i = 0; i < 5; i++) {path.lineTo(rad * Math.cos((1 + 2 * i) * arc), rad * Math.sin((1 + 2 * i) * arc));path.lineTo(Math.cos(2 * (i + 1) * arc), Math.sin(2 * (i + 1) * arc));}path.closePath();AffineTransform atf = AffineTransform.getScaleInstance(radius, radius);atf.translate(sx / radius, sy / radius);atf.rotate(theta);return atf.createTransformedShape(path);}private int width, height;private double maxR = 0.15, minR = 0.05;private double maxX = 0.25, maxY = 0.25;private double[] minX = {0.50, 0.60, 0.60, 0.50};private double[] minY = {0.10, 0.20, 0.35, 0.45};/*** 创建一个宽度为width的国旗*/public FiveStarFlag(int width) {this.width = width / 3 * 3;this.height = width / 3 * 2;setPreferredSize(new Dimension(this.width, this.height));}@Overrideprotected void paintComponent(Graphics g) {Graphics2D graphics2D = (Graphics2D) g;//画旗面graphics2D.setPaint(Color.RED);graphics2D.fillRect(0, 0, width, height);//画大☆double ox = height * maxX, oy = height * maxY;graphics2D.setPaint(Color.YELLOW);graphics2D.fill(createPentacle(ox, oy, height * maxR, -Math.PI / 2));//画小★for (int i = 0; i < 4; i++) {double sx = minX[i] * height, sy = minY[i] * height;double theta = Math.atan2(oy - sy, ox - sx);graphics2D.fill(createPentacle(sx, sy, height * minR, theta));}}
}

Python 版国旗

        接下来我们再看看 Python 绘图,我在小海龟和 pygame 之间我选择了小海龟,毕竟小海龟那么可爱!

运行效果:

完整代码如下:

import turtle# 将画笔的形状设置为海归
turtle.shape('turtle')
# 设置旗面大小
turtle.setup(600,400,0,0)# 设置背景
turtle.bgcolor("red")# 设置五角星填充颜色
turtle.fillcolor("yellow")# 设置线条颜色
turtle.color('yellow')# 设置绘制速度 0是最快,1-10逐渐加快
turtle.speed(1)  # 这里开始开不清绘制轨迹,可以设成1,画慢一些# 主星
# 开始填充颜色
turtle.begin_fill()
# 抬笔
turtle.up()
# 设置画笔的坐标
turtle.goto(-280,100)
# 落笔
turtle.down()
# 循环5
for i in range (5):# 前进150像素点turtle.forward(150)# 向右旋转144度turtle.right(144)
# 结束填充
turtle.end_fill()# 副星1 ,绘制副星,和绘制主星的原理一样,只是小一点
turtle.begin_fill()
turtle.up()
turtle.goto(-100,180)
# 旋转角度
turtle.setheading(305)
turtle.down()
for i in range (5):turtle.forward(50)turtle.left(144)
turtle.end_fill()# 副星2 ,绘制副星,和绘制主星的原理一样,只是小一点
turtle.begin_fill()
turtle.up()
turtle.goto(-50,110)
turtle.setheading(30)
turtle.down()
for i in range (5):turtle.forward(50)turtle.right(144)
turtle.end_fill()# 副星3 ,绘制副星,和绘制主星的原理一样,只是小一点
turtle.begin_fill()
turtle.up()
turtle.goto(-40,50)
turtle.setheading(5)
turtle.down()
for i in range (5):turtle.forward(50)turtle.right(144)
turtle.end_fill()# 副星4 ,绘制副星,和绘制主星的原理一样,只是小一点
turtle.begin_fill()
turtle.up()
turtle.goto(-100,10)
turtle.setheading(300)
turtle.down()
for i in range (5):turtle.forward(50)turtle.left(144)
turtle.end_fill()# 隐藏海龟
turtle.hideturtle()
turtle.done()

C语言版国旗

接下来是我们的老大哥,C 语言,我这里用了 easyx 和 graphics 图形库

演示效果如下:

#include <stdio.h>
#include <easyx.h>
#include <math.h>
#include <graphics.h>        // 引用图形库头文件
#include <conio.h>
#include<time.h>
#define PI 3.14
void fivePointedStar(int radius, double startAngle)//  角星的外接圆半径和起始角度作为参数,由调用者决定
{double delta = 2 * PI / 5;      //  增量为一个圆的5分之一POINT points[5];                //  长度为5的POINT数组,用于存储5个点for (int i = 0; i < 5; i++){points[i].x = cos(startAngle + i * delta * 2) * radius;   //  计算x坐标 points[i].y = sin(startAngle + i * delta * 2) * radius;   //  计算y坐标}solidpolygon(points, 5);
}
int main(void)
{int width = 900;int height = width / 3 * 2;    //  高度为宽度的2/3int grid = width / 3 / 15;    //  网格宽度initgraph(800, 420);    //  创建窗体设置背景色setbkcolor(BLACK);cleardevice();setcolor(YELLOW);  //  文本颜色setbkcolor(BLACK);  //  文本背景色settextstyle(100, 0, "楷体");  //  文本高度和字体outtextxy(600, 10, "喜");  //  文本位置和内容outtextxy(600, 110, "迎");  //  文本位置和内容outtextxy(600, 210, "国");  //  文本位置和内容outtextxy(600, 310, "庆");  //  文本位置和内容outtextxy(700, 10, "举");  //  文本位置和内容outtextxy(700, 110, "国");  //  文本位置和内容outtextxy(700, 210, "欢");  //  文本位置和内容outtextxy(700, 310, "庆");  //  文本位置和内容setcolor(YELLOW);setbkcolor(BLACK);settextstyle(20, 0, "楷体");setfillcolor(RED);solidrectangle(10, 10, 600, 400);setaspectratio(1, -1);    //  翻转坐标轴,设置填充颜色为黄色setfillcolor(YELLOW);setpolyfillmode(WINDING);setorigin(grid * 5, grid * 5);    //  大五角星fivePointedStar(grid * 3, PI / 2);setorigin(grid * 10, grid * 2);    //  小五角星1double startAngle = atan(3.0 / 5.0) + PI;fivePointedStar(grid, startAngle);setorigin(grid * 12, grid * 4);    //  小五角星2startAngle = atan(1.0 / 7.0) + PI;fivePointedStar(grid, startAngle);setorigin(grid * 12, grid * 7);    //  小五角星3startAngle = -atan(2.0 / 7.0) + PI;fivePointedStar(grid, startAngle);setorigin(grid * 10, grid * 9);    //  小五角星4startAngle = -atan(4.0 / 5.0) + PI;fivePointedStar(grid, startAngle);getchar();closegraph();return 0;
}

烟花庆祝

接下来,我们一起来放个烟花庆祝一下吧,祝祖国繁荣昌盛,祝人民安居乐业,祝父母身体健康,祝大家前程似锦!

完整代码:

import pygame
import random
import math# 初始化Pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("烟花动画")
clock = pygame.time.Clock()# 烟花粒子类定义
class Particle:def __init__(self, x, y, color):self.x = xself.y = yself.color = colorself.angle = random.uniform(0, 2 * math.pi)self.speed = random.uniform(2, 5)self.radius = random.randint(2, 4)self.lifetime = random.randint(50, 100)def update(self):self.x += self.speed * math.cos(self.angle)self.y += self.speed * math.sin(self.angle)self.lifetime -= 1# 创建烟花
def create_firework(x, y, color):particles = [Particle(x, y, color) for _ in range(100)]return particles# 绘制粒子
def draw_particle(screen, particle):pygame.draw.circle(screen, particle.color, (int(particle.x), int(particle.y)), particle.radius)# 主循环
particles = []
running = True
while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = Falsescreen.fill((0, 0, 0))if random.randint(0, 20) == 0:x, y = random.randint(100, 700), random.randint(100, 500)color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))particles.extend(create_firework(x, y, color))for particle in particles[:]:particle.update()if particle.lifetime <= 0:particles.remove(particle)else:draw_particle(screen, particle)pygame.display.flip()clock.tick(30)pygame.quit()

鼠标烟花效果:

完整代码:

from math import cos, sinimport pygame
import random# 初始化Pygame
pygame.init()# 屏幕大小
width, height = 800, 600
screen = pygame.display.set_mode((width, height))# 烟花粒子类
class Particle:def __init__(self, x, y):self.x = xself.y = yself.color = (random.randint(50, 255), random.randint(50, 255), random.randint(50, 255))self.size = 5self.speed = random.randint(1, 5)self.angle = random.uniform(0, 2 * 3.14159)def move(self):self.x += self.speed * 0.5 * cos(self.angle)self.y += self.speed * 0.5 * sin(self.angle)self.size -= 0.05def draw(self):pygame.draw.circle(screen, self.color, (int(self.x), int(self.y)), int(self.size))particles = []running = True
while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = Falsex, y = pygame.mouse.get_pos()for i in range(30):particles.append(Particle(x, y))for particle in particles:particle.move()if particle.size <= 0:particles.remove(particle)# 清屏screen.fill((0, 0, 0))# 绘制粒子for particle in particles:particle.draw()pygame.display.flip()pygame.quit()

好辣,完毕啦,大家写的时候有问题记得回来私信我呦,码了这么多字,给个关注和赞不过分吧,O(∩_∩)O哈哈~

最后的最后,预祝大家国庆假期愉快!!

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

git 删除 git push 失败的记录

文章目录 问题分析 问题 git push 失败后如何清理 commit 提交的内容 当我们 git push 失败后&#xff0c;如果下次有新的改动需要push时&#xff0c;会出现如下报错 分析 找到需要回退的那次commit的 哈希值 git log然后就回退到了指定版本&#xff0c;这个时候再把新修改…

解析rss链接数据,来长期把某博客数据订阅到自己的网站

目的 当我们打开这个订阅链接&#xff0c;会看到我们的文章信息以xml的形式呈现到浏览器页面中&#xff0c;怎么直接在我们自己的网站中&#xff0c;将这个链接的数据转为我们熟悉的json数据&#xff0c;然后渲染到自己的网站中呢 技术栈 react hookstypescriptwebpack 核心…

【C++掌中宝】深入理解函数重载:概念、规则与应用

文章目录 引言1. 什么是函数重载&#xff1f;2. 为什么需要函数重载&#xff1f;3. 编译器如何解决命名冲突&#xff1f;4. 为什么返回类型不参与重载&#xff1f;5. 重载函数的调用匹配规则6. 编译器如何解析重载函数的调用&#xff1f;7. 重载的限制与注意事项8. 总结结语 引…

柯桥小语种学习之语言交流 | 德语餐厅用语

01 一、入座与点餐 1. Guten Tag! Ein Tisch fr zwei Personen, bitte.&#xff08;你好&#xff01;请给我们一张两人桌。&#xff09; 2. Knnen wir hier sitzen?&#xff08;我们可以坐这里吗&#xff1f;&#xff09; 3. Die Speisekarte, bitte.&#xff08;请给我菜…

在Windows系统上安装的 zlib C++ 库

在Windows系统上安装的 zstd C 库 项目地址步骤步骤一步骤二步骤三如果生成过程中遇到如下错误: 效果 项目地址 https://github.com/madler/zlib 可以发现这个项目有CMakeLists.txt文件,那就比较好搞了 步骤 步骤一 git clone gitgithub.com:madler/zlib.git步骤二 cd zli…

丢失照片/消息/文件,当发现没有备份 Android 手机数据时急救方法

当人们发现他们没有备份 Android 手机数据时&#xff0c;通常为时已晚。但是&#xff0c;我们都不想永久丢失珍贵的照片&#xff0c; 消息和其他文件。这就是为什么您应该检查 遵循 5 大免费 Android 数据恢复工具和最佳替代品 他们。 排名前五的免费 Android 数据恢复软件 1.奇…

黑芝麻A1000-Ubuntu20.04(九)yolov5从训练到板端运行过程详解

宿主机&#xff1a;台式电脑 Ubuntu20.04 开发板&#xff1a;A1000&#xff08;烧录版本SDK v2.3.1.2&#xff09; 模型转换容器&#xff1a;bsnn-tools-container-stk-4.2.0 编译容器&#xff1a;a1000b-sdk-fad-2.3.1.2 yolov5使用工程&#xff1a;黑芝麻根据https://github.…

PHP探索校园新生态校园帮小程序系统小程序源码

探索校园新生态 —— 校园帮小程序系统&#xff0c;让生活更精彩&#xff01; &#x1f331;【开篇&#xff1a;走进未来校园&#xff0c;遇见新生态】&#x1f331; 你是否厌倦了传统校园的繁琐与单调&#xff1f;是否渴望在校园里也能享受到便捷、智能的生活体验&#xff1…

3d可视化图片:通过原图和深度图实现

1、depthy 在线体验demo: https://depthy.stamina.pl/#/ 也可以docker安装上面服务: docker run --rm -t -i -p 9000:9000 ndahlquist/depthy http://localhost:90001)首先传原图 2)再传对应深度图 3)效果 </ifra

网络事件管理

网络事件管理是运行组织 IT 网络不可或缺的一部分&#xff0c;网络事件管理的最终目标很简单&#xff1a;在发生中断时尽快恢复服务或功能。但是为了高效和一致地进行&#xff0c;IT 运营团队需要时刻保持警惕&#xff0c;不断了解网络事件&#xff0c;并且必须系统地遵循一套程…

opencv4.5.5 GPU版本编译

一、安装环境 1、opencv4.5.5 下载地址&#xff1a;https://github.com/opencv/opencv/archive/refs/tags/4.5.5.ziphttps://gitee.com/mirrors/opencv/tree/4.5.0 2、opencv-contrib4.5.5 下载地址&#xff1a;https://github.com/opencv/opencv_contrib/archive/refs/tags/4…

ToB项目身份认证AD集成(二):一分钟搞定window server 2003部署AD域服务并支持ssl加密(多图保姆教程+证书脚本)

在ToB的应用开发中&#xff0c;往往需要集成AD域控实现身份认证&#xff0c;同时也算是近期工作的总结&#xff0c;之前已介绍了基础的AD、Ldap&#xff0c;本文主要介绍如何大家一个本地的测试环境。 相关系列&#xff1a; ToB项目身份认证AD集成&#xff08;一&#xff09;&a…

【JavaSE】-- 类和对象(1)

文章目录 1. 面向对象的初步认知1.1 什么是面向对象1.2 面向对象与面向过程 2. 类的定义和使用2.1 简单认识类2.2 类的定义格式 3. 类的实例化3.1 什么是实例化3.2 类和对象的说明 4. this引用4.1 为什么要有this引用4.2 什么是this引用4.3 this引用的特性 5. 对象的构造及初始…

增强GPT4v的Grounding能力,video-level

开源链接&#xff1a; appletea233/AL-Ref-SAM2: AL-Ref-SAM 2: Unleashing the Temporal-Spatial Reasoning Capacity of GPT for Training-Free Audio and Language Referenced Video Object Segmentation (github.com) In this project, we propose an Audio-Language-Refe…

Spring Boot中实现一个递归获取省市区行政区划代码

Spring Boot中实现一个递归获取省市区行政区划代码 写于20240924 10:23 在Spring Boot中实现一个递归获取省市区行政区划代码的功能&#xff0c;可以按照以下步骤进行。我们将使用Spring Data JPA来与数据库交互&#xff0c;并构建一个递归的方法来获取层级数据。 首先这里数据…

11周年 | 初心不改,焕新前行,奔赴下一个10年!

2024年8月13日&#xff0c;爱加密正式迎来了11岁生日&#xff0c;在爱加密肩负着崇高使命踏浪而行的10年间&#xff0c;蓝绿色的品牌标识一直伴于左右。随着时代的变迁以及市场需求的不断变化&#xff0c;企业同样也需要在品牌上做出创新递进&#xff0c;从而更加适应市场竞争的…

数据科学的秘密武器:defaultdict——Python字典的自动化填充神器,让数据结构更灵活

目录 什么是defaultdict 引入动机 创建与初始化 工作原理 自定义默认值函数 注意事项 使用案例 使用场景 1: 计数 使用场景 2: 分组数据 使用场景 3: 嵌套字典结构 进阶案例使用 进阶案例 1: 使用 defaultdict 实现词频统计并排序 进阶案例 2: 使用 defaultdict 实…

OpenCSG推出StarShip SecScan:AI驱动的软件安全革新

OpenCSG 导读 如今&#xff0c;IT 技术迅速发展&#xff0c;软件安全不仅是企业稳健运营的基础&#xff0c;更是整个社会经济体系安全的保障。加强软件安全&#xff0c;尤其是在开发阶段识别和修补漏洞&#xff0c;是企业必须重视的问题。国际数据公司&#xff08;IDC&#xf…

MyBatis 入门教程-搭建入门工程

Maven作为一个优秀的项目构建和管理工具,在日常的开发中被大多数开发者使用,后续的项目也是基于Maven来构建。 创建一个Maven项目 利用IDEA创建项目工具来创建一个Maven项目 添加MyBatis的依赖 这里可以从Maven仓库地址中进行查看, https://mvnrepository.com/ 从这里可…

反汇编—switch

x64和x86分析类似 标号1的位置要计算出&#xff1a;减去(debug) / 加上(release)第一个case要等于0&#xff0c;因为第一个case在跳转表数组的0下标位置 通过1和2&#xff0c;可以知道它们应该是连续case&#xff0c;还要判断是否缺项&#xff0c;进入跳转表看 可以看到原本应…