Java Swing制作大鱼吃小鱼魔改版本

《大鱼吃小鱼》这款游戏的历史渊源可以追溯到休闲游戏的兴起和发展。在游戏的早期发展阶段,开发者们开始探索各种简单而有趣的游戏玩法,以吸引玩家的注意力。在这样的背景下,《大鱼吃小鱼》应运而生,它结合了自然界的食物链原理与休闲游戏的轻松氛围,为玩家带来了一种新颖而有趣的游戏体验。
具体来说,这款游戏以神秘的海底世界为背景,让玩家扮演一条小鱼,通过不断吞噬比自己小的鱼类来逐渐成长,最终成为海洋中的霸主。在游戏中,每一关卡都设有玩法提示和海洋鱼类知识学习,使玩家在娱乐的同时也能学习到一些有关海洋生物的知识。

此外,游戏还添加了积分制度和动听愉快的背景音乐,使得整个游戏过程更加有趣和刺激。这种简单而富有挑战性的玩法,使得《大鱼吃小鱼》迅速流行起来,尤其是在白领阶层中,成为了一款广受欢迎的休闲游戏。

综上所述,《大鱼吃小鱼》这款游戏的历史渊源可以归结为休闲游戏的发展和探索,以及自然界食物链原理与游戏玩法的巧妙结合。这些因素共同促成了这款游戏的诞生和流行。

在这里插入图片描述
在这里插入图片描述


一、Java Swing是什么?

Java Swing是Java平台提供的一套图形用户界面(GUI)工具包,用于构建桌面应用程序的用户界面。Swing是AWT(Abstract Window Toolkit)的扩展和替代,提供了更丰富的组件集和更现代化的外观。Swing组件完全是用Java编写的,因此具有跨平台性,这意味着Swing应用程序在不同的操作系统(如Windows、Linux和macOS)上的外观和行为是一致的。

Swing提供了一系列GUI组件,包括按钮、文本框、列表、表格、滑块、进度条等,以及布局管理器,用于控制这些组件在界面上的排列和布局。它还提供了事件处理机制,允许开发者为组件添加交互行为,如点击事件、键盘事件等。

使用Swing,开发者可以创建复杂的桌面应用程序,包括具有多个窗口、对话框和自定义组件的界面。Swing还支持自定义组件的外观和行为,使开发者能够创建独特的用户界面。

总的来说,Java Swing是Java开发人员在构建桌面应用程序时经常使用的工具包之一,它提供了丰富的组件和灵活的布局管理,使得创建具有吸引力的用户界面变得相对容易。

二、Java Swing有哪些组件

JFrame:JFrame 是 Swing 组件的基础,用于显示程序界面。它是所有 Swing GUI 应用程序的顶层容器。
JPanel:JPanel 是一个容器,用于承载其他组件,如按钮、文本框等。它可以作为 JFrame 的内容面板,也可以作为其他容器的子面板。
JButton:JButton 是最常用的组件之一,用于创建可点击的按钮。
JLabel:JLabel 用于显示文本或图像,但不接受用户输入。
JTextField:JTextField 是一个单行文本框,允许用户输入单行文本。
JTextArea:JTextArea 是一个多行文本框,允许用户输入多行文本。
JComboBox:JComboBox 是一个下拉列表,允许用户从多个选项中选择一个。
JList:JList 用于显示一个可滚动的选项列表,用户可以选择一个或多个项目。
JScrollPane:JScrollPane 提供了滚动功能,可以将大型组件(如 JList 或 JTextArea)嵌入其中,以便在界面上滚动查看。
JMenuBar, JMenu, JMenuItem:这些组件用于创建菜单栏、菜单和菜单项,为用户提供程序功能的快速访问。
JSliderJFrame:JFrame 是 Swing 组件的基础,用于显示程序界面。它是所有 Swing GUI 应用程序的顶层容器。
JPanel:JPanel 是一个容器,用于承载其他组件,如按钮、文本框等。它可以作为 JFrame 的内容面板,也可以作为其他容器的子面板。

三.开始游戏制作

1.项目结构

在这里插入图片描述

2.代码如下:

总共设置了五种鱼类:
并对其按照战力 进行了排序(图片素材全都来自网络资源 由作者进行裁剪 如有侵权 敬请告知删除
主角是懒羊羊
在这里插入图片描述

import javax.swing.*;
import java.awt.*;

public class BigEnemy extends Fish{
   
    public BigEnemy()
    {
   
        power=3;
        int r=(int)(Math.random()*2); //生成0,1两个随机数用来标志向左还是向右
        if(r==0)
        {
   
            int a=(int)(Math.random()*2)+1;
            isMoveLeft=false;
            //朝向右 从最左边出来
            x=-168;
            image=new ImageIcon("image/BigRight"+a+".png").getImage();

        }else
        {
   
            int a=(int)(Math.random()*2)+1;
            isMoveLeft=true;
            //朝向左,从最右边出来
            x=1080;
            image=new ImageIcon("image/BigLeft"+a+".png").getImage();
        }
        y=(int)(Math.random()*600);
        length=250;
        height=150;
    }
    @Override
    public void drawFish(Graphics g) {
   
        super.drawFish(g);
        if(isMoveLeft) {
   
            g.drawImage(image, x--, y, length, height, null);
        }
        else
        {
   
            g.drawImage(image, x++, y, length, height, null);
        }
    }
}
import javax.swing.*;
import java.awt.*;
public class BossEnemy extends Fish{
   
    public BossEnemy()
    {
   
        power=4;
        int r=(int)(Math.random()*4); //生成0,1两个随机数用来标志向左还是向右

        if(r==0)
        {
   

            isMoveLeft=false;
            //朝向右 从最左边出来
            x=-400;
            image=new ImageIcon("image/BossRight"+1+".png").getImage();

        }else
        {
   
            int a=(int)(Math.random()*3)+1;
            isMoveLeft=true;
            //朝向左,从最右边出来
            x=1100;
            image=new ImageIcon("image/BossLeft"+a+".png").getImage();
        }
        y=(int)(Math.random()*800);
        length=350;
        height=250;
    }
    @Override
    public void drawFish(Graphics g) {
   
        super.drawFish(g);
        if(isMoveLeft) {
   
            g.drawImage(image, x--, y, length, height, null);
        }
        else
        {
   
            g.drawImage(image, x++, y, length, height, null);
        }
    }
}

import javax.swing.*;
import java.awt.*;

public class BugEnemy extends Fish{
   
    public BugEnemy()
    {
   
        power=5;
        int r=(int)(Math.random()*2); //生成0,1两个随机数用来标志向左还是向右

        if(r==0)
        {
   

            isMoveLeft=false;
            //朝向右 从最左边出来
            x=-400;
            image=new ImageIcon("image/boss1.GIF").getImage();

        }else
        {
   

            isMoveLeft=true;
            //朝向左,从最右边出来
            x=1100;
            image=new ImageIcon("image/MirenRight.png").getImage();
        }
        y=(int)(Math.random()*700);
        length=350;
        height=250;
    }

    @Override
    public void drawFish(Graphics g) {
   

        super.drawFish(g);
        if(isMoveLeft) {
   
            g.drawImage(image, x--, y, length, height, null);
        }
        else
        {
   
            g.drawImage(image, x++, y, length, height, null);

        }
    }
}

import java.awt.*;

public class Fish {
   
    //鱼的属性:初始位置
    int power;//战力值
    int x;
    int y;
    int length;
    int height;
    Image image;

    boolean isMoveLeft=true;
    //对图片进行裁剪
    int x1,x2;
    int y1,y2;
    public void drawFish(Graphics g){
   

    };
}

import sun.audio.AudioPlayer;
import sun.audio.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值