From 505d42c842520b1fdcb701e441e2c3baa9e017be Mon Sep 17 00:00:00 2001 From: 13766800364 <13766800364@qq.com> Date: Thu, 9 Oct 2025 16:09:57 +0800 Subject: [PATCH] Add File --- .../drinkjava2/frog/objects/EarthQuake.java | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 history/007_earthquake/src/main/java/com/gitee/drinkjava2/frog/objects/EarthQuake.java diff --git a/history/007_earthquake/src/main/java/com/gitee/drinkjava2/frog/objects/EarthQuake.java b/history/007_earthquake/src/main/java/com/gitee/drinkjava2/frog/objects/EarthQuake.java new file mode 100644 index 0000000..bcd37b2 --- /dev/null +++ b/history/007_earthquake/src/main/java/com/gitee/drinkjava2/frog/objects/EarthQuake.java @@ -0,0 +1,71 @@ +/* Copyright 2018-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + */ +package com.gitee.drinkjava2.frog.objects; + +import java.awt.Color; +import java.awt.Graphics; + +import com.gitee.drinkjava2.frog.Env; +import com.gitee.drinkjava2.frog.Frog; +import com.gitee.drinkjava2.frog.util.RandomUtils; + +/** + * EarthQuake make noise in a very tiny zone, after a while will hurt frogs on + * ground + * + * 地震产生很小范围的声音,但是过一会后所有在地上没跳起的青蛙将受到伤害,能量被减除 + * + * 地震是听力/发音实验中的一个测试物体 + * + * @author Yong Zhu + * @since 1.0 + */ +public class EarthQuake implements EnvObject { + public static int activate = 0; + + @Override + public void build() { + } + + @Override + public void destory() { + } + + @Override + public void active() { + if (activate == 0 && RandomUtils.percent(0.5f)) { // 有小机率启动地震 + activate = 1; + } + + if (activate > 0) + activate++; // 地震如果启动,强度就开始变大 + + if (activate > 50) + activate = 0; // 直到最大值后归零 + + if (activate > 0) {// 地震开始杀所有没跳在空中的青蛙 + for (Frog frog : Env.frogs) { + if (frog.high == 0) + frog.energy -=1000; + } + } + } + + @Override + public void display() { + if (activate > 0) {//如果地震了,在地图上画出红框 + Graphics g = Env.buffImg.getGraphics(); + g.setColor(Color.RED); + g.drawRect(0, 0, Env.ENV_WIDTH - 1, Env.ENV_HEIGHT - 1); + } + } + +}