建设增塑剂网站沧州市注册网络公司

bicheng/2026/1/17 6:01:09/文章来源:
建设增塑剂网站,沧州市注册网络公司,wordpress上传视频插件,专门做童装的网站GUI编程 04 贪吃蛇小游戏 4.3 第三步#xff1a;让小蛇动起来(键盘控制) 首先#xff0c;在构造器中要获取焦点事件、键盘监听事件并加入定时器(定时器定义需要实现ActionListener接口并重写actionPerformed方法)#xff1a; //构造器public GamePanel() {init();this.s…GUI编程 04 贪吃蛇小游戏 4.3 第三步让小蛇动起来(键盘控制) 首先在构造器中要获取焦点事件、键盘监听事件并加入定时器(定时器定义需要实现ActionListener接口并重写actionPerformed方法) //构造器public GamePanel() {init();this.setFocusable(true); //获取焦点事件this.addKeyListener(this); //获取键盘监听事件timer.start(); //游戏一开始定时器就启动}然后在键盘监听事件中通过定时器来实现监听(即通过固定的时间进行刷新)并加入对上下左右按键的判断以实现改变小蛇身体的对应走向 //键盘监听事件Overridepublic void keyPressed(KeyEvent e) {int keyCode e.getKeyCode(); //获取键盘按键if (keyCode KeyEvent.VK_SPACE) {isStart !isStart;repaint();}//键盘监听到按键后画上对应方向的蛇头if (keyCode KeyEvent.VK_UP) {direction U;} else if (keyCode KeyEvent.VK_DOWN) {direction D;} else if (keyCode KeyEvent.VK_LEFT) {direction L;} else if (keyCode KeyEvent.VK_RIGHT) {direction R;}}下面对实现ActionListener接口的actionPerformed方法进行重写 //事件监听需要定时器来实现即通过固定的时间进行刷新(例如1s10次)Overridepublic void actionPerformed(ActionEvent e) {if (isStart) {//小蛇身体右移for (int i length - 1; i 0; i--) { //后一节身体移动至前一节 snakeX[1] snakeX[0]snakeX[i] snakeX[i - 1];snakeY[i] snakeY[i - 1];}//判断蛇头走向switch (direction) {case R:snakeX[0] 25;//边界判断if (snakeX[0] 850) {snakeX[0] 25;}break;case L:snakeX[0] - 25;//边界判断if (snakeX[0] 25) {snakeX[0] 850;}break;case U:snakeY[0] - 25;//边界判断if (snakeY[0] 75) {snakeY[0] 650;}break;case D:snakeY[0] 25;//边界判断if (snakeY[0] 650) {snakeY[0] 75;}break;}repaint();}timer.start();}综上GamePanel类中代码如下 package com.duo.snake;import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.Objects;//游戏的面板 public class GamePanel extends JPanel implements KeyListener, ActionListener {//定义蛇的数据结构int length; //小蛇总长int[] snakeX new int[600]; //蛇的X坐标 25*25int[] snakeY new int[500]; //蛇的Y坐标 25*25String direction; //蛇头方向boolean isStart false; //默认未开始游戏//定时器Timer timer new Timer(250, this); //100ms执行一次//构造器public GamePanel() {init();this.setFocusable(true); //获取焦点事件this.addKeyListener(this); //获取键盘监听事件timer.start(); //游戏一开始定时器就启动}//初始化方法public void init() {length 3;snakeX[0] 100; snakeY[0] 100; //脑袋的坐标snakeX[1] 75; snakeY[1] 100; //第一节身体的坐标snakeX[2] 50; snakeY[2] 100; //第二节身体的坐标direction R; //蛇头初始向右}//绘制静态面板Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g); //起到清屏的作用Data.header.paintIcon(this, g, 25, 11); //将广告栏画入面板g.fillRect(25, 75, 850, 600); //默认的游戏界面(黑色区域)this.setBackground(Color.white);//将小蛇画入面板中的游戏区域且蛇头部分需要判断方向switch (direction) {case R:Data.right.paintIcon(this, g, snakeX[0], snakeY[0]);break;case L:Data.left.paintIcon(this, g, snakeX[0], snakeY[0]);break;case U:Data.up.paintIcon(this, g, snakeX[0], snakeY[0]);break;case D:Data.down.paintIcon(this, g, snakeX[0], snakeY[0]);break;}//画小蛇的身体部分for (int i 1; i length; i) {Data.body.paintIcon(this, g, snakeX[i], snakeY[i]);}//绘制当前游戏状态if (!isStart) {g.setColor(Color.white);g.setFont(new Font(宋体, Font.BOLD, 40));g.drawString(按下空格开始游戏, 300, 300);}}//键盘监听事件Overridepublic void keyPressed(KeyEvent e) {int keyCode e.getKeyCode(); //获取键盘按键if (keyCode KeyEvent.VK_SPACE) {isStart !isStart;repaint();}//键盘监听到按键后画上对应方向的蛇头if (keyCode KeyEvent.VK_UP) {direction U;} else if (keyCode KeyEvent.VK_DOWN) {direction D;} else if (keyCode KeyEvent.VK_LEFT) {direction L;} else if (keyCode KeyEvent.VK_RIGHT) {direction R;}}//事件监听需要定时器来实现即通过固定的时间进行刷新(例如1s10次)Overridepublic void actionPerformed(ActionEvent e) {if (isStart) {//小蛇身体右移for (int i length - 1; i 0; i--) { //后一节身体移动至前一节 snakeX[1] snakeX[0]snakeX[i] snakeX[i - 1];snakeY[i] snakeY[i - 1];}//判断蛇头走向switch (direction) {case R:snakeX[0] 25;//边界判断if (snakeX[0] 850) {snakeX[0] 25;}break;case L:snakeX[0] - 25;//边界判断if (snakeX[0] 25) {snakeX[0] 850;}break;case U:snakeY[0] - 25;//边界判断if (snakeY[0] 75) {snakeY[0] 650;}break;case D:snakeY[0] 25;//边界判断if (snakeY[0] 650) {snakeY[0] 75;}break;}repaint();}timer.start();}Overridepublic void keyReleased(KeyEvent e) {}Overridepublic void keyTyped(KeyEvent e) {} }运行结果如下 游戏未开始时 未按方向键小蛇默认一直向右移动直到边界满足边界判断条件并重新回到界面左端 按下下键小蛇向下移动 至此小蛇可根据键盘按键进行对应方向的移动。此时还未加入食物且当蛇头触碰蛇身时并不会触发游戏失败这将在下一篇内容中给出。

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

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

相关文章

网页设计作业制作个人网站wordpress+评论顺序

Ribbon是Netflix开源的一个基于HTTP和TCP客户端负载均衡器。它主要用于在微服务架构中实现客户端负载均衡,将请求分发到多个服务提供者上,从而实现高可用性和扩展性。 Ribbon的主要特点包括: 客户端负载均衡:Ribbon是一个客户端负…

可以做秋招笔试题的网站代理网址在线

getRemoteHost()、getServerName()、getLocalName()区别 request.getRemoteHost(): 返回客户端主机的名称,而不是直接的IP地址 实现机制通常是通过DNS反向查询 request.getRemoteAddr() 返回的IP地址以得到对应的主机名。如果反向解析失败、出于性能原…

做网站投广告赚钱么wordpress二级域名使用七牛

0、需求 项目开发中遇到在ROS2中调用pytorch,但pytorch安装在了conda环境下。如果独立安装ros和conda会存在python版本、ubuntu系统版本的问题。网上还没看到比较好的解决方案,通过探索发现以下方案,实现的效果是在一个conda环境中&#xff…

五华网站建设十堰市建设工程管理处网站

MATLAB 基于CPD的点云配准 (24) 一、算法简介二、具体使用1.代码(注释详细)2.函数介绍3.使用技巧4.重复叠加配准效果如何一、算法简介 MATLAB 中包含了一种基于CPD的点云配准方法,这里对其进行使用,查看其配准效果,结果来看如上图所示,还是可用的。 二、具体使用 1.代…

网站建设方案样本安卓ui用什么软件设计

在Python中,self 是一个特殊的关键字,主要用于类(class)的定义中,表示类的实例(instance)本身。以下是对 self 的详细解释: 类和实例的概念: 类(Class&#…

哪些网站做黑名单电子商务网站建设及推广方案

Adobe Acrobat如何做PDF文档签名?PDF文档签名是指对PDF文档进行基于证书的数字签名,类似于传统的手写签名,可标识签名文档的人员。与手写签名不同,数字签名难以伪造,因为其包含签名者唯一的加密信息。为PDF文档进行基于…

泰安市建设局网站企业邮箱账号是什么

目录 引出Java开发中通用的方法和准则建议1:不要在常量和变量中出现易混淆的字母建议2:莫让常量蜕变成变量建议3:三元操作符的类型务必一致建议4:避免带有变长参数的方法重载建议5:别让null值和空值威胁到变长方法建议6:覆写变长方法也循规蹈矩建议7:警惕自增的陷阱建议…

wordpress网站怎么建wordpress saml

打开环境 img传参还有cmd img应该是base,先解码看看 3535352e706e67 这个好像是十六进制的,再解 访问一下看看,得到一张图片 尝试base解码,但是没有什么发现 再看看地址栏出现index.php,应该是要下载源码,但是还没有…

cuteftp可以上传网站吗营销策划案

Meta分析,又称元分析,是一种统计方法,用于整合多个独立研究的结果,从而得出更为全面、可靠的结论。在生态领域,Meta分析发挥着越来越重要的作用,它有助于解决单个研究样本量小、结果不一致等问题&#xff0…

网站开发前后端分离要多少钱汕头电商网站建设

简介: 经过“双11”、“618”这类互联网促销活动的验证,越来越多的互联网公司采用不定期营销活动来刺激消费,达到提升营收能力的目标。然而,在每一次业务狂欢的背后,如何科学地为促销活动准备相应的计算资源就变成了困…

网站上添加百度地图ui生成器网站

Java类和接口是面向对象编程的基本概念,类用来描述对象的属性和行为,接口定义一组方法的规范。匿名类是一种特殊的类,它没有名字,在使用时直接定义和实例化。 Java中常见的类和接口有很多,包括基本类(如Str…

网站整体风格横店影视城网站建设

全世界只有3.14 % 的人关注了爆炸吧知识制作团队制作人 超模君编剧 恐恐恐插画 杨羊羊 友情出演 超模君 章小天……小天吐槽时刻……超模君之后还会采访谁呢小天有小道消息哦扫描这个二维码你将会有机会见识到超模君的科普沙雕网友们一起斗图↓↓↓↓…

做网站卖别人的软件可以吗畜牧企业网站模板

很多人是这样了解网络安全专业的: 专业就业面窄,市场需求量小。网络空间安全主要是从事网络安全方面的工作,就业面窄。它和软件工程、计算机科学与技术等专业不一样,后者毕业可以从事软件开发或者大数据等方面的工作。而网络安全就…

制作app免费网站模板大型网站开发工具

充实的一天又过去了,今天真的好冷啊,我们这里雪很大,早上最傻逼的决定就是穿了一个短的棉袜出来,漏脚踝,冷成傻子 接下来老规矩,看下昨天计划的完成情况: 今日计划: 1.过bug 2.看…

深圳做网站设计的公司网站建设公司-山而

接上:MyBatisPlus学习笔记一: MyBatisPlus学习笔记一-CSDN博客 1、条件构造器 MyBatisPlus支持各种复杂的where条件,可以满足日常开发的所有需求。 1.1、集成体系 1.2、实例 查询 lambda查询 更新 1.3、总结 2、自定义sql 我们可以利用MyB…

自适应网站建设都找全网天下wordpress左对齐代码

在Java虚拟机(JVM)中,每个线程在执行一个方法时都会创建一个栈帧(Stack Frame),栈帧中包含了方法的运行时数据。栈帧通常包括局部变量表、操作数栈、动态链接、方法返回地址等部分。 动态链接 动态链接&a…

云南网站建设定做创建一个公司要多少钱

正题 题目链接:https://www.luogu.com.cn/problem/T183637 题目大意 给出nnn个二元组(xi,yi)(x_i,y_i)(xi​,yi​),求最大的 ∣xi−xj∣min{∣yi∣,∣yj∣}|x_i-x_j|\times min\{|y_i|,|y_j|\}∣xi​−xj​∣min{∣yi​∣,∣yj​∣} 1≤n≤2106,−106≤xi≤106,−…

网站 建设在作用是什么丹阳翼网官网

参考:stm32 超声波模块 原理 实现测距 舵机使用 作者:点灯小哥 发布时间: 2021-03-10 19:37:16 网址:https://blog.csdn.net/weixin_46016743/article/details/114643703 目录效果展示超声波传感器原理超声波测距编程步骤代码编写…

网站建设费用多少钱网站建设中 翻译

A Survey of Large Language Models 前言3. RESOURCES OF LLMS3.1 公开可用的模型CheckPoints或 API3.2 常用语料库3.3 库资源 前言 随着人工智能和机器学习领域的迅速发展,语言模型已经从简单的词袋模型(Bag-of-Words)和N-gram模型演变为更…

网站设计步骤有哪些网站整站下载器 全站克隆页面图片视频下载 仿站专用源码工具软件

点击上方蓝字关注“汪宇杰博客”导语前一阵我终于完成了博客系统动态生成favicon的功能。众所周知,favicon肯定有一个ico格式的图标,其余可以用 png manifest 的方式输出。然而这个ICO格式让我小收福报,今天就给大家分享一下解决办法。.NET自…