论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

又一个弹球游戏

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:44:13

假如一上来速度太快或者太慢的话可以通过改变fast变量的值

#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=600;
  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();
}

上一篇:{实例}对马踏棋盘的一点研究 人气:5409
下一篇:{实例}改进的发牌程序 人气:5614
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058