Java超级玛丽小游戏制作过程讲解 第六天 创建背景类

package com.sxt;import java.awt.image.BufferedImage;public class BackGround {//当前场景要显示的图像
private BufferedImage bgImage=null;//记录当前是第几个场景
private int sort;//判断是否是最后一个场景
private boolean flag;public BackGround(){}public BackGround(int sort, boolean flag){this.sort=sort;this.flag=flag;if(flag){bgImage=StaticValue.bg2;}else{bgImage=StaticValue.bg;}}public BufferedImage getBgImage() {return bgImage;}public int getSort() {return sort;}public boolean isFlag() {return flag;}}

我们新建一个BackGround类。

这段代码是一个名为`BackGround`的Java类,用于表示背景图像和场景。它具有以下属性和方法:

1. `bgImage`:表示当前场景要显示的图像的`BufferedImage`对象。

2. `sort`:记录当前是第几个场景的整数值。

3. `flag`:判断是否是最后一个场景的布尔值。

构造方法:

- 无参数构造方法:创建一个空的背景对象。

- 带参数构造方法:接受一个整数值和一个布尔值作为参数,分别表示场景的排序和是否为最后一个场景。根据参数的不同,设置`bgImage`为相应的背景图像。

提供了以下公共方法(getter):

- `getBgImage()`:获取当前场景要显示的图像。

- `getSort()`:获取当前场景的排序。

- `isFlag()`:判断是否是最后一个场景。

这个类的作用是管理场景的背景图像,根据场景的排序和是否为最后一个场景,选择相应的背景图像进行显示。

private BufferedImage bgImage=null;//记录当前是第几个场景
private int sort;//判断是否是最后一个场景
private boolean flag;public BackGround(){}

这段代码是`BackGround`类的成员变量和无参构造方法。

1. `private BufferedImage bgImage=null;`:这是一个私有成员变量,用于存储当前场景要显示的图像。它的类型是`BufferedImage`,初始化为`null`。

2. `private int sort;`:这是一个私有成员变量,用于记录当前场景的排序。它的类型是整数。

3. `private boolean flag;`:这是一个私有成员变量,用于判断是否是最后一个场景。它的类型是布尔值。

4. `public BackGround(){}`:这是一个无参构造方法。在这个构造方法中,没有任何具体的逻辑实现。它被用作创建`BackGround`对象时的默认构造方法。

这些成员变量和构造方法提供了`BackGround`类的基本组件,其中`bgImage`用于存储图像,`sort`用于记录场景顺序,`flag`用于判断是否是最后一个场景,而无参构造方法用于创建实例对象。

知识小科普:将成员变量设置为`private`是一种封装的实践,它有以下几个原因:

1. 数据隐藏:将成员变量设置为`private`可以隐藏内部实现细节,只暴露必要的方法给外部访问。这样可以提高代码的安全性和可维护性,防止外部直接修改成员变量的值,而通过定义的公共方法进行控制和限制访问。

2. 封装性:将成员变量设置为`private`可以提供更好的封装性。对外部来说,只需通过公共方法来访问和操作成员变量,而不需要了解其具体实现细节。这样在后续的开发和维护过程中,可以更灵活地修改内部实现,而不会对外部代码造成影响。

3. 控制权限:通过将成员变量设置为`private`,可以精确地控制对成员变量的访问权限。只有本类内部的方法才能直接访问和修改这些成员变量,其他外部类或对象无法直接操作。这样可以提高代码的安全性,并减少错误和意外的发生。

综上所述,将成员变量设置为`private`是一种良好的封装实践,可以隐藏实现细节,提供更好的封装性和控制权限,从而保护数据的安全性和代码的可维护性。

public BufferedImage getBgImage() {return bgImage;
}public int getSort() {return sort;
}public boolean isFlag() {return flag;
}

Getter方法(也称为访问器方法)是一种常见的面向对象编程的概念,用于获取对象的私有属性值。在这段代码中,getter方法被用来获取`BackGround`类中的私有属性值。

使用getter方法的好处包括:

1. 封装性:getter方法可以提供对私有属性的访问,并同时隐藏了内部实现的细节。通过使用getter方法,将属性的访问限制在类内部,可以避免对属性的直接访问和修改,增强了类的封装性和数据安全性。

2. 可控性:通过getter方法,我们可以在获取属性值时进行额外的逻辑处理。例如,在获取`bgImage`属性值时,可能进行一些图像处理或者返回属性的副本以保持数据的不可变性。这样可以确保属性值的正确性和一致性。

3. 扩展性:如果以后需要对属性的获取逻辑进行修改或添加其他功能,只需要修改getter方法的实现,而不需要修改使用该属性的其他代码。这样可以减少代码的依赖性,提高代码的灵活性和可维护性。

在给定的代码中,我们可以通过调用`getBgImage()`、`getSort()`和`isFlag()`方法,获取`bgImage`、`sort`和`flag`的值,而无需直接访问这些私有属性。这样可以保持`BackGround`类的封装和内部实现的私有性,同时提供了对属性值的安全访问方式。

声明:小游戏源码来自b站视频(up:编程学习会员Q),本文仅根据源码做知识性补充与注解。如存在不当使用的情况,请随时联系删除。

http://【【Java项目】不到两小时用Java做出超级玛丽小游戏_手把手教你开发游戏_超详细保姆级教程_Java编程_Java游戏开发-Java基础-Java练手项目】https://www.bilibili.com/video/BV1DZ4y1Y73M?p=8&vd_source=70e680aaeedc45cb797fd52fdd25367c

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CGroupAndroid实践篇】四、Native Service进程启动及控制组迁移

写在前面 承接上一篇,在cgroup子系统初始化完成后,init会继续执行开机流程,且通过代哦用ExecuteCommand()函数。 /system/core/init/init.cppint SecondStageMain(int argc, char** argv) {......ActionManager& am = ActionManager::GetInstance();am.ExecuteOneCo…

ASIC芯片设计全流程项目实战课重磅上线 ,支持 65nm制程流片 !

全流程项目实战课学什么? 此次推出【 ASIC芯片设计全流程项目实战课】,基于IPA图像处理加速器,以企业级真实ASIC项目为案例,学员可参与全流程项目实践,以及65nm真实流片! 众所周知,放眼整个IC硕…

【Linux】【驱动】驱动框架以及挂载驱动

【Linux】【驱动】驱动框架以及挂载驱动 绪论1.配置开发环境2. 编写驱动文件3. 编译Makefile文件4.编译5. 挂载驱动注意:有些开发板打开了或者禁止了printk信息,导致你看到的实验现象可能不一样,此时已经将文件移动到了开发板中,开发板查看文…

Flink CEP(Complex Event Processing)库

复杂事件处理(Complex Event Processing,CEP)是一种用于在流式数据中识别和处理复杂事件模式的技术。Apache Flink 作为一个流式处理框架,也可以用于实现复杂事件处理。下面是 Flink 中实现复杂事件处理的一般原理: 事…

WebRTC音视频通话-新增或修改SDP中的码率Bitrate限制

WebRTC音视频通话-新增或修改SDP中的码率Bitrate限制参数 之前搭建ossrs服务,可以查看:https://blog.csdn.net/gloryFlow/article/details/132257196 之前实现iOS端调用ossrs音视频通话,可以查看:https://blog.csdn.net/gloryFlo…

连接不上手机,adb devices为空:

首先说明一下,我是已经安装了android studio,也配置了环境变量,但是还是连接不上手机 解决方案: 1.打开开发者模式 https://product.pconline.com.cn/itbk/sjtx/sjwt/1424/14246015.html 2.开启usb调试 https://baiyunju.cc/10770 最后成功…

Nginx:Web基础与HTTP协议

目录 1、dns域名 1.1 dns解析方式: 1.2 域名解析服务器: 2、html 2.1 网页、网站和主页、域名 2.2 URL和URI 3、Web(全球广域网,也称万维网) 3.1 静态页面 3.1.1 静态页面特点 3.2 动态页面 3.2.1 动态页面…

什么是CSS的box-sizing属性?它有哪些取值,各有什么不同?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CSS的box-sizing属性⭐ 取值⭐ 不同之处⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web…

关于Vue构建低代码平台的思考

一、前言 在项目实战开发中,尤其是大平台系统的搭建,针对不同业务场景,需要为用户多次编写用于录入、修改、展示操作的相应表单页面。一旦表单需求过多,对于开发人员来说,算是一种重复开发,甚至是繁杂的工作…

【C++起飞之路】初级—— auto、范围for循环、宏函数和内联函数

auto、范围for、内联函数、宏函数和nullptr 一、auto — 类型推导的魔法(C 11)1、auto 是什么?2、工作原理3、优势4、限制和注意事项 二、范围for (C11)1、基本语法2、优势3、工作原理4、注意事项5、C11: 范围 for 循环的扩展: 三…

软件测试基础篇——LAMP环境搭建

LAMP 1、Linux系统的其他命令 find命令:在目录下查找文件 ​ 格式一:find 路径 参数 文件名 ​ 路径:如果没有指定路径,默认是在当前目录下 ​ 参数:-name 根据文件名来查找,区分大小写; -…

useState() 的使用及场景

useState是 React提供的一个Hook函数,用于在函数组件中添加和管理状态。它允许你在函数组件中定义一个可变的状态,并在组件的生命周期中对状态进行更新和访问。 使用useState可以避免使用类组件时需要定义和管理繁琐的constructor,state和se…

HOT83-打家劫舍

leetcode原题链接:打家劫舍 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系…

适配器模式(C++)

定义 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 应用场景 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象 ”放在新的环境中应用,但是新环境要求…

【Golang】一文学完 Golang 基本语法

Golang 下载 安装包链接:https://share.weiyun.com/InsZoHHu IDE 下载:https://www.jetbrains.com/go/ 第一个 golang 程序 package mainimport "fmt"func main() {fmt.Println("hello golang") }每个可执行代码都必须包含 Pack…

Flutter 状态管理 Provider

状态管理必要性 Flutter基于声明式构建UI,原生则是命令式,状态管理是用于解决声明式开发带来的问题。 例:命令式的原生,数据更新需要拿到对应控件并更改其显示值;而声明式则需要更改数据值并通过setstate更新状态&am…

sql高频面试题-连续完成两个指定动作的用户统计

用户行为分析 业务背景 某购物APP最近上线了一个新功能,用户签到后可以跳转到大转盘抽奖,抽奖获得的奖金可以抵消购物的费用,以此来培养用户使用app的习惯。 数据表介绍 现有一张用户行为表action_log,主要字段如下&#xff0c…

springboot mongodb 配置多数据源

我想要的效果是,一个类统一管理多数据源,我传个参数进去,它就能返回我对应的mongotemplate 但是根据"mongbodb 多数据源"的关键词,找不到我想要的效果。 网上大多都是明确知道自己是几个数据源,然后每个数…

Styletron: 面向组件的样式设计工具包

styletron官网: styletron的GitHub链接: styletron-react 一. 介绍 Styletron是一个通用的component-oriented(面向组件的)样式工具。它属于css-in-js类别。Styletron可以很好地与React配合使用,但也可以与其他框架或…

docker复现nginx错误配置漏洞

目录 一、nginx环境搭建 1.1搭建步骤 二、docker复现Nginx配置漏洞 2.1安装docker 2.2复现过程 2.1CRLF(carriage return/line feed)注入漏洞 2.2.目录穿越 一、nginx环境搭建 1.1搭建步骤 1.先创建Nginx的目录并进入(命令如下) mkdir /soft &&…