题目描述
游戏中需要检测元素是否碰撞到一起,比如打飞机游戏,没躲避炮弹就算碰撞,检测出来,游戏game over。假设将游戏中的元素当作矩形,当两个矩形有重合点,则认为它们发生碰撞。
设屏幕左上角坐标为(0,0),x轴向右,y轴向下,屏幕上的点用(X,Y)坐标表示,如下图所示。
屏幕中的矩形用其左上角和右下角坐标标识。分别输入两个矩形的左上角和右下角坐标,检测其是否碰撞。
输入
测试次数T
每组测试数据两行:
第一行,矩形1的左上角坐标,右下角坐标
第二行,矩形2的左上角坐标,右下角坐标
输出
对每组测试数据,输出碰撞检测结果,YES(碰撞)或NO(无碰撞)
//判断是否相撞:数学问题(如图)1.在左右时高无所谓,在上下时宽无所谓? //111 //121 //111? #include<stdio.h> int main(void) { ?? ?int x1,x2,y1,y2,i; ?? ?int k1,k2,h1,h2,t; ?? ?scanf("%d\n",&t); ?? ?for(i=1;i<=t;i++) ?? ?{ ?? ??? ?scanf("%d %d %d %d",&x1,&y1,&x2,&y2); ?? ??? ?scanf("%d %d %d %d",&k1,&h1,&k2,&h2);//1为左和上,2为右和下 ?? ??? ?//高无所谓时? ?? ??? ?if(x2<k1)//左边 ?? ??? ?{ ?? ??? ? ? ?printf("NO\n");?? ? ?? ? ? ?} ?? ? ? ?else if(x1>k2)//右边 ?? ??? ?{ ?? ??? ??? ?printf("No\n"); ?? ??? ?}? ?? ??? ?//宽无所谓时 ?? ??? ?else if(y2<h1)//上边? ?? ??? ?{ ?? ??? ??? ?printf("No\n"); ?? ??? ?} ?? ??? ?else if(y1>h2)//下边 ?? ??? ?{ ?? ??? ??? ?printf("No\n"); ?? ??? ?} ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?printf("YES\n"); ?? ??? ?}? ? ? } ? ? return 0; }?
|