C语言基于ege图形库的图片碰撞检测

article/2025/1/10 11:58:15

WSAD移动 有碰撞的话会显示一个原点

我用的是两张80*80的图片 用其他的图片的话自己改代码 把图片改名成1.png和 2.png

就是这两张图片

 

 

#include<graphics.h>
#include<windows.h>
#include<stdio.h>
int xx,yy;
int wanjiax=20,wanjiay=120;
SMALL_RECT z,f,naka;
bool panduan(PIMAGE img,PIMAGE img2)
{bool zf=0;if(wanjiay<=200) {zf=1;z.Left=wanjiax;z.Top=wanjiay;z.Right=wanjiax+80;z.Bottom=wanjiay+80;f.Left=100;f.Top=200;f.Right=180;f.Bottom=280;}else {zf=0;z.Left=100;z.Top=200;z.Right=180;z.Bottom=280;f.Left=wanjiax;f.Top=wanjiay;f.Right=wanjiax+80;f.Bottom=wanjiay+80;}//主副框赋值完成if(f.Top>z.Bottom||f.Right<z.Left||f.Left>z.Right||f.Bottom<z.Top) return 0;//排掉没有相交完成color_t *zh,*fh;if(f.Right<=z.Right) {//如果副框在框左边 包含中线naka.Left=z.Left;naka.Top=f.Top;naka.Right=f.Right;naka.Bottom=z.Bottom;for(int j=naka.Top;j<=naka.Bottom;j++){if(zf) {zh=getbuffer(img);fh=getbuffer(img2);}else {fh=getbuffer(img);zh=getbuffer(img2);}fh+=(j-naka.Top)*80;zh+=(j-z.Top)*80;fh+=(naka.Left-f.Left);for(int i=naka.Left;i<=naka.Right;i++,fh++,zh++){if((*zh)!=0&&(*fh)!=0) {xx=i;yy=j;return 1;}}}}else {//如果副框在框右边 不含中线naka.Left=f.Left;naka.Top=f.Top;naka.Right=z.Right;naka.Bottom=z.Bottom;for(int j=naka.Top;j<=naka.Bottom;j++){if(zf) {zh=getbuffer(img);fh=getbuffer(img2);}else {fh=getbuffer(img);zh=getbuffer(img2);}fh+=(j-naka.Top)*80;zh+=(j-z.Top)*80;zh+=(naka.Left-z.Left);for(int i=naka.Left;i<=naka.Right;i++,zh++,fh++){if((*zh)!=0&&(*fh)!=0) {xx=i;yy=j;return 1;}}}}
}
main()
{initgraph(640,480);PIMAGE img,img2;bool b=0;img=newimage();img2=newimage();getimage_pngfile(img2,"2.png");char ch;img=newimage();getimage_pngfile(img,"1.png");for(;is_run();delay_fps(60)) {clearviewport();if(panduan(img,img2)==1) {b=1;}else {b=0;xx=-10;yy=-10;}putimage_withalpha(NULL,img,wanjiax,wanjiay);putimage_withalpha(NULL,img2,100,200);setcolor(EGERGB(255,255,255));int a[]={wanjiax,wanjiay,wanjiax+80,wanjiay,wanjiax+80,wanjiay+80,wanjiax,wanjiay+80,wanjiax,wanjiay};drawpoly(5,a);int b[]={100,200,180,200,180,280,100,280,100,200};drawpoly(5,b);setcolor(EGERGB(69,255,0));int c[]={naka.Left,naka.Top,naka.Right,naka.Top,naka.Right,naka.Bottom,naka.Left,naka.Bottom,naka.Left,naka.Top};drawpoly(5,c);setcolor(EGERGB(255,255,255));if(b) {setfillcolor(EGERGB(255,255,255));fillellipse(xx,yy,5,5);}if(kbhit()) {ch=getch();switch(ch) {case 'a':wanjiax-=1;break;case 's':wanjiay+=1;break;case 'w':wanjiay-=1;break;case 'd':wanjiax+=1;break;case 'j':getch();break;}}}delimage(img);closegraph();return 0;
}

思路来源

“等一下,我碰!”——常见的2D碰撞检测 - Bill Yuan - 博客园 (cnblogs.com)


http://chatgpt.dhexx.cn/article/oyLx3d8D.shtml

相关文章

【精选】各种节日祝福(C语言,可修改),Easyx图形库应用+源代码分享

博主&#xff1a;命运之光✨✨ 专栏&#xff1a;Easyx图形库应用&#x1f4c2; 目录 ✨一、程序展示 范例一&#xff1a;❤新年祝福❤ 范例二&#xff1a;❤母亲节祝福❤ ✨二、项目环境 简单介绍一下easyx图形库应用 Easyx图形库 ✨三、运行效果展示&#xff08;视频&am…

C语言之五子棋项目 基于EasyX图形库

C语言之五子棋 前言一、EasyX图形库下载与安装1.EasyX图形库下载2.VS2019设置EasyX图形库 二、五子棋中用到的图形库知识1.初始化页面2.文字显示3.鼠标操作4.棋盘绘制5.绘制棋子 三、五子棋核心程序1.放置棋子2.判断连棋3.人人对战4.人机对战 总结 前言 极客领航搁置许久&#…

C语言——EGE入门图形库实现经典魔塔游戏

个人博客地址&#xff1a;https://www.jdassd.top 该游戏的制作有一些疏漏的地方&#xff0c;目前发现以下几处&#xff1a; 在某些情况下&#xff0c;怪物可能会出现打不死但能够进入决斗界面的问题。上下楼梯口楼层转换时又回到该楼层或两楼层互相转换的问题。&#xff08;实…

【C语言】——基于Ncurse图形库的C语言小程序

游戏说明&#xff1a;运行在Linux环境下 基于Ncurse图形库的C语言小程序 项目知识要求:C编程基础、Linux基本操作&#xff08;代码编写、编译代码、运行代码、创建文件夹&#xff09; 代码的编辑&#xff1a;vi test1.c 进入文档按下i进行编写代码 按下esc进入命令行输入&…

C语言图形库EasyX安装及基本使用

本文章介绍C用EasyX进行C基础图形编程介绍。 EasyX安装&#xff1a; 1、点击上方超链接&#xff0c;进入官网&#xff0c;点击右侧下载EasyX 2、点击下载后的可执行文件&#xff1a; 3、EasyX安装非常简单&#xff0c;进入可执行文件&#xff0c;直接next&#xff0c;然后会自…

c语言的图形库

图形库链接http://www.easyx.cn/ 使用图形库头文件easyx.h或graphics.h 同样在里面下载图形库帮助文档进行查询 vs vc都可使用图形库 图形库窗口: initgraph打开窗口 closegraph关闭窗口 颜色 RGB值 RGB(,,):red green blue 下表值都可以在函数中直接使用填充颜色 上图为图形…

在Dev C++中使用c语言图形库的配置

[img]C:\Documents and Settings\Administrator\桌面\devcppEditor1.gif[/img]Dev-C Installation If you are installing Dev-C on your own computer, you should make some changes and additions to the default installation. Here are the details. If you are planning…

利用DevC++和EGE图形库写出一款C语言飞机大战小游戏

利用DevC以及EGE图形库写出一款C语言飞机大战小游戏 前言&#xff1a; 上学期期末大作业利用C语言写过一个极其简陋的飞机大战&#xff08;只有黑洞洞的终端窗口&#xff0c;至于飞机&#xff0c;额&#xff0c;也是一言难尽&#xff09;&#xff0c;暑假闲来无事&#xff0c…

【c语言】五子棋(EasyX图形库+背景音乐)

大家好&#xff0c;有没有觉得写了好多c语言代码&#xff0c;面对的都是黑框框控制台&#xff0c;当我们学习了基础的c语言知识&#xff0c;和EasyX图形库后&#xff0c;终于可以和黑框框saygoodbye,今天要分享给大家的是小游戏五子棋&#xff0c;跟着小张一起学习吧 EasyX图形…

C语言课程设计图形库

记得刚上大学的时候&#xff0c;大一学C语言&#xff0c;最后有一个大作业&#xff0c;用的是Turbo C2.0&#xff0c;然后大部分设计题都需要用到里面的图形界面&#xff0c;也就是引用<graphics.h>.差不10年过去了&#xff0c;不知道现在的学生还用不用Turbo C&#xff…

C语言画图形(图形库graphics的使用)

目录 工具 c语言基本绘图 文字输出 c语言基本贴图 获取鼠标、键盘信息 工具 &#xff08;1&#xff09;环境&#xff1a;VC &#xff08;2&#xff09;库函数&#xff1a;graphics.h&#xff08;因为不是标准库函数&#xff0c;所以需下载EASYX&#xff09; &#xff08;3&am…

codeblock c语言图形库,C语言入门项目——扫雷游戏(ege图形库+codeblocks)

扫雷游戏适合C练手,会C基本语法就可以尝试。需要导入ege图形库(文章后半部分写了ege如何导入codeblocks,以及我用到的ege函数) 一、先介绍如何将ege图形库导入codeblocks: 1、下载codeblocks 2、下载ege图形库的文件包 官方网址:ege图形库主站 (1)打开下载好的压缩包,找到…

【精选】适合初学者小游戏井字棋(三子棋)(C语言),Easyx图形库应用+源代码分享

【精选】井字棋&#xff08;三子棋&#xff0c;C语言&#xff09; 目录 【精选】井字棋&#xff08;三子棋&#xff0c;C语言&#xff09;游戏展示一、项目环境简单介绍一下easyx图形库Easyx图形库 二、游戏规则介绍三、运行效果展示四、项目介绍五、项目源代码分享总结与思考B…

C语言图形库——EasyX基本贴图

在C语言的学习过程中&#xff0c;接触最多的就是黑乎乎的DOS窗口&#xff0c;这也是在消磨学习者的兴趣&#xff0c;学到最后可能还不知道C语言到底能做什么&#xff0c;难道就是输入输出数据吗&#xff1f;当然不是&#xff0c;C的用处很广泛&#xff0c;这里不做讨论。我们能…

#C语言或C++中强大的图形库——easyx

1.了解easyx图形库 EasyX Graphics Library 是针对 Visual C 的免费绘图库&#xff0c;支持 VC6.0 ~ VC2022&#xff08;以及VS2013~VS2022)&#xff0c;简单易用&#xff0c;学习成本极低&#xff0c;应用领域广泛。目前已有许多大学将 EasyX 应用在教学当中。 使用范围&…

产品 • B端和C端产品经理有什么区别?

一些概念 to-C产品分类&#xff1a; 直接触达型&#xff1a;类似一级市场——微信、微博等平台&#xff1b;间接触达型&#xff1a;二级市场——广告、公众号等 &#xff1b; 总的市场规模&#xff1a; 用户规模可用时间 —— 御豪同学 • 京东金融 • 数据产品经理 每位用户每…

B端产品思维全解析,提升产品经理核心竞争力

产品思维和用户思维组成了产品经理两大核心思维方法论。对两者的理解也代表了产品经理的产品理解方向。 很多人把产品思维和用户思维混在一起说&#xff0c;我觉得是不合适的&#xff0c;因为两个是互相搭配的关系&#xff0c;你也可以把产品思维理解成智商&#xff0c;用户思维…

全方位解析 C 端和 B 端的产品特性

近年来&#xff0c;互联网进入下半场&#xff0c;C 端流量红利逐渐消退&#xff0c;很多企业转向了 B 端服务&#xff0c;随之而来的是产品设计者的转型&#xff0c;现在越来越多的 C 端产品设计师开始涉足到 B 端产品的设计&#xff0c;这是一个知识迁移的过程&#xff0c;需要…

B端产品经理,应从哪些方面理解业务?

新人入职新公司后&#xff0c;第一个工作就是了解公司业务&#xff0c;一般都是看公司项目PPT、产品需求文档&#xff0c;根据现有系统功能梳理功能结构图、产品流程等方式&#xff0c;但并不能系统化地帮助我们了解公司业务&#xff0c;容易流于表面。 由于TO B业务往往具有鲜…