首页 > 编程语言 >java课设——《RookieSuperMario》【菜鸟版超级玛丽

java课设——《RookieSuperMario》【菜鸟版超级玛丽

时间:2023-06-16 20:55:20浏览次数:48  
标签:ImageIO read 菜鸟 RookieSuperMario 超级玛丽 File new path png

项目简介:

我们团队利用面向对象开发方法和Java swing框架,对经典游戏《SuperMario》进行编写。

此项目共设施三个关卡,玩家可通过键盘来控制马里奥的移动,跳跃可以顶掉砖块,下落时还可以踩死蘑菇敌人,如果马里奥最终安全到达堡垒,则通关成功。

个人项目负责任务:

 

  1. 创建背景类(BackGround)和常量类(StaticValue)。调用read方法拼接图片路径,利用for循环绘制各关卡的地面、砖块和水管等(关卡的场景设计)。
  2. 将项目上传到远程git仓库。
  3. 使用issue推动项目进程:将项目开发过程中需要解决的重点和问题写上去,分门别类打上标签,清晰说明,方便解决。

项目git地址:

这里这里,我就是啦!!! 

Gitee issues面板:


 

 


 功能需求图:

 

 

 功能构架图:

黄底为我负责部分

静态扫描:

使用阿里巴巴静态代码扫描工具,对项目进行扫描

依据扫描出的问题并改正

 

本人负责模块的具体分析:

1.常量类(StaticValue.java):将要用到的图片素材打包进一个src下的软件包里(images),定义各变量存储单张素材物体,如Mario向左站立/向右站立、城堡、旗杆;对于多素材创建list集合来储存。然后将这些变量初始化操作【将图片与变量匹配以达到后续调用目的【图片路径用到的绝对路径(建议更改为相对路径)。

部分核心代码:

 //路径的前缀,方便后续调用
    public static String path = System.getProperty("user.dir") + "/src/images/";

    //初始化方法
    public static void init() {
        try {
            //加载背景图片
            bg = ImageIO.read(new File(path + "bg.png"));
            bg2 = ImageIO.read(new File(path + "bg2.png"));
            //加载马里奥向左站立
            stand_L = ImageIO.read(new File(path + "s_mario_stand_L.png"));
            //加载马里奥向右站立
            stand_R = ImageIO.read(new File(path + "s_mario_stand_R.png"));
            //加载城堡
            tower = ImageIO.read(new File(path + "tower.png"));
            //加载旗杆
            gan = ImageIO.read(new File(path + "gan.png"));
            //加载马里奥向左跳跃
            jump_L = ImageIO.read(new File(path + "s_mario_jump1_L.png"));
            //加载马里奥向右跳跃
            jump_R = ImageIO.read(new File(path + "s_mario_jump1_R.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }

        //加载马里奥向左跑
        for (int i = 1;i <= 2;i++) {
            try {
                run_L.add(ImageIO.read(new File(path + "s_mario_run"+ i +"_L.png")));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        //加载马里奥向右跑
        for (int i = 1;i <= 2;i++) {
            try {
                run_R.add(ImageIO.read(new File(path + "s_mario_run"+ i +"_R.png")));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        try {
            //加载障碍物
            obstacle.add(ImageIO.read(new File(path + "brick.png")));
            obstacle.add(ImageIO.read(new File(path + "soil_up.png")));
            obstacle.add(ImageIO.read(new File(path + "soil_base.png")));
        } catch (IOException e) {
            e.printStackTrace();
        }

 

2.背景类(BackGround.java):在构造方法里,分别对三个关卡的背景【地面绘制、两种砖块放置(可积分与不可积分)、固定建筑物】进行绘制。

核心代码:

 //判断是否是第一关
        if (sort == 1) {
            //绘制第一关的地面,上地面type=1,下地面type=2
            for (int i = 0;i < 27;i++) {
                obstacleList.add(new Obstacle(i*30,420,1,this));
            }
            for (int j = 0;j <= 120;j += 30) {
                for (int i = 0;i < 27;i++) {
                    obstacleList.add(new Obstacle(i*30,570-j,2,this));
                }
            }
            //绘制砖块A
            for (int i = 120;i <= 150;i += 30) {
                obstacleList.add(new Obstacle(i,300,7,this));
            }
            //绘制砖块B-F
            for (int i = 300;i <= 570;i += 30) {
                if (i == 360 || i == 390 || i == 480 || i == 510 || i == 540) {
                    obstacleList.add(new Obstacle(i,300,7,this));
                } else {
                    obstacleList.add(new Obstacle(i,300,0,this));
                }
            }
            //绘制砖块G
            for (int i = 420;i <= 450;i += 30) {
                obstacleList.add(new Obstacle(i,240,7,this));
            }
            //绘制水管
            for (int i = 360;i <= 600;i += 25) {
                if (i == 360) {
                    obstacleList.add(new Obstacle(620,i,3,this));
                    obstacleList.add(new Obstacle(645,i,4,this));
                }else {
                    obstacleList.add(new Obstacle(620,i,5,this));
                    obstacleList.add(new Obstacle(645,i,6,this));
                }
            }
            //绘制第一关的蘑菇敌人
            enemyList.add(new Enemy(580,385,true,1,this));
            //绘制第一关的食人花敌人
            enemyList.add(new Enemy(635,420,true,2,328,428,this));
        }

游戏运行展示:

第一关

第二关

第三关

 

 

标签:ImageIO,read,菜鸟,RookieSuperMario,超级玛丽,File,new,path,png
From: https://www.cnblogs.com/Charlie929/p/17479106.html

相关文章

  • Apache Storm教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介ApacheStorm是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架,具有最高的摄取率。虽然Storm是无状态的,它通过ApacheZooKeeper管理分布式环境和集群状态。它很简单,您可以并行地对实时数据执行各种操作。ApacheS......
  • Apache Spark教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介ApacheSpark是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UCBerkeleyAMPlab(加州大学伯克利分校的AMP实验室)所开源的类HadoopMapReduce的通用并行框架,Spark,拥有HadoopMapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存......
  • Aurelia教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介Aurelia是一个用于Web和移动应用程序开发的现代开源UI框架。它允许您编写干净、模块化的JavaScript。该框架遵循简单的约定,并专注于Web标准。Aurelia入门教程-从简单的步骤了解Aurelia,从基本到高级概念,包括概述,环境设置,第一个应用程序,配置,依赖注入,组件,组件生......
  • Axure RP教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介AxureRP是一款专业的快速原型设计工具。Axure(发音:Ack-sure),代表美国Axure公司;RP则是RapidPrototyping(快速原型)的缩写。AxureRP是美国AxureSoftwareSolution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格、设计功能和界面的专家能够快速创建应用软......
  • AWS Lambda 教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介AWSLambda是AWS在2014年推出的「无服务器」(Serverless)计算服务,用户无需管理服务器,可以更专注自己业务。由于上手简单,而且真正利用了云的优势,Lambda快速成为了一项明星服务。Lambda在可用性高的计算基础设施上运行您的代码,执行计算资源的所有管理工作,其中包括服务器和......
  • Java XML教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介XML是一种简单的基于文本的语言,旨在以纯文本格式存储和传输数据。它代表可扩展标记语言。JavaXML入门教程-从基本到高级概念的简单步骤了解JavaXML,其中包括概述,JavaXML解析器,DOM解析器,解析XML文档,查询XML文档,创建XML文档,修改XML文档,SAX解析器,JDOMXMLParser,StAXP......
  • 菜鸟攻略–C语言多文件编程初探(二):使用 gcc 手动编译多文件 C 程序
    step1:下载安装Dev-C++已经安装了Dev-C++或系统中的可以跳过这步。去官网下载Dev-C++。我昨天下载,发现有点慢,所以我把安装文件放到百度网盘了,供大家下载,下载链接为:http://pan.baidu.com/s/1pLPenDx。开始安装,记住安装位置。在安装时只能选择英文,安装完成后,第一次启动时可以选择......
  • Angular6 教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介Angular6是一个JavaScript框架,用于构建JavaScript,html和TypeScript中的Web应用程序和应用程序,它是JavaScript的超集。它是Angular的一个更新版本,相当于angular的6.x版本。Angular6入门教程-从基本到高级概念的简单的步骤了解Angular6,其中包括概述,环境设置,项目设置,......
  • 初识C语言:从0开始,由菜鸟变大牛(完结)
    上篇内容分享了两种语句(选择语句、循环语句)、函数、数组、各种操作符,本篇文章我们再来了解关于初识C语言的内容,同样,涉及到的知识不会太复杂,废话不多说,正文开始:1.常见关键字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatf......
  • Apache Solr 教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介ApacheSolr是一个开源搜索服务器。Solr是用Java语言开发的,主要基于HTTP和ApacheLucene实现。存储在ApacheSolr中的资源存储为Document对象。ApacheSolr入门教程-从基本概念开始,简单易学地了解ApacheSolr,其中包括概述,搜索引擎基础知识,Windows环境,Had......