使用c语言与EASYX实现弹球小游戏

news2025/1/11 20:07:03

eg1:小球碰到窗体的四个墙实现反弹效果

#include <stdio.h>
#include <easyx.h>
#include <iostream>
#include <math.h>
#include <conio.h>
#define PI 3.14


int main()
{
	initgraph(800, 600);
	setorigin(400, 300);
	setaspectratio(1, -1);
	setbkcolor(RGB(164, 225, 202));
	cleardevice();
	// 让小球初始位置出现在圆心的位置
	int x = 0;
	int y = 0;
	int vx = 5;
	int vy = 5;
	int r = 40;
	while (1) {
		cleardevice();
		solidcircle(x, y, r);
		Sleep(40);
		//判断小球是否撞击到顶边
		if (y >= 300 || y <= -300) {
			vy = -vy;

		}
		// 在坐标轴中取反
		if (x >= 400 || x <= -400) {
			vx = -vx;
		}
		x += vx;
		y += vy;
	}



	getchar();
	closegraph();
	return 0;

}

实现弹球小游戏的具体代码

  • 使用c语言的库函数和控制台函数指针与结构体
#include <stdio.h>
#include <easyx.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define PI 3.14


// 函数的封装---》 结构体
typedef struct {
	int x ,y;
	int vx, vy;
	int r;
	int barLeft, barTop, barRight, barBottom;

}GameData;

void reset(GameData *gdata) {
	// 指针调用数值的方式是->
	gdata->x = rand() % (400 + 1) - 200;
	gdata->y = rand() % (300 + 1) - 150;
	gdata->vx = 5;
	gdata->vy = 5;
	if (rand() % 2 == 0) {
		gdata->vy = -gdata->vy;

	}if (rand() % 2 == 0) {
		gdata->vx = -gdata->vx;
	}
	gdata->r = 40;
	gdata->barLeft = -150;
	gdata->barRight = 150;
	gdata->barTop = -280;
	gdata->barBottom = -300;

}

int main()
{
	initgraph(800, 600);
	setorigin(400, 300);
	setaspectratio(1, -1);
	setbkcolor(RGB(164, 225, 202));
	cleardevice();
	// 将当前的时间作为随机种子
	srand((unsigned int)time(NULL));
	//声明GameData变量将其传入reset函数中用于初始化游戏数据
	GameData gdata;
	// 函数的调用将地址传递过去通过指针获取地址
	reset(&gdata);


	while (1) {
		cleardevice();
		solidcircle(gdata.x, gdata.y, gdata.r);
		solidrectangle(gdata.barLeft, gdata.barTop, gdata.barRight, gdata.barBottom);
		Sleep(40);
		
		//判断小球是否撞击到顶边,当小球的边缘撞击到窗体的顶部时历史反弹
		if (gdata.y >= 300- gdata.r) {
			gdata.vy = -gdata.vy;
		}
		// 在坐标轴中取反
		if (gdata.x >= 400- gdata.r || gdata.x <= -400+ gdata.r) {
			gdata.vx = -gdata.vx;
		}
		// 撞击或越过挡板的代码
		if (gdata.barLeft <= gdata.x && gdata.x <= gdata.barRight && gdata.y <= gdata.barTop + gdata.r) {
			gdata.vy = -gdata.vy;// vy 取反
		}


​		

		gdata.x += gdata.vx;
		gdata.y += gdata.vy;
	
		// 获取用户键盘输入,判断键盘的按钮是否被按下,控制挡板的移动
		if (_kbhit() != 0) {
			char c = _getch();
			if (c == 'a') {
				// 控制挡板的移动范围
				if (gdata.barLeft > -400) {
					gdata.barLeft -= 20;
					gdata.barRight -= 20;
				}
	
			}
			else if (c == 'd') {
				if (gdata.barRight < 400) {
					gdata.barLeft += 20;
					gdata.barRight += 20;
				}
			}
		}
		if (gdata.y <= -300) {
			reset(&gdata);
		}
	}
	
	getchar();
	closegraph();
	return 0;

}

在这里插入图片描述

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

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

相关文章

MWeb Pro for Mac:博客生成编辑器,助力你的创作之旅

在当今数字化时代&#xff0c;博客已经成为了许多人记录生活、分享知识和表达观点的重要渠道。而要打造一个专业、美观且易于管理的博客&#xff0c;选择一款强大的博客生成编辑器至关重要。今天&#xff0c;我向大家推荐一款备受好评的Mac软件——MWeb Pro。 MWeb Pro是一款专…

从龙湖智创生活入选金钥匙联盟,透视物业服务力竞争风向

假设你是业主&#xff0c;物业“服务”和“管理”&#xff0c;哪个名词看起来更加亲切、讨喜&#xff1f; 站在个人角度&#xff0c;“服务”更让人感受到温度。但对于一个要长期运营下去的住宅或者商企项目来说&#xff0c;整体的管理又必不可少。前者面向人&#xff0c;后者…

Zigbee 模组拉距测试

1.测试方法&#xff1a; 两个同型号Zigbee模组组网&#xff0c;一个作为协调器&#xff0c;一个作为路由器&#xff0c;协调器设备负责组网&#xff0c;其中路由器节点作为被测设备&#xff0c;入网网成功后一分钟开始一轮测试&#xff0c;连续发送100包数据&#xff0c;每包数…

nginx: [emerg] bind() to 0.0.0.0:18888 failed (98: Unknown error)问题解决办法

周末断网&#xff0c;今天来了之后&#xff0c;nginx出现这个问题&#xff0c;本站基本搜索的都是端口被占用问题&#xff0c;我试着杀掉所有占用端口的进程&#xff0c;解决办法 1.killall -9 nginx 2.然后启动(./nginx)nginx&#xff08;PS&#xff1a;不要./nginx -s relo…

echarts 饼图标注 字体修改

option {grid: {// 四周留白区域设置top: 20,right: 20,left: 20,bottom: 20,containLabel: true,},tooltip: {trigger: item,formatter: {b} : {c} ({d}%) // 展示百分比},series: [{type: pie,radius: [40%, 60%],avoidLabelOverlap: false,startAngle: 0, //起始角度data: …

Ajax学习笔记第4天

做决定之前仔细考虑&#xff0c;一旦作了决定就要勇往直前、坚持到底&#xff01; 【1 模仿百度招聘】 整个流程展示&#xff1a; 1.文件目录 2.页面效果展示及代码 data中的page1数据展示 2.1 主页 index.html:index里面代码部分解释 underscore.js :模板页面的相关代码 &…

香橙派OrangePi Zero开发板的WiFi连接

文章目录 调试串口连接连接WIFI设置开机自动连接自定义设置固定IP地址远程SSH连接 调试串口连接 1、准备一个 3.3v 的USB转TTL的模块&#xff0c;将开发板连接到电脑上 注意&#xff1a;引脚连接 a. USB 转 TTL 模块的 GND 接到开发板的 GND 上b. USB 转 TTL 模块的 RX 接到开…

专业课改革,难度陡然提高,专业课122总分390+南京理工大学818南理工818上岸经验分享

今年专业课相对较难&#xff0c;分数122&#xff0c;基本达到预期。南理工818是信号和数电两门课&#xff0c;各站一半。复试时间数电可能要更多一点&#xff0c;也比信号难拿分。今年专业课难度很大&#xff0c;基本超过不少985学校&#xff0c;大家要重视。 有条件的同学建议…

建筑施工二维码预制件管理系统

随着科学经济技术的发展&#xff0c;二维码标识设备越来越受人们的喜爱&#xff0c;不仅仅是在人们日常购物时需要使用到&#xff0c;在建筑用预制构件中使用也非常普遍&#xff0c;在这里二维码相当于预制构件的身份证&#xff0c;替代了传统标识牌。 1、信息管理。通过凡尔码…

倾斜摄影三维模型的顶层合并构建重要性分析

倾斜摄影三维模型的顶层合并构建重要性分析 倾斜摄影超大场景的三维模型的顶层合并对于构建精确、完整且真实的三维模型具有重要的意义和应用价值。本文将从几个方面对其重要性进行浅析。 一、模型完整性与连贯性 倾斜摄影超大场景的三维模型的顶层合并可以将多个倾斜摄影数据…

Tesseract-OCR的安装与环境变量配置

网盘链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;gtp1 中文包网盘链接&#xff1a;小蓝枣的资源仓库&#xff0c;提取码&#xff1a;8v8u 安装步骤&#xff1a;解压后直接“NEXT”&#xff0c;“NEXT”注意选择自己的安装路径。 安装后查看是否安装成功&#…

libcurl库的网页爬虫程序

示例代码&#xff1a; #include <curl/curl.h> #include <iostream> ​ int main() {CURL *curl;CURLcode res; ​curl_global_init(CURL_GLOBAL_DEFAULT); ​curl curl_easy_init();if(curl) {curl_easy_setopt(curl, CURLOPT_URL, "/");curl_easy_se…

成本预算管理系统

成本预算管理系统 功能介绍&#xff1a; 一 基本信息&#xff1a; 1、产品设置&#xff1a;产品的长、宽、高及面积计算公式的设置。 2、板材设置&#xff1a;板材类别、厚度、尺寸的设置 3、系统名称&#xff1a;风管系统的类别设置 4、公司信息&#xff1a;本公司的信息…

如何在Android设备上检查应用程序使用情况,包括使用时间

你可能不知道自己花了多少时间在手机上。很可能你一天中有一半的时间都在盯着手机屏幕。如果你怀疑这一事实,你会很快核实的。在这篇文章中,我们将向你介绍如何在Android设备上检查应用程序的使用情况。 如何在Android上检查应用程序电池使用情况 你使用时间最长的应用程序…

为什么会被【禅道】工具的公司提出QQ群的反思…………

周末备份Gitlab的代码库&#xff0c;把Gitlab更新到了最新的16.5。顺带看了禅道官网出了最新版本18.8。但是禅道的升级更新并不顺利…………。 先说一下为什么用禅道这个工具&#xff1a; 再使用禅道这个工具前&#xff0c;使用过的工具有QC(Quality Center)、jira&#xff0…

【c++|opencv】二、灰度变换和空间滤波---3.均值滤波

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 均值滤波 1. 均值滤波 #include <iostream> #include <opencv2/opencv.hpp> #include"Salt.h"using namespace cv; using names…

Jetpack Compose | State状态管理及界面刷新

我们知道Jetpack Compose&#xff08;以下简称Compose&#xff09;中的 UI 可组合项是通过Composable 声明的函数来描述的&#xff0c;如&#xff1a; Composable fun Greeting() {Text(text "init",color Color.Red,modifier Modifier.fillMaxWidth()) }上面的代…

重磅!GPT-4又进化了!画图、插件、代码等能力被整合,超级智能体来了

夕小瑶科技说 原创 作者 | 小戏、ZenMoore 就在今天&#xff01;OpenAI 闷声放了一个大招&#xff01; 还没有官宣&#xff0c;还没有发布会&#xff0c;也没有大肆报道与关注。OpenAI 这次仅仅以灰度测试的方式&#xff0c;给部分用户发布了一个可以说“整合了几乎所有可用工…

CentOS 安装 Hadoop Local (Standalone) Mode 单机模式

CentOS 安装 Hadoop Local (Standalone) Mode 单机模式 Hadoop Local (Standalone) Mode 单机模式 1. 修改yum源 并升级内核和软件 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repoyum clean allyum makecacheyum -y update2. 安…

极智嘉(Geek+)携数款创新方案亮相CeMAT展会,再度展现硬核实力

近日&#xff0c;CeMAT ASIA 2023盛大召开&#xff0c;全球仓储机器人引领者极智嘉(Geek)携旗下数款创新方案亮相&#xff0c;再次向各界展示了其在前沿科技、产品打磨上的硬实力。 首先是货架到人PopPick方案搭配VSW自动播种墙 在传统货到人拣选作业中&#xff0c;拣选员约有…