首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

老Java程序员花一天时间写了个飞机大战,很舒服!

代码实现 创建窗口 首先创建一个游戏窗体类GameFrame,继承至JFrame,用来显示在屏幕上(window的对象),每个游戏都有一个窗口,设置好窗口标题、尺寸、布局等就可以。...=null){ myPlane.draw(g); } } 鼠标事件监听 加入监听是为了让飞机跟随鼠标移动,我这里定的规则是第一次鼠标必须移动到飞机上,然后飞机才会跟随。...再看一下从左边撞击的图: 从上图看到也是这样,其他两个方向的也是一样的道理,为了稳点我还加了一种情况: 1.判断敌机的4个点是否在飞机范围内,如果有则表示碰撞了。...* 2.如果步骤1不成立,则反过来,判断我机的4个点是否在敌机的范围内,如果是标志碰撞了 */ //方式1 //左上角 int x1 = x; int y1 = y; //右上角...个点是否在飞机范围内,如果有则表示碰撞了 //左上角 int x1 = x; int y1 = y; //右上角 int x2 = x+width; int y2 = y; //右下角

45910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Qt编写安防视频监控系统9-自动隐藏光标

    一、前言 这个效果的灵感来自于大屏电子看板系统,在很多系统中尤其是上了大屏的时候,其实在用户不在操作的时候,是很不希望看到那个鼠标箭头指针的,只有当用户操作的时候才显示出来,这个就需要开个定时器定时计算最后一次用户操作的时间...,和当前时间比较,如果超过了鼠标未操作隐藏时间,则隐藏鼠标,在Qt中提供了方法qApp->setOverrideCursor(Qt::BlankCursor);这样设置个空白的鼠标指针就表示隐藏鼠标,如果需要恢复调用...搞个bool存储当前鼠标是否隐藏,在鼠标隐藏的时候置为真,拦截鼠标移动事件,一旦发现之前鼠标处于隐藏状态,则立即恢复指针状态,同时将标志位改为假,不然频繁恢复指针没有意义,只有当指针隐藏的时候才需要恢复一次...顶部鼠标右键菜单,可动态控制时间CPU+左上角面板+左下角面板+右上角面板+右下角面板的显示和隐藏,支持恢复默认布局。 工具栏可以放置多个小图标和关闭图标。...默认超过10秒钟未操作自动隐藏鼠标指针。 高度可定制化,用户可以很方便的在此基础上衍生自己的功能,支持linux系统。

    1.5K20

    CSS3圆角 border-radius

    margin一个值,表示盒模型的margin的上,下,左,右四个方向值 2. margin两个值,表示的是margin第一个值为margin的上,下方向值。...第四个值为margin的左方向值. 而border-radius的书写顺序也是和margin类似,分别表示左上角、右上角、右下角、左下角。...“/”前是指圆角的水平半径,而“/”后是指圆角的垂直半径,他们两边都遵循(margin四个值)的顺序原则。 1.只有一个值,那么左上角、右上角、右下角、左下角四个值相等。...2.有两个值,那么左上角等于右下角,并且取第一个值;右上角等于左下角,并且取第二个值 3.有三个值,其中第一个值是设置左上角,而第二个值是右上角、左下角,并且他们会相等,第三个值是设置右下角。...4.有四个值,其中第一个值是设置左上角。而第二个值是右上角第三个值右下角,第四个值是设置左下角。

    1.9K70

    二维数组中的查找

    这里,先来思考一个问题,为什么不能用左上角或者右下角作为开始节点进行查找呢?...同样,以右小下角作为起始节点(最大值),其左边和上面的值都比该值小,也无法确定走向。所以,这两个点,都不能被使用。 而左下角和右上角是可以的。...对于左下角(往右上角方向查找)而言,其上边的值比它小,右边的值比它大,是确定的。同样,对于右上角(往左下角方向查找)而言,左边的值比它小,下面的值比它大,所以也是确定的。...所以,以左下角为开始节点,往右上角查找;或者以右上角为开始节点,往左下角查找,这两种方法都是可以的。 下面,我们就根据这个特点来写出两个解法。...小结 本文针对剑指offer的一道题目"04.二维数组中的查找"进行了简单的分析和解答,说明了为什么不能以左上角和右下角作为起始节点进行查找,给出了从左下角开始查找和从右上角开始查找的2种解法。

    26810

    手摸手从零到一开发一个灵活的Todolist便签项目

    ,我们想象刚刚的场景,鼠标从左上角往右下角划动,我们的定位是通过left和top实现的,那么如果我们从右下角往左上角来滑动呢,我们的定位的初始坐标不就变成了,右下角么对应的是right和bottom此时我们发现了...,这样做导致,四个值都有,我们的源数据会有点乱,不是很方便,具体的细节我们在下面通过这样一幅图具体来实现 判断鼠标方向确定动态创建的起始点位 我们总结下如果永远都是按left和top定位,也就是左上角的定位...,那么我们四种拖动场景的点的坐标方式将计算的不同,我们总结下四种滑动方向: 从左上角滑动拉到右小角 从左下角滑动拉到右上角 从右下角滑动拉到左上角 从右上角滑动拉到左下角 我们看看下面这副图...,红点代表鼠标初始按下的位置,黑点代表抬起的位置,也包含移动的方向,同时我们用(oldX,oldY)表示按下点坐标,(newX,newY)代表移动中和最终抬起的坐标,然后看看四种场景下,这个左上角的坐标如何计算...可以看到上图,用户可以按下鼠标往四个方向拉,而这种时候,我们的左上角的点的计算方式也不同,所以我们在用户拖动的过程中,需要通过diffX和diffY的差距判断用户的滑动方向,进而拿到左上角的准确的点的位置

    1K30

    Qt编写安防视频监控系统33-onvif云台控制

    订阅事件,接收设备的各种消息尤其是报警事件比如IO口的报警。 抓图,获取设备当前的图片。 获取、创建、删除用户信息。 获取和设备网络配置信息比如IP地址等。 获取和设置NTP时间同步。...自定义信息框+错误框+询问框+右下角提示框(包含多种格式)。 17套皮肤样式随意更换,所有样式全部统一,包括菜单等。 云台仪表盘鼠标移上去高亮,八个方位精准识别。...可在配置文件更改左上角logo+中文软件名称+英文软件名称。 封装了百度地图,视图切换,运动轨迹,设备点位,鼠标按下获取经纬度等。 支持图片地图,设备按钮可以在图片地图上自由拖动自动保存位置信息。...顶部鼠标右键菜单,可动态控制时间CPU+左上角面板+左下角面板+右上角面板+右下角面板的显示和隐藏,支持恢复默认布局。 工具栏可以放置多个小图标和关闭图标。...鼠标右键可删除当前+所有视频,截图当前+所有视频。 录像机管理、摄像机管理,可添加删除修改导入导出打印信息,立即应用新的设备信息生成树状列表,不需重启。 在pro文件中可以自由开启是否加载地图。

    1.2K00

    Canvas绘制可变换矩形的知识点及绘制思路

    offsetX:MouseEvent 接口的只读属性 offsetX 规定了事件对象与目标节点的内填充边(padding edge)在 X 轴方向上的偏移量。...检测当前路径中是否包含检测点 我们需要将矩行四个角及四条边的路径信息存下来,并检测当前鼠标位置是否在该路径中,用来展示对应的鼠标指针样式。...给canvas添加mousedown,mousemove,mouseup,mouseout事件。...mousedown鼠标按下时记录当前鼠标位置,mousemove移动鼠标时计算偏移量,该偏移量同时也是矩形的偏移量。...mousemove移动鼠标时更新矩形四个角及四条边的路径信息,以便鼠标移到对应位置时设置对应的指针样式。 mousemove移动鼠标时进行各种判断(拖动的是左上角?右上角?顶边?底边?

    93820

    使用Python和OpenCV顺时针排序坐标

    选择错误的索引意味着我们从pts列表中选择了错误的点。如果我们从pts中取出错误的点,那么左上角,右上角,右下角和左下角顺序排列就会被破坏。 那么我们如何解决这个问题并确保它不会发生呢?...如果我们根据它们的y值对最左边的点进行排序,我们可以分别推出左上角和左下角的点(第15行和第16行)。 然后,为了确定右下角和左下角的点,我们可以应用一点几何图形的知识。...最后,第26行返回一个NumPy数组,表示按左上角、右上角、右下角和左下角顺序排列的有序边界框坐标。...即有缺陷的)order_points_old函数来按照左上角、右上角、右下角和左下角的顺序排列边框坐标。...正如我们所看到的,我们预期的输出是按顺时针顺序排列的,按左上角、右上角、右下角和左下角排列——但对象6除外!

    1.8K20

    Mac 电脑锁屏快捷方法

    米扑科技原创出品,转载请注明出处:Mac 电脑锁屏快捷方法 锁屏方法1 触发角设置步骤如下: 触发角,是指屏幕的四个角:左上角、左下角、右上角、右下角,指定上常用的操作,很方便的。 1....打开系统偏好 左上角苹果小图标 —> 系统偏好 —> 桌面和屏幕保护程序 —> 屏幕保护 —> 触发角 ? 2....设置触发角屏保 屏幕的四个角分别设置了常用操作,其中,右下角设置的是“启动屏幕保护程序” ? 3. 查看屏保效果 触发角设置保存后,鼠标指向右下角,等待大约1-2秒钟后,启动屏保程序 ?...如上图,双击钥匙串访问,打开左上角的 偏好设置,见下图 ? 如上图,勾选后,Mac屏幕最上面导航栏,多了一个小锁图标,点击即可选择锁定屏幕,如下图: ?...command + S,保存,命名为 homer-Screen-Saver,这样锁屏服务就创建完毕了 点击左下角 Finder —> 右上角 Finder  —>  Services  —>  Services

    5.2K20

    Threejs入门之十六:纹理贴图和纹理材质

    顶点UV坐标的(0,0)点对应贴图的左下角,(1,1)点对应贴图的右上角,(1,0)点对应贴图的右下角,(1,1)点对应贴图的左上角 通过设置类型数组来定义顶点UV坐标const uv = new Float32Array...([ 0, 0, //图片左下角 1, 0, //图片右下角 1, 1, //图片右上角 0, 1, //图片左上角])将上面定义的uv数组作为参数传递给BufferAttribute,并指定几个数据为一组...贴图geometry.attributes.uv = new THREE.BufferAttribute(uvs, 2); //2个为一组,表示一个顶点的纹理坐标 如果我们不想将整个图片都贴到物体上,我们只需要左下角的四分之一贴到物体上...//图片右上角 0, 0.5, //图片左上角]) Texture纹理的阵列 Texture纹理有两个属性定义了其在水平和垂直方向上贴图如何显示, .wrapS : 这个值定义了纹理贴图在水平方向上将如何包裹...默认值是THREE.ClampToEdgeWrapping,即纹理边缘将被推到外部边缘的纹素。 wrapT : 这个值定义了纹理贴图在垂直方向上将如何包裹,在UV映射中对应于V。

    2.6K10

    “鼠标移入显示悬浮框”特效,也可以“高大上”

    在效果当中,当用户将鼠标移入一个块时,会从鼠标的移入方向滑入一个悬浮块,悬浮块会随着鼠标移出当前块,且滑出方向遵循鼠标的移出方向(录制gif图像时不能够录制鼠标,因此无法展示鼠标位置)。...2.2.功能实现逻辑分析 首先通过JS,获取鼠标在块当中的坐标; 此后,根据“鼠标所处的位置”判断鼠标移入方向“; 最后,再根据鼠标移入方向来执行相应的功能。...).offset().left”用于获取元素距页面左边的距离; 原生JS中,通过事件对象(event)的pageX可以获取鼠标相对于页面的X轴位置;通过事件对象(event)的pageY可以获取鼠标相对于页面的...3.2.划分方向区域 由于需要根据“鼠标所处的位置”判断“鼠标移入方向”,因此为四个方向确定“临界值”。...↗(左下角到右上角) Y值临界值求法: 当前X值对应的Y值临界值1 = 当前元素高度 / 当前元素宽度 * 当前鼠标X值; ↘(左上角到右下角) Y值临界值求法: 当前X值对应的Y值临界值2 = 当前元素高度

    5.3K90

    前端实现伸缩框

    本文,我们讲讲前端怎么实现伸缩框的功能,类似下面 案例验证的浏览器为 - Google Chrome 版本 119.0.6045.123(正式版本)(arm64) 前言 在实际的工作中,我们有遇到这么一个实用的需求...JS 实现伸缩框 我们的思路是这样子的: 实现右下角的三角拖动图标 计算伸缩框距离左边和顶部的距离 监听鼠标的点击、拖动、抬起事件,记录鼠标当前相对视窗左上角点的左侧距离和顶部距离 计算鼠标距离边框左侧的距离...,即边框的新宽度 计算鼠标距离边框顶部的距离,即边框的新高度 限定边框的最小距离,防止 icon 拖动隐藏 我们需要跟浏览器的事件打交道,这里引入 RxJS ,(当然,读者可以手写原生 javascript...RxJS 是一个用于处理异步事件流的库。...在开始之前,我们还得熟悉下juejin.cn/post/708512…中的 Element.getBoundingClientRect() 方法: 我们可以通过这个方法获取元素其左上角顶点相对可视窗口的坐标

    28910

    使用 JavaScript 实现简单的拖拽

    步骤 使用 JavaScript 实现拖拽的步骤: 让元素捕获事件(mousedown, mousemove & mouseup) 单击并不释放,触发 mousedown,标记开始拖拽,并获取元素和鼠标的位置...拖动鼠标,触发 mousemove,不断的获取鼠标的位置,并通过计算重新确定元素的位置 释放师表,触发 mouseup,结束拖拽,确定元素位置并更新 被拖拽的元素必须是相对父元素定位,或者是绝对定位...在 document 对象上绑定 mousemove 和 mouseup 事件,不在拖拽的元素上绑定是因为当鼠标移动太快而超出元素的范围时会停止拖拽,而绑定在 document 上则可以避免这样的事情发生...mousemove 当鼠标移动时,不断的获取鼠标的位置,并计算元素的新坐标修改元素的位置样式。...最后将改变后的元素 left 与 top 值应用当元素上,即修改元素的样式。 mouseup 拖拽结束,取消拖拽的标记。使其触发 mousemove 事件,但不做任何处理。

    1.5K40

    【CSS】轮播图案例开发 ( 基本设置 | 子绝父相 | 浏览器水平居中 | 圆角设置 | 绝对定位居中设置 )

    : 设置左侧的按钮 , 右侧设置成半圆 , 也就是 右上角和右下角设置成圆角 ; /* 复合写法设置圆角矩形 : 左上角 右上角 右下角 左下角 */ border-radius: 0 15px...15px 0; 设置右侧的按钮 , 左侧设置成半圆 , 也就是 左上角和左下角设置成圆角 ; /* 复合写法设置圆角矩形 : 左上角 右上角 右下角 左下角 */ border-radius.../ .left { left: 0; /* 复合写法设置圆角矩形 : 左上角 右上角 右下角 左下角 */ border-radius: 0 15px 15px 0;...右上角 右下角 左下角 */ border-radius: 15px 0 0 15px; } /* 按钮移动后的样式 背景颜色加深一倍 */ .left:hover, .right.../ .left { left: 0; /* 复合写法设置圆角矩形 : 左上角 右上角 右下角 左下角 */ border-radius: 0 15px 15px 0;

    1.9K10

    Qt编写自定义控件67-通用无边框

    一、前言 在之前的一篇文章中写过一个通用的移动控件,作用就是用来传入任意的widget控件,可以在父类容器中自由移动。...本篇文章要写的是一个通用的无边框类,确切的说这不叫控件应该叫组件才对,控件是要看得见的东西,有绘制需求的,而这个需要依附在控件上。...在QDialog窗体中可以通过设置一个属性sizeGripEnabled来实现右下角的拉伸,这个还不足以满足所有的需求,很多时候我们还需要在四个角和上下左右都能拉伸大小,这个就需要重写了,安装事件过滤器...描点区域的作用还有就是计算鼠标坐标是否在某一个区域内 int width = widget->width(); int height = widget->...,这个必须放在这里而不是下面,因为可以在鼠标没有按下的时候识别 QHoverEvent *hoverEvent = (QHoverEvent *)event;

    1K20
    领券