C++图形开发(12):随机方块的速度和高度

news2024/12/23 23:09:18

文章目录

  • 1.随机高度
  • 2.随机速度
  • 3.整段代码
  • 4.总结

1.随机高度

那既然是随机,自然少不了随机函数rand()咯~
详见:C++爱好者的自我修养(17):rand()随机函数
那么随机速度就可以是:

rect_height = rand() % int(height / 4) + height / 4;

也就是先生成一个随机数,再对四分之一的整个画面高度进行求模(返回余数),再加上四分之一的整个画面高度

2.随机速度

与上面同理,随机速度就是:

rect_vx = rand() / float(RAND_MAX) * 4 - 7;

这个是经过测试可行的

3.整段代码

那么整段代码就是:

#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轴方向的速度为0

	double 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;//方块消失以后重新出现
			rect_height = rand() % int(height / 4) + height / 4;//设置随机高度
			rect_vx = rand() / float(RAND_MAX) * 4 - 7;//设置方块随机速度
		}
		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;
}

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

4.总结

那么我们的这个小游戏就已经基本完成了,剩下的就是一些得分方面的完善了

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

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

相关文章

【在 WSL2 GUI 中使用 pulseaudio 播放声音】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pulseaudio 是什么&#xff1f;二、部署步骤1.下载PulseAudio2.前提条件3.开始配置1.配置pulseaudio2.配置麦克风权限3.配置WSL2外放4.配置WSL2麦克风 总结…

hbase之引入Phoenix

Phoenix简介 Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表&#xff0c;插入数据和查询HBase数据。 1&#xff09;容易集成&#xff1a;如Spark&#xff0c;Hive&#xff0c;Pig&#xff0c;Flume和Map Reduce&#xff1b; 2&#xf…

RocketMQ5.0消息存储<四>_刷盘机制

RocketMQ5.0消息存储<四>_刷盘机制 一、刷盘概览 RocketMQ存储与读写是基于JDK NIO的内存映射机制(MappedByteBuffer),消息存储时首先将消息追加到文件内存映射(commit操作),再根据配置的刷盘策略在不同时间进行刷写到磁盘(flush操作)。同步刷盘,消息提交到文件内…

计算机实习学习总结报告10篇

计算机实习学习总结报告篇1 一、实习单位&#xff1a; 来到实习单位后主要是在门市从事产品的销售和商家间渠道工作。在工作的过程中了解计算机相关行业的发展现状及趋势;熟悉计算机硬件组装、计算机系统及软件安装、局域网搭建;掌握典型计算机网络工程的安装与维护;了解网站…

Linux之Shell进阶(变量和条件判定语句)

文章目录 变量变量的含义变量的定义与使用&#xff08;重点&#xff09;只读变量接收用户输入删除变量 条件判断语句 变量 变量的含义 什么是量&#xff1f; 量就是数据. 什么是变量&#xff1f; 数据可以发生改变就是变量。 在一个脚本周期内,其值可以发生改变的量就是变…

python调用钉钉发送告警消息

zabbix和prometheus都能做监控告警调用企业微信和钉钉。那么问题来了做为一名合格的运维和开发人员&#xff0c;脚本发现故障告警&#xff0c;自动调用发送详细告警内容&#xff0c;这点儿东西得会。 效果图如下&#xff1a; 普通发送方式 import requestsdef dingding_info(…

AR 技术应用与管理解决方案:施工建造、机柜扫描、办公室导航

建筑行业作为人类历史上最重要的产业之一&#xff0c;在数字化转型方面同样也在不断推进。图扑软件结合 AR 技术的应用&#xff0c;为建筑行业带来了更加便捷高效的建筑施工过程管理。 传统的建筑施工管理过程中&#xff0c;由于缺乏信息化手段&#xff0c;往往存在资料不全、…

解决microsoft windows 恶意软件删除工具 占用内存高

1、winR快捷键&#xff0c;输入regedit&#xff0c;按回车键进入注册表编辑器 2、定位到 \HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\ 并创建新项MRT 3、 新建DWORD(32)值&#xff0c;命名为DontOffer ThroughWUAU,数值数据为1; 4、以管理员身份运行命令提示符&#x…

vue3的customRef

文章来源:我的博客,欢迎访问,不欢迎攻击,谁攻击谁儿子 customRef 作用:实现一个自定义的ref,并对其依赖项跟踪和更新触发进行显示控制 像是下面的代码一样: <template><div class"lim"><div class"btns"><el-input type"text…

web期末作业(html+css)-中华美食介绍(附带文档)

作品展示 web期末作业-中华美食介绍 首页包含功能&#xff1a; 轮播图&#xff1a;在首页顶部设置一个可自动轮播的图片展示区域&#xff0c;展示多张宣传图片或产品图片&#xff0c;提升页面的视觉效果和吸引力。 鼠标滑过文字变色&#xff1a;为首页的一些关键文字或链接添…

python安装opencv出错 PEP 517

我的 python 版本是 3.6 的&#xff0c;当需要安装 opencv 时&#xff0c;使用pip install opencv-python 命令进行安装时&#xff0c;出现错误&#xff0c;如下所示&#xff1a; Building Custom Rule C:/Users/liqian/AppData/Local/Temp/pip-install-6jpavinn/opencv-pytho…

element 树形表格每次刷新列表保存展开关闭状态

树形表格保存展开关闭状态 编辑数据后&#xff0c;记录用户操作行的展开和关闭 注意&#xff0c;以下列子是默认展开&#xff0c;记录合上的状态 注意 row-key 需要给每行一个key expand-change 点击行的操作 <el-tableref"tableItem"slot"table":data…

Matrix Breakout:2 Morpheus(靶机详细渗透测试过程记录)

nmap -sS -p 80 -oG - 192.168.192.0/24 | grep open 探测网段下开放80端口的主机。 扫描目录 发现该界面 存储型xss 发现file参数貌似可以控制读取文件目标。 尝试利用伪协议读取&#xff0c;文件内容。 解码&#xff0c;分析源代码&#xff1a; <?php$file"graff…

如何制作EDM电子邮件营销模板

敲黑板&#xff01;宝子们&#xff0c;关于如何制作EDM邮件营销模板的重点介绍来啦~EDM邮件营销模板是现代社会中非常重要的一种电子邮件营销方式。通过精美的EDM邮件营销模板&#xff0c;可以吸引更多的用户注意和关注&#xff0c;进而提高销售量和用户体验。那么&#xff0c;…

以赛兴产 曙光支持首届全国先进计算技术创新大赛

7月11日&#xff0c;首届全国先进计算技术创新大赛启动会在四川达州成功召开。中科曙光作为大赛支持单位应邀出席&#xff0c;并就以赛兴产、加速算力走向普适普惠的深耕实践做专题分享。 本次大赛由中国信息通信研究院、四川省经济和信息化厅、达州市人民政府共同主办&#xf…

【优选算法题练习】day5

文章目录 一、904. 水果成篮1.题目简介2.解题思路3.代码4.运行结果 二、438. 找到字符串中所有字母异位词1.题目简介2.解题思路3.代码4.运行结果 三、30. 串联所有单词的子串1.题目简介2.解题思路3.代码4.运行结果 总结 一、904. 水果成篮 1.题目简介 904. 水果成篮 你正在探…

夏日酷暑高温,设备陆续罢工,为什么这款DTU却能久经“烤”验

炎炎夏日&#xff0c;终于迎来周末的东东&#xff0c;想要出门却发现所在地区不断弹出高温预警&#xff0c;刚买来的雪糕因为在桌子上放了1分钟&#xff0c;再打开包装时才发现其已经开始消融&#xff0c;那小雪人精致的面容也如同被太阳炙烤般扭曲变形&#xff0c;并时不时滴下…

CUnit在ARM平台上的离线搭建(让CUnit编译安装成功之后的可执行文件.so变成ARM下的—ARM aarch64)(实用篇)

前言&#xff1a;1 CUint-2.1-3.tar.bz2压缩安装包下载并解压2 进入CUint-2.1-3目录并且通过指令./bootstrap*产生configure *执行文件3 执行./configure*命令4 make编译5 make install 安装 前言&#xff1a; 在X86架构上的Linux操作系统上面进行cmake编译&#xff08;Cyclon…

为你解密免费音频格式转换器软件有哪些

音频格式转换技术是一种将音频文件从一种格式转换为另一种格式的技术。这项技术非常有用&#xff0c;可以帮助我们在不同设备和平台上播放和共享音频文件。现在市场上有许多免费的音频格式转换器软件可供选择&#xff0c;它们提供了方便、快捷的方式来进行音频格式转换。如果你…

MFC 将工具栏的两项中加入空白按钮

先视为普通按钮赋ID ImageList中Add的图为资源视图新建的CBitmap 是个空图 SetButtonText对应的按钮文本也为空格 然后m_toolbar.GetToolBarCtrl().EnableButton(ID_BUTTONS, FALSE);将对应的按钮禁用即可 ID_BUTTONS是第一个按钮的ID值 UINT nArray[21]; for (int i 0; i &l…