C语言实现弹跳小球

 更新时间:2020年03月19日 15:03:26   作者:beamstar  
这篇文章主要为大家详细介绍了C语言实现弹跳小球,设置了小球分数及过关难度,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

这是一个简单的c语言源代码,C语言实现弹跳小球,设置了小球的分数及过关的难度。

#include "graphics.h"
#include "math.h"
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define ESC 0x011b
int x,y,x1,y1,key,t1,t2,keyx,keylong,keymove,over=0,i,tt=0,fast;
int ballx[9]={53,103,263,120,236,390,410,450,600};
int bally[9]={158,239,120,113,30,313,120,263,231},ballz[9]={0};
float ls;
 win()
{float lx,ly,ll;
 for(i=0;i<9;i++)
 {
 if(ballz[i]==1)/*假如球体已经消失就不判定*/
 continue;
 lx=(float)(ballx[i]-x);
 ly=(float)bally[i]-y;
 ll=lx*lx+ly*ly;
 ls=sqrt(ll);
 if((int)ls<17)/*判定两球是否碰到*/
 {tt++;/*记录消失几个球*/
 fast-=50;/*速度加快*/
 if(i%2==0)/*移动加快*/
 keymove+=5;
 else
 {
 setcolor(0);
 rectangle(keyx,460,keyx+keylong,470);
 keylong-=10;/*长条变短*/
 setcolor(YELLOW);
 rectangle(keyx,460,keyx+keylong,470);
 }
 ballz[i]=1;
 setcolor(0);
 circle(ballx[i],bally[i],10);
 if(y<bally[i])
 if(x<ballx[i])
 {t1=-1;t2=-1;}
 else
 {t1=1;t2=-1;}
 else
 if(x<ballx[i])
 {t1=-1;t2=1;}
 else
 {t1=1;t2=1;}
 }
 }
}
 fungo()
{ x=100,y=50,keyx=200,keylong=100,keymove=15,fast=5000;
 for(i=0;i<9;i++)
 {
 setcolor(i+1);
 circle(ballx[i],bally[i],10);
 }
 sleep(1);
 t1=t2=1;
 while(1)
 {
 while(!kbhit())
 {
 setcolor(YELLOW);
 rectangle(keyx,460,keyx+keylong,470);
 x1=x;
 y1=y;
 x+=t1;
 y+=t2;
 setcolor(4);
 circle(x,y,6);
 delay(fast);
 setcolor(0);
 circle(x,y,6);
 win();
 if(tt==9)/*胜利*/
 {
 cleardevice();
 over=1;
 setcolor(RED);
 settextstyle(0,0,4);
 setusercharsize(3,1,3,1);
 outtextxy(200,200," YOU WIN! ");
 break;
 }
 if(y>480)/*失败*/
 {
 cleardevice();
 over=1;
 setcolor(RED);
 settextstyle(0,0,4);
 setusercharsize(3,1,3,1);
 outtextxy(200,200,"GAME OVER");
 break;
 }
 else if(x==11&&y==11)/*判定碰到东西*/
 {t1=1;t2=1;}
 else if(x==629&&y==11)
 {t1=-1;t2=1;}
 else if(x==11)
 {
 if(y<y1)
 {t1=1;t2=-1;}
 else
 {t1=1;t2=1;}
 }
 else if(y==11)
 {
 if(x<x1)
 {t1=-1;t2=1;}
 else
 {t1=1;t2=1;}
 }
 else if(x==629)
 {
 if(y1>y)
 {t1=-1;t2=-1;}
 else
 {t1=-1;t2=1;}
 }
 else if(y==449)
 {
 if(x>=keyx&&x<=keyx+keylong)
 {
  if(x<(keyx+keylong/4))
  {t1=-1;t2=-1;}
  else if(x>=(keyx+keylong/4)&&x<(keyx+keylong/2))
  {t1=-1;t2=-2;}
  else if(x>=(keyx+keylong/2)&&x<(keyx+keylong/4*3))
  {t1=1;t2=-2;}
  else
  {t1=1;t2=-1;}
 }
 }
 }
 if(over)
 break;
 key=bioskey(0);
 setcolor(0);
 rectangle(keyx,460,keyx+keylong,470);
 if(key==ESC)
 {cleardevice();break;}
 else if(key==LEFT)
 keyx-=keymove;
 else if(key==RIGHT)
 keyx+=keymove;
 }
} 


 main()
{int gd=DETECT,gr;
 initgraph(&gd,&gr,"c:\\tc");
 fungo();
 getch();
 sleep(1);
 closegraph();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C语言实现商品管理系统开发

    C语言实现商品管理系统开发

    这篇文章主要为大家详细介绍了C语言实现商品管理系统开发,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C++虚函数表的原理与使用解析

    C++虚函数表的原理与使用解析

    对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。本文就将详细讲讲虚函数表的原理与使用,需要的可以参考一下
    2022-04-04
  • C语言字符/字符串相关函数收藏大全

    C语言字符/字符串相关函数收藏大全

    这篇文章主要给大家介绍了关于C语言字符/字符串的相关函数,文中通过示例代码总结的非常详细,对大家学习或者使用C语言具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • linux c程序中获取shell脚本输出的实现方法

    linux c程序中获取shell脚本输出的实现方法

    以下是对在linux下c程序中获取shell脚本输出的实现方法进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • C++ 容器适配器仿函数与priority_queue的使用

    C++ 容器适配器仿函数与priority_queue的使用

    本文主要介绍了C++ 容器适配器仿函数与priority_queue的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09
  • C语言关系运算符实例详解

    C语言关系运算符实例详解

    本文主要介绍C语言的关系运算符的知识,这里提供实例代码以便参考,希望能帮助有需要的小伙伴
    2016-07-07
  • C语言运算符深入探究优先级与结合性及种类

    C语言运算符深入探究优先级与结合性及种类

    C语言运算符号指的是运算符号。C语言中的符号分为10类:算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符和特殊运算符
    2022-05-05
  • 常用的C语言排序算法(两种)

    常用的C语言排序算法(两种)

    本文给大家分享两种常用的C语言排序算法,代码非常简单,感兴趣的朋友可以参考下
    2016-09-09
  • C++ OpenGL实现旋转立方体的绘制

    C++ OpenGL实现旋转立方体的绘制

    这篇文章主要主要为大家详细介绍了如何利用C++和OpenGL实现旋转立方体的绘制,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手尝试一下
    2022-07-07
  • C++中命名空间的概念及使用详解

    C++中命名空间的概念及使用详解

    这篇文章主要介绍了C++中命名空间的概念及使用详解,使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字就是针对这种问题而出现的,需要的朋友可以参考下
    2023-08-08

最新评论