打气球小游戏

1.气球往上飘

我们声明两个符号常量来作为窗体的长和宽,接着就是常规操作

#define WINDOW_WIDTH 800
#define WINDOW_HEIGHT 600#include<easyx.h>
#include<stdio.h>
int main()
{initgraph(WINDOW_WIDTH, WINDOW_HEIGHT);setbkcolor(WHITE);cleardevice();getchar();
}

接下来我们就要用彩色圆形当作气球,让5个气球从窗体的底部出现,飘到窗体的顶部后消失

那么气球是具有这么几个属性的

  1. 圆心坐标
  2. 半径
  3. 移动速度

那么我们就可以声明一个结构体用于保存这样几个属性数据

typedef struct
{int x, y;int r;int v;COLORREF color;
}ballon;

我们再设置两个宏

#define WINDOW_WIDTH 800
#define WINDOW_HEIGHT 600
#define MAX_IN_WINDOW 5 //窗体同时出现的气球数量
#define BALLOON_RADIUS 30 //气球半径#include<easyx.h>
#include<stdio.h>typedef struct
{int x, y;int r;int v;COLORREF color;
}balloon;
int main()
{initgraph(WINDOW_WIDTH, WINDOW_HEIGHT);setbkcolor(WHITE);cleardevice();getchar();
}

为了记录这些气球的数据,我们声明一个结构数组来保存这些气球的数据

	balloon arrBalloons[MAX_IN_WINDOW];//保存窗体内气球数据

接下来我们就可以给气球中的成员设置初始值

	for (int i = 0; i < MAX_IN_WINDOW; i++)//初始化数据{int m, n;m = 100;//坐标区间n = 700;arrBalloons[i].x = rand() % (n - m + 1) + m;//【100,700】arrBalloons[i].y = WINDOW_HEIGHT;//圆心y设置初始值arrBalloons[i].r = BALLOON_RADIUS;//设置圆形半径m = 1;//速度区间n = 3;arrBalloons[i].v = rand() % (n - m + 1) + m;//【1,3】 arrBalloons[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);}

我们再设置一下帧率

#define WINDOW_WIDTH 800
#define WINDOW_HEIGHT 600
#define MAX_IN_WINDOW 5 //窗体同时出现的气球数量
#define BALLOON_RADIUS 30 //气球半径#include<easyx.h>
#include<stdio.h>typedef struct
{int x, y;int r;int v;COLORREF color;
}balloon;
int main()
{initgraph(WINDOW_WIDTH, WINDOW_HEIGHT);setbkcolor(WHITE);cleardevice();balloon arrBalloons[MAX_IN_WINDOW];//保存窗体内气球数据for (int i = 0; i < MAX_IN_WINDOW; i++)//初始化数据{int m, n;m = 100;//坐标区间n = 700;arrBalloons[i].x = rand() % (n - m + 1) + m;//【100,700】arrBalloons[i].y = WINDOW_HEIGHT;//圆心y设置初始值arrBalloons[i].r = BALLOON_RADIUS;//设置圆形半径m = 1;//速度区间n = 3;arrBalloons[i].v = rand() % (n - m + 1) + m;//【1,3】 arrBalloons[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);}timeBeginPeriod(1);LARGE_INTEGER startcount, endcount, F; //开始时闻、结束时间、频率FQueryPerformanceFrequency(&F);BeginBatchDraw();//获取频率Fwhile (1){QueryPerformanceCounter(&startcount);// 获取起始计数cleardevice(); for (int i = 0; i < MAX_IN_WINDOW; i++)//根据气球数组中的数据绘制出气球{setfillcolor(arrBalloons[i].color);solidcircle(arrBalloons[i].x, arrBalloons[i].y, arrBalloons[i].r);}for (int i = 0; i < MAX_IN_WINDOW; i++)//将每个气球进行移动arrBalloons[i].y -= arrBalloons[i].v;QueryPerformanceCounter(&endcount);// 获取结束计数long long elapse = (endcount.QuadPart - startcount.QuadPart) * 1000000 / F.QuadPart;//计算时差while (elapse < 1000000/60)//60帧{Sleep(1);QueryPerformanceCounter(&endcount);elapse = (endcount.QuadPart - startcount.QuadPart) * 1000000 / F.QuadPart;}FlushBatchDraw();}EndBatchDraw();timeEndPeriod(1);getchar();
}

运行一下,发现报错了 

注意timeBeginPeriod(1);    timeEndPeriod(1);这两个函数是在库<winmm.lib> 里,而默认情况下链接器不会输入这个库文件

我们需要将这个库添加到工程配置的链接器输入当中

 注意:这两个函数必须配对使用

 很好看啊!!

2.删除已经消失的气球

我们先在主循环设置一个变量,记录当前窗体出现的小球数量

那么我们怎么判断小球已经消失了呢?

我们知道最顶端的y的值是0,小球的半径是BALLON_RADIUS,那么小球离开窗体的y的范围应该是y<=BALLON_RADIUS

我们就可以执行

 

那么我们现在就要重点讨论如何从数组中删除元素

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

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

相关文章

python+selenium - UI自动框架之封装浏览器引擎driver方法

在做兼容性测试的适合&#xff0c;可以运行指定的浏览器&#xff08;IE,Chrome,Edge&#xff09; 目录文件&#xff1a; from selenium import webdriver from urllib3.exceptions import ProtocolError from common.log import *def getDriver():# if browserType is None:br…

模拟面试题

1.装箱和拆箱是指什么&#xff1f; 装箱——把栈中内容迁移到堆中去&#xff08;值转引用&#xff09; 拆箱——把堆中内容迁移到栈中去&#xff08;引用转值&#xff09; 2.值和引用类型在变量赋值时的区别是什么&#xff1f; 值类型&#xff1a;赋值时复制数据本身&a…

Gitee在已有项目基础上创建仓库中遇到的问题和解决

问题一&#xff1a;fatal: remote origin already exists 解释&#xff1a;当前仓库添加了一个名为"origin"的远程仓库配置&#xff0c;此时输入 git remote add origin https://xxx就会提示上面的内容。 解决方案1:移除旧的origin git remote remove origin 解决方案…

C++——mapset红黑树

目录 一补充知识 1关联式容器 2键值对 二set 1set的介绍 2set的使用 三map 1map的说明 2map的使用 四容器在oj中的使用 五AVL树 1概念 2插入 3AVL的旋转 3.1右单旋 3.2左单旋 3.3左右双旋 3.4右左双旋 4判断AVL树是否平衡 完整源代码 六红黑树 1概念 2性…

紫光展锐突破创新终端品类,搭载展锐芯的全球首款二合一5G云电脑正式发布

近日&#xff0c;搭载紫光展锐5G芯片T760的中兴云电脑逍遥系列正式发布&#xff0c;亮点&#xff1a; 全球首款二合一5G云电脑&#xff0c;支持本地/云端双模式&#xff0c;一键切换&#xff0c;用户可同时享有Android平板和Windows云电脑两种形态&#xff1b;支持5G蜂窝网络&…

C++相关概念和易错语法(13)(string的模拟实现)

string由于存在字符串和单字符的概念&#xff0c;使得它的一些接口&#xff0c;实现要比vector多一些。本质上来看string的实现是在顺序表的基础上加入串相关的操作。下面我会分享如何模拟实现string&#xff0c;这可以进一步提高我们对string的熟练程度。 1.构造函数、拷贝构…

附代码:策略常用-正余弦优化算法

正余弦优化算法作为群智能优化算法的一种, 正弦余弦算法 (sine cosine algorithm, SCA) 是 2016 年由 Mirjalili 提出的一种新型仿自然优化算法, 通过创建多个随机候选解, 利用正余弦函数的数学性质来平衡算法在搜系过程中的全局探索和局部开发能力。该算法具有结构简单、参数少…

docker三种自定义网络(虚拟网络) overlay实现原理

docker提供了三种自定义网络驱动&#xff1a;bridge、overlay、macvlan。 bridge驱动类似默认的bridge网络模式。 overlay和macvlan是用于创建跨主机网络。 支持自定义网段、网关&#xff0c;docker network create --subnet 172.77.0.0/24 --gateway 172.77.0.1 my_n…

PPT大珩助手新功能-生成迷宫

大珩助手是一款功能丰富的办公软件插件&#xff0c;它主要分为两个版本&#xff1a;PPT大珩助手和Word大珩助手。这两个版本都旨在提高用户在处理演示文稿和文档时的效率。 PPT大珩助手 这是一款专门为Microsoft PowerPoint设计的插件。它提供了多种功能&#xff0c;例如素材…

盲人社区生活支持体系:织就一张温暖的网

在当今社会&#xff0c;构建一个全面、包容的盲人社区生活支持体系成为了推动社会进步、保障残障人士权益的重要议题。随着科技的不断革新&#xff0c;一款名为“蝙蝠避障”的辅助软件走进了盲人的日常生活&#xff0c;它如同一位无形的向导&#xff0c;通过实时避障与拍照识别…

element DatePicker 日期选择器设置禁用未来日期,时间范围为60天

需要用到 DatePicker 里面的 picker-options 方法 disabledDate onPick方法 <el-date-pickerv-model"form.xxxx"type"daterange"value-format"yyyy-MM-dd":clearable"false":picker-options"pickerOptions"start-placeho…

运行Android项目时,提示错误: 程序包javax.annotation.processing不存在

今天在运行项目时提示错误: 错误: 程序包javax.annotation.processing不存在 import javax.annotation.processing.Generated; 最后是修改了Android Studio的JDK的路径修改为你安装的JDK路径&#xff0c;完成的修复&#xff1a;

5.23 Linux中超时检测方式+模拟面试

1.IO多路复用的原理&#xff1f; IO多路复用使得一个或少量线程资源处理多个连接的IO事件的技术。对于要处理的多个阻塞的IO操作&#xff0c;建立集合并存储它们的文件描述符&#xff0c;利用单个阻塞函数去监控集合中文件描述符事件到达的情况&#xff0c;&#xff08;如果到…

cPanel中如何移除之前添加的域名

我这边想要移除我之前绑定到主机的域名&#xff0c;但是不知道如何在主机上面进行移除&#xff0c;由于我使用的Hostease的Linux虚拟主机产品默认带普通用户权限的cPanel面板&#xff0c;但是不知道如何在cPanel上操作移除域名&#xff0c;因为也是对于Hostease主机产品不是很了…

Linux磁盘高级操作

RAID RAID存储系统是一种数据存储虚拟化技术&#xff0c;它将多个物理磁盘驱动器组合成一个或多个逻辑单元&#xff0c;以提供数据冗余和/或提高性能。 1. RAID 0 无奇偶校验与冗余&#xff08;磁盘容错&#xff09;的条带存储&#xff08;带区卷/条带卷&#xff09; 由两块…

基于windows通过kind部署轻量级便携式k8s集群

感谢老师的视频教程&#xff1a; 基于windows通过kind部署轻量级便携式k8s集群 wsl windows下的linux wsl --set-default-version 2 wsl --help wsl --list --online wsl --install -d Ubuntu wsl -l -v &#xff08;看看版本是不是2&#xff0c;否则docker那边识别不到&…

从零开始:在线教育系统源码与知识付费小程序开发指南

开发一个功能完善的在线教育系统和知识付费小程序并不是一件简单的事情。今天&#xff0c;小编将从零开始&#xff0c;详细介绍如何开发在线教育系统和知识付费小程序。 一、需求分析与系统设计 在开始编写代码之前&#xff0c;首先需要进行需求分析和系统设计。这一步非常关键…

汽车摄像头智能画质增强解决方案,高品质车载视觉系统

在数字化与智能化浪潮的推动下&#xff0c;汽车行业正经历着一场前所未有的技术革命。其中&#xff0c;车载摄像头作为智能驾驶与安防监控的核心部件&#xff0c;其画质的高低直接关系到行车安全与驾驶体验。美摄科技&#xff0c;作为行业领先的智能图像技术解决方案提供商&…

机器学习圣经PRML作者Bishop推出重磅教材

图1 书籍《Pattern Recognition and Machine Learning》 只要学人工智能的人&#xff0c;必然学机器学习。 只要学机器学习的人&#xff0c;必然看PRML。 PRML为何物&#xff1f; PRML全名《Pattern Recognition and Machine Learning》&#xff0c;一部机器学习领域的内功…

数据库系列之MySQL数据库中内存使用分析

在实际系统环境中&#xff0c;MySQL实例的内存使用随着业务的增长缓慢增长&#xff0c;有些时候并没有及时的释放。本文简要介绍下MySQL数据库中和内存相关的配置&#xff0c;以及分析内存的实际使用情况&#xff0c;以进行应急和调优处理。 1、MySQL内存结构 在MySQL中内存的…