java第三天(游戏开发)

学到

双缓存机制

public void paint(Graphics g) {//		  super.paint(g);//createImage(width, height) 是一个方法调用,它创建了一个指定宽度和高度的空图像缓冲区。这个方//法可以在 Component 类中找到,因此任何从 Component 继承的类(比如 Applet 或 JPanel)都可以使用这个方法。if (offimagescreen == null) {offimagescreen = createImage(width, height);}Graphics gimage=offimagescreen.getGraphics();//Graphics gimage = offimagescreen.getGraphics(); 这行代码是用来获取之前//创建的屏幕外图像缓冲区(offimagescreen)的Graphics对象,这样你就可以在这个图像上进行绘制操作了// 调用父类的paint方法来确保其他组件也被绘制// 确保图像已经被加载// 正确的方式是使用静态变量try {g.drawImage(game_pic.bgimgage,0,0,null);//这个是绘制底板,缓存区域} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}switch (state) {case 0:gimage.drawImage(game_pic.bgimgage,0,0,null);//背景面这些是将底板都加到缓存区域上gimage.setColor(Color.pink);//设置笔为粉红//			gimage/设置字体gimage.setFont(new Font("仿宋", Font.BOLD,60));gimage.drawString("hello world",700,500);break;case 1:bgg.paintself(gimage);ennFish.x+=30;System.out.println("下载");ennFish.paintself(gimage);System.out.println(ennFish.x);break;case 2:break;case 3:break;case 4:break;default:}g.drawImage(offimagescreen,0,0,null);//这里将所有缓存的一次加载到图片上
//			g.drawImage(game_pic.dirmgage1,0,0,null);

这是,如果有两个图片加载,那么有图片的两个一起加载就不会造成闪烁了

if (offimagescreen == null) {offimagescreen = createImage(width, height);}Graphics gimage=offimagescreen.getGraphics();//Graphics gimage = offimagescreen.getGraphics(); 这行代码是用来获取之前//创建的屏幕外图像缓冲区(offimagescreen)的Graphics对象,这样你就可以在这个图像上进行绘制操作了// 调用父类的paint方法来确保其他组件也被绘制// 确保图像已经被加载// 正确的方式是使用静态变量

这里eImage 函数或方法通常用于创建一个新的图像对象,尤其是在处理图形用户界面(GUI)或游戏开发时。具体到您给出的代码行 offimagescreen = createImage(width, height);,这行代码的意图是创建一个指定宽度和高度的图像对象,并将其赋值给变量 offimagescree

然后

Graphics gimage=offimagescreen.getGraphics();//Graphics gimage = offimagescreen.getGraphics(); 这行代码是用来获取之前

//创建的屏幕外图像缓冲区(offimagescreen)的Graphics对象,这样你就可以在这个图像上进行绘制操作了

底板g.drawImage(game_pic.bgimgage,0,0,null);//这个是绘制底板,缓存区域,

鼠标事件后  

case 0:

gimage.drawImage(game_pic.bgimgage,0,0,null);//背景面这些是将底板都加到缓存区域上

gimage.setColor(Color.pink);//设置笔为粉红

// gimage/设置字体

gimage.setFont(new Font("仿宋", Font.BOLD,60));

gimage.drawString("hello world",700,500);

在Java编程语言中,特别是涉及到图形用户界面(GUI)或者游戏开发时,您可能会看到类似这样的代码。这段代码看起来是用于在图像上绘制内容。以下是代码的逐行解释:

  1. gimage.drawImage(game_pic.bgimgage, 0, 0, null);

    • 这行代码的作用是将名为 game_pic.bgimgage 的图像绘制到 gimage 对象所代表的图形上下文中。0, 0 是图像的绘制位置,即左上角。最后一个参数 null 通常代表图像观察者,在这里它被设置为 null,意味着不需要通知任何观察者图像已经绘制完毕。
  2. 然后在

    case 1:

    bgg.paintself(gimage);

    ennFish.x+=30;

    System.out.println("下载");

    ennFish.paintself(gimage);

    System.out.println(ennFish.x);时将几个图片放入gimage,

  3. 后面再一次带入g.drawImage(offimagescreen,0,0,null);/

还有就是实现滑动

package common;
import java.awt.*;
import common.game_pic;
public class fish {//定义图片Image img;//定义坐标int x;int y;int width;int height;//移动速度int speed;//方向定义int dir=1;//类型int type;//分值int count;//距离,用于检测自身//距离,用于碰撞检测public Rectangle getrec () {return new Rectangle(x,y,width,height);//就相当于是返回一个对象}public void paintself(Graphics g ) {g.drawImage(img,x,0,null);//背景面}}//敌方鱼左边的鱼
class ennamy_l extends fish{
//	ennamy_l(){
//		
//	}构造方法public ennamy_l() {// TODO Auto-generated constructor stubthis.x=5;this.y = (int)(Math.random() * 700 + 100);this.width=45;this.height=69;this.speed=10;this.count=1;this.img=game_pic.dirmgage1;}public void ds(Graphics g ) {g.drawImage(img,0,0,null);//背景面}}

这个是fish的,保证repaint来把这个刷新

public void mouseClicked(MouseEvent e) {super.mouseClicked(e);if (e.getButton()==1&&state==0) {state=1;repaint();//重新绘制/*总的来说,repaint 方法属于 Component 类,这是所有Swing组件的父类。因此,所有继承自 Component 类的Swing组件,* 如 JButton, JPanel, JFrame 等,都有 repaint 方法。repaint 是Swing组件更新显示的一个关键方法,用于确保用户界面能够反映组件的最新状态。* repaint() 调用的位置是正确的,它位于状态改变之后,这样就可以确保组件在状态改变后能够重新绘制自己,以反映新的状态。*/}}}

时间的定时器

Timer tim=new Timer(400, new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubrepaint();}} );tim.start();

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

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

相关文章

Unix:Linux的“祖师爷”

目录 Unix的诞生 Unix对Linux的深远影响 Unix与Linux区别在哪里? Unix的诞生 Unix操作系统诞生于1969年,由肯汤普逊(Kenneth Lane Thompson)和丹尼斯里奇(Dennis MacAlistair Ritchie)在AT&T的贝尔实…

牛客周赛 Round 65

文章目录 超市思路:Solved: 雨幕思路:Solved: 闺蜜思路:Solved: 医生思路:Solved: 降温(easy)思路:Solved: F-降温(hard&a…

iOS Swift逆向——被编译优化后的函数参数调用约定修复

头文件导入: typedef long long s64; typedef unsigned long long u64;typedef s64 Int; typedef u64 Bool;struct Swift::String {u64 _countAndFlagsBits;void *_object; };union Swift_ElementAny {Swift::String stringElement; };struct Swift_Any {Swift_Ele…

前端算法:树(力扣144、94、145、100、104题)

目录 一、树(Tree) 1.介绍 2.特点 3.基本术语 4.种类 二、树之操作 1.遍历 前序遍历(Pre-order Traversal):访问根节点 -> 遍历左子树 -> 遍历右子树。 中序遍历(In-order Traversal&#xf…

Spring Web MVC 入门

1. 什么是 Spring Web MVC Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从从⼀开始就包含在Spring框架中。它的 正式名称“SpringWebMVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为"Spring MVC". 什么是Servlet呢? Ser…

错误:无法推送一些引用到 ‘https://gitee.com/chek_kk/python-electron-app.git‘

这个错误提示说明在提交时某个文件的大小超过了 Gitee 仓库的单文件大小限制(100MB)。你需要从Git 历史中彻底移除这个大文件,否则无法推送到远程仓库。 解决步骤 1. 确认大文件信息 使用以下命令找出超过限制的大文件: git re…

Oracle OCP认证考试考点详解082系列01

题记: 本篇博文是Oracle OCP认证考试考点详解082系列的第一篇,本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 1. 第一题: 1. 题目 2. 解析及答案 关于Oracle数据库中节…

映射问题的解决办法(mybaitis)

最初我用的是注解来操控数据库&#xff08;注释掉的部分&#xff09; Mapper public interface ThreadMapper {// Select("SELECT * FROM thread LIMIT #{page}, #{size}")List<Thread> getListByPage(Param("page") int page, Param("size&qu…

网络安全证书介绍

网络安全领域有很多专业的证书&#xff0c;可以帮助你提升知识和技能&#xff0c;增强在这个行业中的竞争力。以下是一些常见的网络安全证书&#xff1a; 1. CompTIA Security 适合人群&#xff1a;初级安全专业人员证书内容&#xff1a;基础的网络安全概念和实践&#xff0c…

嵌入式学习-网络-Day03

嵌入式学习-网络-Day03 1.linux下IO模型及特点 1.1阻塞式IO 1.2非阻塞式IO 设置非阻塞&#xff1a; 1&#xff09;通过函数参数设置 2&#xff09;通过fcntl函数设置文件描述符属性 1.3信号驱动IO&#xff08;异步IO&#xff09; 1.4IO多路复用&#xff08;重点&#xff09; IO…

【Qt】QTableView添加下拉框过滤条件

实现通过带复选框的下拉框来为表格添加过滤条件 带复选框的下拉框 .h文件 #pragma once #include <QCheckBox> #include <QComboBox> #include <QEvent> #include <QLineEdit> #include <QListWidget>class TableComboBox : public QComboBox …

云渲染渲染100怎么使用?

下载安装步骤&#xff1a; 访问官方网站下载客户端&#xff1a; 请访问渲染100官网&#xff1a;云渲染_性价比更高的3D云渲染平台_渲染100【官网】&#xff0c;并点击“客户端下载”按钮。 安装程序&#xff1a; 下载完成后&#xff0c;双击安装文件进行安装。在安装过程中&am…

数据挖掘(一)

数据挖掘&#xff08;一&#xff09; 文章目录 数据挖掘&#xff08;一&#xff09;亲和性分析示例分类问题的简单示例完整实例 数据挖掘旨在让计算机根据已有数据做出决策。决策可以是预测明天的天气、拦截垃圾邮件、检测网站的语言&#xff0c;或者在约会网站上发现新的恋爱对…

StarRocks数据库在SQL语句中解析JSON字符串

StarRocks数据库在SQL语句中解析JSON字符串 -- 使用数据库 use sr_test; -- 删除表 drop table ts_usr; -- 创建表 CREATE TABLE ts_usr ( uid bigint NOT NULL COMMENT "用户id", uname varchar(64) NULL COMMENT "用户名", ujson varchar(1024) NULL CO…

监控易FAQ:批量新增监测点和设备

FAQ概览&#xff1a; 批量新增监测点流程&#xff1a;下载模板、填写信息及上传验证批量新增设备指南&#xff1a;选模板、填关键信息、注意上传细节接口信息与名称填写建议&#xff1a;特定监测项手动选择&#xff0c;避免批量添加新功能亮点&#xff1a;设备智能分类与核心使…

css隐藏元素滚动条

Chrome和Safari浏览器 使用CSS滚动条选择器&#xff0c;然后设置display&#xff1a;none隐藏它&#xff1a; ::-webkit-scrollbar {display: none; /* Chrome Safari */ }Firefox浏览器 将滚动条宽度设置为none&#xff1a; scrollbar-width: none; /* Firefox */IE浏览器…

记录运维大屏监控平台的开发、springboot实现服务器性能监测分析系统

1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a;windows 7…

OpenGL摄像机

摄像机类是基于坐标系统实现的&#xff0c;有关坐标系统&#xff1a;坐标系统。 摄像机基类 .h #ifndef QTOPENGL_CAMERA_H #define QTOPENGL_CAMERA_H#include<QMatrix4x4> #include <vector> #include <QOpenGLShaderProgram>#define PI 3.1415926535897…

Cesium基础-(Entity)-(Box)

** 里边包含Vue、React框架代码详细步骤、以及代码详细解释 ** 3、Box 盒子 以下是 BoxGeometry 类的属性、方法和静态方法,以表格形式展示: 属性 属性名类型默认值描述minimumCartesian3盒子的最小 x, y, 和 z 坐标。maximumCartesian3盒子的最大 x, y, 和 z 坐标。vertex…

UDS 0x3E service

0x3E service 1. 概念2. Request message 数据格式2.1 子服务3. Respone message 数据格式3.1 正响应格式3.2 negative respone codes(NRC)4. 示例4.1 正响应示例:4.2 NRC 示例1. 概念 UDS 0x3E服务,即TesterPresent服务,是一种在统一诊断服务(UDS)中使用的诊断会话保持机…