C++图形开发(11):小球碰到方块的判定

文章目录

  • 1.有哪些情况?
    • 1.1 小球在方块左侧
    • 1.2 小球在方块上面
    • 1.3 小球在方块右侧
  • 2.解决

1.有哪些情况?

今天来实现下小球碰到方块的判定

那么我们首先要明确的就是在什么时候,小球会碰到方块?

1.1 小球在方块左侧

第一个就是小球在方块的左侧的情况:
在这里插入图片描述
此时小球圆心的x轴为320,y轴的范围是380~280

1.2 小球在方块上面

第二个是小球在方块上面的情况:

此时小球x轴的变化范围为280~340,y轴为320

1.3 小球在方块右侧

第三个也是最后一个是小球在方块右侧的情况:
在这里插入图片描述
此时小球x轴为340,y轴的变化范围为280~380

2.解决

我们只需写一个if-else语句即可:

if ((rect_left_x <= ball_x + r) && (rect_left_x + rect_width >= ball_x - r)&&(height-rect_height<=ball_y+r)) {Sleep(100);
}

也就是碰到方块做一个慢动作的效果
整段代码就是:

#include<graphics.h> 
#include<conio.h>
#include<stdio.h>int main() {double width, height;//定义画面长度、宽度width = 600;height = 400;initgraph(width, height); double ball_x, ball_y,ball_vy, r,g;//定义小球x轴、y轴、y轴方向的速度、半径、重力加速度g = 0.6;r = 20;ball_x = width / 4;//x坐标等于整个画面x轴长度的四分之一ball_y = height - r;//y坐标等于画面的y轴长度减去圆的半径(保证圆在画面的最底端)ball_vy = 0; //最初小球落在地面上时y轴方向的速度为0double rect_left_x, rect_top_y, rect_width, rect_height;//定义方块的各个位置变量rect_width = 20;rect_height = 100;rect_left_x = width * 3 / 4;rect_top_y = height - rect_height;double rect_vx = -3;//定义方块的移动速度while (1){if (_kbhit()) {char input = _getch();if (input == ' ') {ball_vy = -16;}}ball_vy = ball_vy + g;//根据牛顿力学定律得ball_y = ball_y + ball_vy;//小球y轴方向的变化if (ball_y >= height - r) {ball_vy = 0;//小球落地以后速度清零ball_y = height - r;}rect_left_x = rect_left_x + rect_vx;if (rect_left_x <= 0) {rect_left_x = width;//方块消失以后重新出现}if ((rect_left_x <= ball_x + r) && (rect_left_x + rect_width >= ball_x - r)&&(height-rect_height<=ball_y+r)) {Sleep(100);//碰到方块慢动作}cleardevice();fillrectangle(rect_left_x, height - rect_height, rect_left_x + rect_width, height);fillcircle(ball_x, ball_y, r);Sleep(10);}_getch();closegraph();return 0;
}

效果:
在这里插入图片描述

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

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

相关文章

SendGrid 无法注册,Create Account 按钮灰色无法点击

问题描述&#xff1a; 注册SendGrid的时候&#xff0c;账号密码都输好了&#xff0c;就是没办法点【Create Account】。 解释思路&#xff1a; 其实空白处有一个reCAPTCHA 验证码&#xff0c;但是被隐去了。所以我们的思路是如何让网页中的reCAPTCHA 验证码顺利显示出来。 问…

如何使用 OpenCV 去除图像背景

文末附源代码的免费下载链接 在本教程中,我们将学习如何使用 OpenCV 使用一种名为背景减法的技术来去除视频中的背景。 背景扣除是计算机视觉中用于检测视频中移动物体的常用技术。对于安全、监视、交通监控等来说,这是一种非常有用的技术。 背景减法的基本思想是通过从前景…

Socket编程接口API并实现简单的TCP网络编程

#include <sys/types.h> #include <sys/socket.h> socket()创建套接字&#xff0c;成功返回套接字的文件描述符&#xff0c;失败返回-1 domain: 设置套接字的协议簇&#xff0c; AF_UNIX AF_INET AF_INET6 type: 设置套接字的服务类型 SOCK_STREAM SOCK_DGRAM prot…

怎么用爱问转换工具在线拆分PDF文件

我们平时在工作中会用到很多PDF文件&#xff0c;有的PDF文件内容很多&#xff0c;里面也有许多分类类别&#xff0c;其实对于这种内容多的PDF文件&#xff0c;可以使用拆分的方式&#xff0c;来获取自己需要的材料&#xff0c;那么&#xff0c;如何快速拆分PDF文件呢&#xff1…

Mybatis-xml和动态sql

xml映射方式 除了之前那种 select(语句) public void ...();通过注解定义sql语句&#xff0c;还可以通过xml的方式来定义sql语句 注意 在resource创建的是目录&#xff0c;要用斜线分隔 创建出文件后 先写约束 <?xml version"1.0" encoding"UTF-8"…

HAProxy负载均衡集群

目录 1.1 常用的负载均衡调度器 1.2 Haproxy的简介 2.LVS、Nginx、HAproxy的区别&#xff1a; nginx LVS HAProxy 3.Haproxy搭建 Web 群集 3.1 haproxy 服务器部署 1.关闭防火墙&#xff0c;将安装Haproxy所需软件包传到/opt目录下 2.编译安装 Haproxy 3.Haproxy服务…

event.stopPropagation()和event.preventDefault()之间的联系

目录 阻止事件冒泡&#xff0c;阻止默认事件&#xff0c;event.stopPropagation()和event.preventDefault()&#xff0c;return false的区别 今天来看看前端的冒泡和事件默认事件如何处理 1.event.stopPropagation()方法 这是阻止事件的冒泡方法&#xff0c;不让事件向documen上…

羊驼再度进化,“长颈鹿版”LongLLaMA 来啦,上下文长度冲向 100K ,性能不减

文 | 小戏、ZenMoore 要说当下制约大模型释放更大规模潜力的桎梏&#xff0c;除了机器幻觉&#xff0c;肯定当属受限的上下文长度&#xff0c;前两天微软的 LongNet 正将 Transformer 的上下文长度扩展到夸张的 10 亿量级&#xff0c;这两天撑起了开源大模型一片天的 LLaMA 家族…

Linux 学习记录48(QT篇待完成)

Linux 学习记录48(QT篇) 本文目录 Linux 学习记录48(QT篇)一、1.2. 二、三、四、练习1. 自制文本编辑器(0. main.cpp(1. txt_window.h(2. txt_window.cpp 2. 登录界面完善 一、 1. 2. 二、 三、 四、 练习 1. 自制文本编辑器 (0. main.cpp #include "txt_window.h…

自定义对象作为HashMap的键,同时重写hashCode和equals方法

如果要将自定义类的实例 作为HashMap的 键&#xff0c;必须重写hashCode和equals方法 简单版本&#xff0c;看不懂看后面复杂版本解释 复杂版本解释 当我们用 HashMap存入自定义的类时&#xff0c;如果不重写这个自定义类的equals和hashCode方法&#xff0c;得到的结果会和我们…

MySQL库表操作作业

创建数据库 mysql> create database Market; mysql> use Market; 创建表和约束 mysql> create table customers(c_num int(11) primary key not null UNIQUE Key auto_increment , -> c_name varchar(50), -> c_city varchar(50), -> c_birth datetime…

【华为认证】HCIP-Datacom 2023最新题库

正在备考华为认证的小伙伴应该知道&#xff0c;除了理论知识外&#xff0c;刷题也相当重要&#xff0c;周工这里有一份HCIAHCIP-Datacom带解析的最新题库 点赞留言 即可领取。 1. &#xff08;多选题&#xff09;ISIS的Hello报文主要分为哪几种类型? A.P2P LAN IIH B.…