C语言实现弹跳小球

所属分类: 软件编程 / C 语言 阅读数: 60
收藏 0 赞 0 分享

这是一个简单的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语言指针的作用,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言中变量与其内存地址对应的入门知识简单讲解

这篇文章主要介绍了C语言中变量与其内存地址对应的入门知识简单讲解,同时这也是掌握指针部分知识的基础,需要的朋友可以参考下
收藏 0 赞 0 分享

讲解C语言编程中指针赋值的入门实例

这篇文章主要介绍了讲解C语言编程中指针赋值的入门实例,通过const int i与int *const pi这样两个例子来分析指针的赋值和地址指向,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言中的结构体的入门学习教程

这篇文章主要介绍了C语言中的结构体的入门学习教程,以struct语句定义的结构体是C语言编程中的重要基础,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言编程入门之程序头文件的简要解析

这篇文章主要介绍了C语言编程入门之程序头文件的简要解析,包括头文件重复包含问题等方面的说明,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言编程中的联合体union入门学习教程

这篇文章主要介绍了C语言编程中的联合体union入门学习教程,也是C语言入门学习中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言中数组作为函数的参数以及返回值的使用简单入门

这篇文章主要介绍了C语言中数组作为函数的参数以及返回值的使用简单入门,这里以一维数组作为基本条件进行例子讲解,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL的内存表的基础学习教程

这篇文章主要介绍了MySQL的内存表的基础学习教程,包括内存表的创建以及使用限制等等,需要的朋友可以参考下
收藏 0 赞 0 分享

C++中头文件的概念与基本编写方法

这篇文章主要介绍了C++中头文件的概念与基本编写方法,是C++入门学习中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

jQuery移动页面开发中主题按钮的设计示例

这篇文章主要介绍了jQuery移动页面开发中主题按钮的设计示例,jQuery是当今最具人气的JavaScript开发类库,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多