用Java制作简易版的王者荣耀

第一步是创建项目 项目名自拟

第二部创建个包名 来规范class

创建类 GameFrame   运行类

package com.sxt;import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;import javax.swing.JButton;
import javax.swing.JFrame;public class GameFrame extends JFrame {// 窗口尺寸private int windowWidth = 1400;private int windowHeight = 700;// 双缓冲图片private Image offScreenImage = null;// 攻击图片private Image attack = Toolkit.getDefaultToolkit().getImage("img/attack.jpg");// 游戏背景Background background = new Background(this);// 游戏玩家Champion player = new ChampionHouyi(this);// 双方小兵MinionBlue mb = new MinionBlue(this);MinionRed mr = new MinionRed(this);// 防御塔Turret turret = new Turret(this);// 攻击按钮JButton attackButton;// 游戏元素列表ArrayList<GameObject> objList = new ArrayList<GameObject>();ArrayList<GameObject> redList = new ArrayList<GameObject>();// 红色方ArrayList<GameObject> blueList = new ArrayList<GameObject>();// 蓝色方ArrayList<GameObject> removeList = new ArrayList<GameObject>();// 存放将要删除的元素public void launch() {// 设置尺寸setSize(windowWidth, windowHeight);// 窗口居中setLocationRelativeTo(null);// 关闭事件setDefaultCloseOperation(3);// 用户不能调整窗口大小setResizable(false);// 标题setTitle("尚学堂王者荣耀");// 窗口可见setVisible(true);// 添加键盘监视器this.addKeyListener(new GameFrame.KeyMonitor());// 添加游戏元素objList.add(background);objList.add(player);objList.addAll(turret.turretList);blueList.add(turret.turretList.get(0));redList.add(turret.turretList.get(4));/*** 攻击按钮*/attackButton = new JButton();attackButton.setSize(130, 132);attackButton.setLocation(1150, 430);attackButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 按钮事件player.attack(redList);}});this.add(attackButton);player.addButton();while (true) {mb.createMinion(this, blueList);mr.createMinion(this, redList);turret.addTurret(this);repaint();try {Thread.sleep(25);} catch (Exception e) {e.printStackTrace();}}}public void paint(Graphics g) {// System.out.println(player.getX()+" "+player.getY());if (offScreenImage == null) {offScreenImage = this.createImage(5984, 4452);}Graphics gImage = offScreenImage.getGraphics();for (int i = 0; i < objList.size(); i++) {objList.get(i).paintSelf(gImage);}// 绘制攻击图片gImage.drawImage(attack, player.getX() + 500, player.getY() + 100, null);objList.removeAll(removeList);g.drawImage(offScreenImage, -player.getX() + 700, -player.getY() + 350, null);/*** 添加按钮后不能调用键盘事件 因为程序的焦点变成了按钮 this.requestFocus() 把焦点重新改变到游戏界面上*/this.requestFocus();}// main方法public static void main(String[] args) {GameFrame gameFrame = new GameFrame();gameFrame.launch();}// 键盘事件private class KeyMonitor extends KeyAdapter {@Overridepublic void keyPressed(KeyEvent e) {int key = e.getKeyCode();player.keyPressed(e);}@Overridepublic void keyReleased(KeyEvent e) {int key = e.getKeyCode();player.keyReleased(e);}}
}

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

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

相关文章

vivado综合分析与收敛技巧2

1、分解深层存储器配置 &#xff0c; 实现功耗与性能平衡 在深层存储器配置中 &#xff0c; 可使用综合属性 RAM_DECOMP 实现更好的存储器分解并降低功耗。此属性可在 RTL 中设置。将RAM_DECOMP 属性应用于存储器时 &#xff0c; 存储器是在较宽的原语配置中设置的 &#x…

JRT实现缓存协议

上一篇介绍的借助ORM的增、删、改和DolerGet方法&#xff0c;ORM可以很精准的知道热点数据做内存缓存。那么就有一个问题存在&#xff0c;即部署了多个站点时候&#xff0c;如果用户在一个Web里修改数据了&#xff0c;那么其他Web的ORM是不知道这个变化的&#xff0c;其他Web还…

rpc服务、微服务架构、分布式应用是什么

RPC&#xff08;Remote Procedure Call&#xff09;是远程过程调用的简称&#xff0c;它是一种通过网络从远程计算机程序上请求服务&#xff0c;而不需要了解底层网络技术的协议。简单来说&#xff0c;就是调用远程计算机上的函数或方法&#xff0c;就像调用本地的函数或方法一…

webpack如何处理浏览器的样式兼容问题postcss

一、准备工作 css/index.css添加样式 .word {color: red;user-select: none; } 为了兼容不同的浏览器我们需要添加前缀比如&#xff1a; -webkit-user-select: none; 这个工作可以通过postcss的插件postcss-preset-env处理 二、安装依赖 pnpm i -D postcss postcss-loader…

接口测试用例编写和接口测试模板

一、简介 接口测试区别于传统意义上的系统测试&#xff0c;下面介绍接口测试用例和接口测试报告。 二、接口测试用例模板 功能测试用例最重要的两个因素是测试步骤和预期结果&#xff0c;接口测试属于功能测试&#xff0c;所以同理。接口测试的步骤中&#xff0c;最重要的是将…

MySQL中的JOIN与IN:性能对比与最佳实践

文章目录 JOIN与IN的基本介绍JOININ JOIN与IN性能对比使用JOIN的查询使用IN的查询 何时使用JOIN何时使用IN性能优化的其他考虑因素总结 &#x1f389;MySQL中的JOIN与IN&#xff1a;性能对比与最佳实践 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈…

nginx: [error] open() “/usr/local/openresty/nginx/logs/nginx.pid“ failed (2:

错误原因&#xff1a;nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)&#xff0c;logs目录下缺少pid文件。 解决方法&#xff1a; 使用指定nginx.conf文件的方式重启nginx roothadoop100 conf]# /usr/local/openr…

<蓝桥杯软件赛>零基础备赛20周--第8周第1讲--十大排序

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周&#xff08;读者可以按…

香港服务器运行缓慢的原因是什么_Maizyun

香港服务器运行缓慢的原因是什么&#xff1f; 随着互联网的蓬勃发展&#xff0c;越来越多的企业和个人选择使用香港服务器来托管他们的网站或应用程序。 不过&#xff0c;在使用过程中&#xff0c;你可能会遇到一些问题&#xff0c;其中最常见的就是香港服务器运行缓慢。 本文…

Java中的单元测试,反射和枚举

知识模块 一.Junit单元测试 二.反射 三.枚举一.Junit单元测试a.概述Junit是一种Java写的单元测试框架&#xff0c;专门用来测试Java程序&#xff0c;它可以取代main方法b.Junit环境搭建由于Junit使用的类不属于我们JDK的类库&#xff0c;需要引入第三方jar包才能使用c.Junit使用…

身份验证和电子邮件的网络安全即将迎来地震

任何拥有 Gmail 或 Yahoo 电子邮件帐户的人都清楚&#xff0c;如果不是明确的欺诈企图&#xff0c;他们的收件箱中可能充满了未经请求的邮件。 这些服务的用户很可能多次想知道他们的提供商是否可以采取措施至少减少垃圾邮件的数量以及随之而来的诈骗风险。 好消息是&#xf…

AI查gdb使用

AI查询了一波GDB的使用&#xff0c;发现基础的命令还是很够的&#xff0c;不过给的都是全称&#xff0c;实际使用时都是用首字母查询问题的。 gdb是GNU调试器&#xff0c;是一种基于命令行的调试工具&#xff0c;可以用于调试C、C、Fortran、Assembly等编程语言编写的程序&…

多模态大模型总结1(2021和2022年)

常用损失函数 ITC &#xff08;image-text contrasctive loss&#xff09; CLIP中采用的对比损失&#xff0c;最大化配对文本对的余弦相似度&#xff0c;最小化非配对文本对的余弦相似度&#xff0c;采用交叉熵损失实现 MLM &#xff08;masked language modeling&#xff0…

Elasticsearch 相似度评分模型介绍

前言 Elasticsearch 是基于 Lucene 的世界范围内最流行的全文检索框架&#xff0c;其文档相似度算法包含 TF/IDF 和 BM25&#xff0c;从 ES 5.0开始 BM25 算法已经成为 ES 默认的相似度评分模块。 TF-IDF 与 BM25 的区别 TF-IDF 和 BM25 都是计算文本相似性的常用算法。TF-ID…

ESP32-S3 上电不断输出invalid header: 0xffffffff

现象如下&#xff1a; ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0x1 (POWERON),boot:0x8 (SPI_FAST_FLASH_BOOT) invalid header: 0xffffffff invalid header: 0xffffffff invalid header: 0xffffffff invalid header: 0xffffffff 原因&#xff1a;芯片内部固件问题…

统计英语单词

使用Scanner类和正则表达式统计一篇英文中的单词&#xff0c;要求如下&#xff1a; 1、一共出现了多少个单词。 2、有多少个互不相同的单词。 3、按单词出现的频率大小输出单词。 package 第七次; import java.util.*; import java.io.*; import java.util.regex.*;public …

人工智能助力医疗:科技护航健康未来

欢迎大家浏览我的博客。YinKais Blog | YinKais Blog 人工智能的魔法不仅仅体现在解决问题、提供建议的方面&#xff0c;更深刻地改变了医疗领域&#xff0c;成为我们健康的科技守护者。本文将聚焦于人工智能在医疗领域的应用&#xff0c;探讨它是如何助力医疗事业&#xff0c;…

重生奇迹mu召唤师攻略

一、技能系统 1、技能大类&#xff1a;召唤师主要有火焰职业技能和水元素技能。 2、火焰职业技能&#xff1a;主要是使用火焰元素进行攻击&#xff0c;可以攻击单个目标&#xff0c;也可以同时攻击多个目标。 3、水元素技能&#xff1a;主要是对多个敌方单位使用水元素&…

在 Spring Boot 中使用 MyBatis-Plus 进行批量操作数据

引言 MyBatis-Plus 是 MyBatis 的增强工具包&#xff0c;提供了许多便捷的功能来简化 MyBatis 的使用。在实际项目中&#xff0c;我们经常需要进行批量的数据操作&#xff0c;例如批量插入、批量更新和批量删除。本文将介绍如何在 Spring Boot 中使用 MyBatis-Plus 进行这些批…

ZFPlayer 播放视频的时候的视图层级

未播放的时候 首先看正常展示的时候&#xff0c;还没又开始播放 这个时候我们打开图层看一下&#xff0c;发现视频时长和播放按钮都是放在 视频封面图上的 播放的时候 我们看到的播放视频的画面 我们发现&#xff0c;我们之前在未播放状态看到的视图&#xff0c;仍然还在…