| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 963 人关注过本帖
标题:坐等 高人 帮忙完成弹球游戏源代码
只看楼主 加入收藏
w261556621
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-6-2
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
坐等 高人 帮忙完成弹球游戏源代码
#include "graphics.h"
#include "math.h"
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define ESC 0x011b
#include "stdio.h"
#include "conio.h"                /*所需的头文件*/
int on;                           /*声明具有开关作用的全局变量*/
static int score;                 /*声明静态的记分器变量*/


/* 定义开始界面函数*/
int open()
{
 setviewport(100,100,500,380,1);   /*设置图形窗口区域*/
 setcolor(RED);                      /*设置作图色*/
 rectangle(0,0,399,279);           /*以矩形填充所设的图形窗口区域*/
 setfillstyle(SOLID_FILL,7);       /*设置填充方式*/
 floodfill(60,60,6);               /*设置填充范围*/
 setcolor(8);
 settextstyle(0,0,3);              /*文本字体设置*/
 outtextxy(80,80,"COME ON BOY");          /*输出文本内容*/
 settextstyle(0,0,1);
 outtextxy(100,180,"by lcx");
 settextstyle(0,0,1);
 outtextxy(120,240,"Press any key to continue......");
}

/*定义退出界面函数*/
int quitwindow()
{
  char s[100];                       /*声明用于存放字符串的数组*/
  setviewport(100,150,540,420,1);
  setcolor(YELLOW);
  rectangle(0,0,439,279);
  setfillstyle(SOLID_FILL,7);
  floodfill(50,50,14);
  setcolor(12);
  settextstyle(0,0,8);
  outtextxy(120,80,"End");
  settextstyle(0,0,2);
  outtextxy(120,200,"quit? Y/N");
  sprintf(s,"Your score is:%d",score);/*格式化输出记分器的值*/
  outtextxy(120,180,s);
  on=1;                               /*初始化开关变量*/
}
 main()
{

  int gdriver,gmode;
  gdriver=DETECT;                    /*设置图形适配器*/
  gmode=VGA;                         /*设置图形模式*/
  registerbgidriver(EGAVGA_driver);  /*建立独立图形运行程序*/
  initgraph(&gdriver,&gmode,"");     /*图形系统初试化*/
  setbkcolor(14);
  open();                            /*调用开始界面函数*/
  getch();                           /*暂停*/

while(1)                             /*此大循环体控制游戏的反复重新进行*/
{
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=6000;
  for(i=0;i<9;i++)            /*循环9次绘制9个被撞击的圆圈*/
  {
  setcolor(i+1);             /*设置圆圈的颜色,每个圆圈一种颜色*/
  circle(ballx[i],bally[i],10); /*使用设置好的画球数组绘制被撞击的圆圈*/
  }
  sleep(1);
  t1=t2=1;
  while(1)                 /*执行循环*/
  {
   while(!kbhit())      /*从键盘上响应返回值,KBHIT()的返回值是0*/
   {
   setcolor(YELLOW);     /*设置当球板的颜色 黄色*/
   rectangle(keyx,460,keyx+keylong,470);        /*设置矩形挡板,挡板长100*/
   x1=x;
   y1=y;
   x+=t1;
   y+=t2;
   setcolor(4);                          /*设置颜色为红色*/
   circle(x,y,6);                       /*绘制半径为6的运动小球*/
   delay(fast);
   setcolor(0);                          /*设置颜色*/
   circle(x,y,6);                        /*绘制半径为6的圆圈*/
   win();
   if(tt==9)/*胜利*/
   {
   cleardevice();                /*清除屏幕显示,仅用于图形工作方式*/
   over=1;                        /*生理和失败游戏都结束*/
   setcolor(RED);                  /*设置颜色*/
   settextstyle(0,0,4);             /*设置图形模式下字符显示底字体、方向和大小*/
   setusercharsize(3,1,3,1);         /*图形模式下设置人一比例大小的字体显示*/
   outtextxy(200,200," YOU WIN! ");  /*图形模式下在x,y坐标位置显示一行字符串*/
   break;
   }
   if(y>480)/*失败*/
   {
   cleardevice();              /*清除屏幕显示,仅用于图形工作方式*/
   over=1;                      /*生理和失败游戏都结束*/
   setcolor(RED);
   settextstyle(0,0,4);         /*设置图形模式下字符显示底字体、方向和大小*/
   setusercharsize(3,1,3,1);     /*图形模式下设置人一比例大小的字体显示*/
   outtextxy(200,200,"GAME OVER"); /*图形模式下在x,y坐标位置显示一行字符串*/
   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;
 }
}
  if(a=='y'&&on==1)                  /*是否退出游戏*/
      {break;}
    if(a=='n'&&on==1)
      { continue;}
 }
  closegraph();
  getch();
}

搜索更多相关主题的帖子: 游戏 源代码 
2011-06-02 16:14
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:20 
你还不如把流程图贴上来,哪个模块不清楚,一目了然

技术问题,请不要以短消息方式提问
2011-06-02 23:57
w261556621
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-6-2
收藏
得分:0 
回复 2楼 zaixuexi
就是做一个弹球游戏, 有欢迎界面,结束界面 可以 调整难度   上面固定九个球  然后可以 重新开始游戏 就是这么个流程  具体我也不太会 瞎弄的一个  求高人 帮助啊~~~
2011-06-03 11:14
快速回复:坐等 高人 帮忙完成弹球游戏源代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019724 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved