软件价值13-水族箱

用java程序模拟的水族箱。

想象:

在这个喧嚣的世界中,总是有一些角落让人感到宁静、美丽和惬意。水族箱就是其中之一。闭上眼睛,想象一下,透过清澈的玻璃,你仿佛看到了一个小小的海洋世界,那里栖息着各色各样的鱼儿。

在这个水族箱里,水清澈见底,微光透过水面洒下,投射出斑斓的光影。在这柔和的光线下,鱼儿们如梦幻般地穿梭来回,它们的身影时隐时现,仿佛在跳着优美的舞蹈。

这个水族箱仿佛是一个小小的海洋世界,充满了生机与活力。每一条鱼儿都是如此美丽、灵动,它们的存在让整个空间充满了生命的力量,让人心情愉悦,仿佛身临其境般感受到了大自然的美妙。在这里,你可以忘却烦恼,感受到内心的平静和安宁。

打开你的心扉,让这个水族箱带给你一份宁静和美好,让那些灵动的鱼儿在你的心灵深处留下美好的印记。

截图:

代码:

import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.util.Random;

class Fish {
	Component tank;

	Image image1;

	Image image2;

	Point location;

	Point velocity;

	Rectangle edges;

	Random random;

	public Fish(Image image1, Image image2, Rectangle edges, Component tank) {
		random = new Random(System.currentTimeMillis());
		this.tank = tank;
		this.image1 = image1;
		this.image2 = image2;
		this.edges = edges;
		this.location = new Point(100 + (Math.abs(random.nextInt()) % 300),
				100 + (Math.abs(100 + random.nextInt()) % 100));

		this.velocity = new Point(random.nextInt() % 8, random.nextInt() % 8);
	}

	public void swim() {
		if(random.nextInt() % 7 <= 1) {
			velocity.x += random.nextInt() % 4;

			velocity.x = Math.min(velocity.x, 8);
			velocity.x = Math.max(velocity.x, -8);

			velocity.y += random.nextInt() % 4;

			velocity.y = Math.min(velocity.y, 8);
			velocity.y = Math.max(velocity.y, -8);
		}

		location.x += velocity.x;
		location.y += velocity.y;

		if(location.x < edges.x) {
			location.x = edges.x;
			velocity.x = -velocity.x;
		}

		if((location.x + image1.getWidth(tank)) > (edges.x + edges.width)) {
			location.x = edges.x + edges.width - image1.getWidth(tank);
			velocity.x = -velocity.x;
		}

		if(location.y < edges.y) {
			location.y = edges.y;
			velocity.y = -velocity.y;
		}

		if((location.y + image1.getHeight(tank)) > (edges.y + edges.height)) {
			location.y = edges.y + edges.height - image1.getHeight(tank);
			velocity.y = -velocity.y;
		}
	}

	public void drawFishImage(Graphics g) {
		if(velocity.x < 0) {
			g.drawImage(image1, location.x, location.y, tank);
		} else {
			g.drawImage(image2, location.x, location.y, tank);
		}
	}

}

import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.URL;
import java.util.Vector;

public class Test extends Frame implements Runnable {
	private static final long serialVersionUID = 1L;

	Image aquariumImage, memoryImage;

	Graphics memoryGraphics;

	int numberFish = 8;

	int sleepTime = 110;

	Vector<Fish> fishes = new Vector<Fish>();

	boolean runOK = true;

	Image[] fishImages = new Image[2];

	MediaTracker tracker;

	Thread thread;

	Test() {
		setTitle("The Aquarium");
		tracker = new MediaTracker(this);

		URL fish1Address = getClass().getResource("resource/fish1.gif");
		URL fish2Address = getClass().getResource("resource/fish2.gif");
		URL bubblesAddress = getClass().getResource("resource/tank.jpg");

		fishImages[0] = Toolkit.getDefaultToolkit().getImage(fish1Address);
		tracker.addImage(fishImages[0], 0);

		fishImages[1] = Toolkit.getDefaultToolkit().getImage(fish2Address);
		tracker.addImage(fishImages[1], 0);
		
		aquariumImage = Toolkit.getDefaultToolkit().getImage(bubblesAddress);
		tracker.addImage(aquariumImage, 0);

		try {
			tracker.waitForID(0);
		} catch(Exception ex) {
			System.out.println(ex.getMessage());
		}

		setSize(aquariumImage.getWidth(this), aquariumImage.getHeight(this));

		setResizable(false);

		setVisible(true);

		memoryImage = createImage(getSize().width, getSize().height);
		memoryGraphics = memoryImage.getGraphics();

		thread = new Thread(this);
		thread.start();

		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent windowEvent) {
				runOK = false;
				System.exit(0);
			}
		});
	}

	public void run() {
		Rectangle edges = new Rectangle(0 + getInsets().left, 0 + getInsets().top, getSize().width
				- (getInsets().left + getInsets().right), getSize().height - (getInsets().top + getInsets().bottom));

		for(int loopIndex = 0; loopIndex < numberFish; loopIndex++) {
			fishes.add(new Fish(fishImages[0], fishImages[1], edges, this));
			try {
				Thread.sleep(20);
			} catch(Exception exp) {
				System.out.println(exp.getMessage());
			}
		}

		Fish fish;

		while(runOK) {
			for(int loopIndex = 0; loopIndex < numberFish; loopIndex++) {
				fish = (Fish) fishes.elementAt(loopIndex);
				fish.swim();
			}

			try {
				Thread.sleep(sleepTime);
			} catch(Exception exp) {
				System.out.println(exp.getMessage());
			}

			repaint();
		}

	}

	public void update(Graphics g) {
		memoryGraphics.drawImage(aquariumImage, 0, 0, this);

		for(int loopIndex = 0; loopIndex < numberFish; loopIndex++) {
			((Fish) fishes.elementAt(loopIndex)).drawFishImage(memoryGraphics);
		}

		g.drawImage(memoryImage, 0, 0, this);
	}

	public static void main(String[] args) {
		new Test();
	}

}

运行:

my aquarium

5、锦鲤池健康监测的运动分析与注意力引导的人脸检测系统 本文探讨了两个基于计算机视觉的应用系统:一是用于锦鲤池健康监测的运动分析方法,通过光流和热图特征提取实现鱼群行为规律识别与异常检测;二是提出一种结合注意力机制的深度学习人脸检测系统,能够同时预测人脸边界框和注意力图,在准确率和可解释性方面表现优异。研究展示了热图特征在不同时间窗口下的相关性,并验证了能量和熵特征在异常识别中的潜力。人脸检测系统采用多任务学习策略,在主流数据集上取得了与现有方法相当的性能。两个系统分别为水产养殖监控和智能安防提供了可行的技术路径。 阅读详情

相关推荐

海洋水族馆动态屏保设计与实现

海洋水族馆屏保不仅具备防止屏幕“烧屏”的实用功能,更通过逼真的水下视觉效果为用户带来沉浸式的观赏体验。其设计融合了计算机图形学、生态美学与心理学原理,使用户在视觉享受中获得放松与愉悦。随着操作系统图形界面的发展,屏保已从单纯的防护工具演变为增强用户体验的重要媒介。本章将深入探讨海洋主题屏保的核心价值,包括其视觉吸引力、心理调节作用及其在现代数字环境中的应用意义。

weixin_36289813的博客 1216

Mac本地部署OpenClaw AI助手:摆脱Token焦虑,打造私有化大模型对话平台

大语言模型(LLM)通过海量数据训练,具备了强大的自然语言理解和生成能力,其核心原理是基于Transformer架构的注意力机制。在工程实践中,开发者常通过API调用云端模型,但面临Token成本与数据隐私的挑战。开源模型与本地部署技术为解决这一问题提供了可行路径,通过Ollama等工具在本地硬件上运行量化模型,能实现零成本、全私有的AI交互。OpenClaw(Open WebUI)作为一个AI Agent框架,扮演了连接用户界面与本地模型后端的“连接器”角色,将类似ChatGPT的交互体验与本地部署的Ll

weixin_29056865的博客 276

基于YOLOv5与FISHES-IN-THE-WILD数据集的水下鱼类目标检测实战

目标检测是计算机视觉的核心任务之一,旨在从图像或视频中定位并识别出感兴趣的物体。其原理通常基于深度学习模型,通过卷积神经网络提取特征,并利用回归和分类头输出物体的边界框与类别。这项技术的价值在于能够自动化、高精度地完成视觉感知任务,极大地提升了在安防、自动驾驶、工业质检等领域的应用效率。在生态监测与水产养殖等特定垂直领域,通用检测模型往往难以应对复杂多变的真实环境。为此,采用高质量、场景匹配的专用数据集进行模型训练成为关键。本文以水下鱼类识别为具体应用场景,深入探讨了如何利用FISHES-IN-THE-WI

weixin_34014555的博客 395

java图片上传代码_使用300行java代码和149张图片制作一个单机版捕鱼游戏

使用Java 300行写出一个单机捕鱼游戏,效果如下package org.wf.game.fish;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.a...

weixin_39623244的博客 193

即梦 AI 全功能零基础详细教程(纯技术版)

即梦 AI 是一款多模态 AI 生成工具,主打文本生成视频、图片生成视频、角色一致性生成、音画同步等核心功能,依托自研 AI 视觉模型,实现从文本 / 图片 / 音频素材输入,到高清视频、图像内容输出的全流程 AI 创作,支持短视频、短剧、创意素材等多场景创作,具备操作门槛低、生成效率高、画面可控性强的技术特点。@为工具内置引用指令,作用是锁定指定素材 / 角色,强制 AI 按照该素材的核心特征生成内容,无额外付费、解锁要求,免费使用。剧本拆分:将短剧拆分为单镜头(15 秒内 / 个)

2501_92061023的博客 5823

微信小程序-如何根据缩放屏幕大小自适应icon图标更改marker

微信小程序如何根据用户的缩放屏幕来改变marker图标icon的大小,实现icon自适应屏幕缩放的效果

Bartender_VA11的博客 3980

揭秘APP软件开发者百万富翁之路 造程序的工厂.2487 - 牛肉的营养价值

  1.各种创意都有,包含专业和精巧的制造,我们是中国最好的App Store开发者,还是要关注单一产品的制作水准,我们要成为手机上的暴雪公司。   2 从用户角度动身,这是我现在做任何项目要斟酌的重要因素。   3 我们曾经只是一些无人知晓的程序开发员,但由于有了这个平台,现在我们可以把自己的智慧卖给全世界。   4 这是一个很好的市场,它会拉高开发...

weixin_34351321的博客 304

大模型在心律失常预测及治疗方案制定中的应用研究报告

目录一、引言1.1 研究背景与意义1.2 研究目的与方法1.3 研究创新点二、大模型技术概述2.1 大模型基本原理2.2 常见大模型类型及特点2.3 大模型在医疗领域的应用现状三、心律失常的术前预测与准备3.1 术前心律失常预测的重要性3.2 大模型在术前预测中的应用案例3.3 基于预测结果的术前准备方案四、术中监测与实时调整4.1 术中监测心律失常的方法与技术4.2 大模型辅助术中决策的机制4.3 实时调整手术方案的策略与实践五、术后恢复与并发症风险预测5.1 术后心律失常的监测与评估5.2 大模型预测术

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1596

值得买科技618战报:好价驱动品质消费,营销赋能全域增长

618期间,41个品牌通过什么值得买达成超千万GMV。

TMT_XQ的博客 769

人工智能训练师(三级)操作技能考核·自测卷

为您定制了一份。这份试卷严格拆分了“业务分析”、“智能训练”、“智能系统设计”、“培训与指导”四大模块,所有填空题均来源于上一轮整理的。您可以先用它进行“第二步(抛开答案自己填)”,填完后对照末尾的答案速查进行“第一步(补全并运行)”的校验,最后标记错题进行“第三步(针对性重复练习)”。

suny8088的博客 104

一文学会Inner-MPDIoU:YOLOv11边界框回归优化全解析

Inner-MPDIoU 凭借“辅助边框+最小点距离”的双重创新,成功解决了传统 IoU 损失在小目标、遮挡场景、位置偏差场景下的收敛和判别难题,为 YOLOv11 注入了更强的边框回归能力。从原理剖析到代码集成,本教程已为你铺就了一条“定位精度跃升”的实战路径。现在,不妨亲自上手尝试,让你的目标检测模型在各类数据集上都能交出一份“定位精准”的答卷——相信我,当你看到检测框完美贴合目标的那一刻,你会明白这份尝试的价值。我很乐意在你实践过程中帮你解决任何问题,让我们一起推动目标检测在边框回归领域的边界。

know_F0727的博客 141

A开头前缀

1.ab/abs-表示远离 abuse 滥用(远离使用) abduct 绑架 -duce表示牵引 往远处引导表示绑架 seduce 诱惑(色牵引) introduce 介绍(向内牵引) intro-内向的 aberrant 违反常规的 err-表错误 人非圣贤,孰能无过,远离错误是不常规的 abstinence 节制 -ence名词 tin==tain拿 拿走,节制 abstraction 抽象 tract-拉 tect-盖子 protect 向前形成盖子,保护 detecti

qq_43716830的博客 1489

Vins-Fusion 外参camera-imu 标定

Vins-Fusion是一种基于优化的多传感器状态估计器,一大特色是支持实时camera-imu外参校准(相机和IMU之间的旋转)。Vins-Fusion 外参camera-imu校准是利用两帧间计算相机位姿和imu预积分得到位姿,构建最小二乘问题,并通过SVD求解camera-imu外参旋转矩阵。

u010196944的博客 2490

Python库collections

提示:以下是本篇文章正文内容,下面案例可供参考官方说法:collections模块实现了特定目标的容器,以提供Python标准内建容器dict ,list , set , 和tuple的替代选择。

dmhy的博客 6273

倾斜摄影与地面激光点云融合高精度建模研究

本文研究了倾斜摄影与地面激光点云融合精细化建模技术,并通过相应的源代码实现了建模过程。该方法将倾斜摄影和激光扫描相结合,能够获得高精度的三维建模结果,为相关领域的研究和应用提供了有力支持。近年来,倾斜摄影和激光扫描技术的快速发展为高精度三维建模提供了新的机遇和挑战。本文针对倾斜摄影与地面激光点云融合建模这一前沿领域展开研究,旨在通过相应的源代码实现精细化的建模过程。同时,使用激光扫描仪进行地面激光扫描,获取地面的点云数据。经过数据融合和精细化建模处理后,我们获得了高精度的三维建模结果。

LpmShell的博客 1245

深度学习技巧应用26-CNN中多种注意力机制的嵌入方法,终于搞懂注意力机制了

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用26-CNN中多种注意力机制的嵌入方法,终于搞懂注意力机制了。CNN是一种能够有效处理图像和其他二维数据的深度学习模型。在传统的CNN中,每个卷积核都会对输入的所有位置进行相同的操作,这可能导致网络无法针对特定区域或特征进行更加关注和重点处理。 注意力机制被引入卷积神经网络中,旨在使网络能够自动地学习和聚焦于输入中的重要区域或特征。通过引入注意力机制,可以增强网络对不同区域或特征的关注度,提取更有意义和相关的特征,从而提高模型的性能和表达能力。

微学AI的博客 3313

记忆宫殿+联想法+数字编码:可训练的脑力操作系统

记忆宫殿、联想法、数字编码并非玄学技巧,而是基于神经科学原理构建的信息加工系统:记忆宫殿激活海马体空间导航机制,实现信息结构化存储;联想法通过语义钩子建立神经突触级的精准映射,提升提取可靠性;数字编码将抽象符号转化为具象感官模块,增强可索引性。三者协同,本质是重构大脑对知识的编码、存储与调用方式,显著降低认知负荷,广泛应用于考试备考、专业学习、老年认知维护等场景。本文聚焦其可拆解、可训练的操作逻辑,揭示如何从零搭建属于自己的高效记忆系统。

weixin_33804582的博客 782

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 284

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 346

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 197

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 126

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 493

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 365

JDK 下载安装:装完 Java 提示「不是内部或外部命令」?环境变量没配

JDK 是写 Java 程序必须装的东西。它包含运行 Java 的虚拟机(JRE)和编译 Java 的编译器(javac)——装了它,能跑、.java文件能编译成可执行程序。免费,学习和小规模生产都不花钱。

科小怪的博客 631

java框架大全

java框架大全

qq_39326137的博客 183

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 359
上一篇: 机器学习12-基本感知器
下一篇: 安卓价值1-如何在电脑上运行ADB
dracularking
博客等级 码龄20年 1592粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dracularking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值