顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


主題 - libelu

頁: [1]
1
我組譯都沒錯可是要RUN就發生錯誤了我是用TURBO C程式RUN的有人能告訴我嗎?
#include<dos.h>
#include<stdio.h>
#include<graphics.h>
#include<math.h>
union REGS regs;
unsigned int zhuan[5];

int Msinit();
void Setmouse(int left,int right,int top,int buttom);
int Msread(int *xp,int *yp,int *bup);
void Draw(int x,int y,int sizex,int sizey);


main()
{int mode=VGAHI,driver=VGA;
 unsigned int l;
 int i,gi,gj,j,flag=1;/*i,j是循??量,flag是???量,-1:向x?半?移?,+1:向x正半?移?*/
 double qx,qy,k,b=0.0,speech=0.4,x,y;
 double r=2.0,bx=60.0,byy=270.0;
 double pianx=100.0,piany=100.0,tx=20.0,ty=10.0,jx=2.0,jy=2.0;
 int mx=0,my=0,mb,sum;/*sum????的?目*/
 FILE * p;
  if((p = fopen("xia.txt", "r")) == NULL)
    {printf("The file cannot open!\n");
     exit(1);}
 initgraph(&driver,&mode,"\\tc\\BGI");
 Msinit();
 Setmouse((int)(pianx+1+bx/2),(int)((tx+jx)*8+pianx-1-bx/2),(int)byy+piany,(int)byy+piany);

star:cleardevice();/*程序重?的介入?*/
 sum=0;
 qx=100.0+pianx-10;qy=180.0+pianx-10;k=0.33;
 setcolor(7);
 rectangle((int)(pianx-2),(int)(piany-2),(int)((tx+jx)*8+2+pianx),302+piany);
 setcolor(1);
 rectangle((int)(pianx-1),(int)(piany-1),(int)((tx+jx)*8+1+pianx),301+piany);
 /*?取?面情?*/
 for(i=0;i<5;i++)
 fscanf(p,"%x ",&zhuan);
  /*???*/
 for(i=0;i<5;i++)
 {l=1;
  for(j=0;j<16;j++)
  {if((zhuan&l)==0)
   {Draw((int)((jx+tx)*((16*i+j)%8)+pianx+jx),(int)((jy+ty)*((int)((16*i+j)/8))+piany+jy),

(int)tx,(int)ty);
    sum+=1;
   }
   l=l*2;
  }
 }

 for(;;)
{ setfillstyle(1, 0);
  bar(mx-bx/2,my,mx+bx/2,my+5);
  Msread(&mx, &my, &mb);

  Draw(mx-bx/2,my,bx,5);
  setcolor(0);
  circle(qx,qy,r);
  /*判?求是否反?*/
  if(qx-r<=pianx+1 || qx+r>=(tx+jx)*8+pianx-1) {flag=-flag;k=-k;}
  if(qy-r<=piany+1)  k=-k;

  for(gi=0;gi<5;gi++)
  {l=1;
  for(gj=0;gj<16;gj++)
  {
  if((zhuan[gi]&l)==0)
    {j=(16*gi+gj)/8;
     i=(16*gi+gj)%8;
     x=(jx+tx)*i+jx+tx/2+pianx;
     y=(jy+ty)*j+jy+ty/2+piany;
     /*?判?1*/
     if(qy>=y-ty/2 && qy<=y+ty/2 &&(pow(qx+r-x+tx/2,2)<1 || pow(qx-r-x-tx/2,2)<1))
      {flag=-flag;k=-k;
       zhuan[gi]=zhuan[gi]|l;
       sum-=1;
       if(sum==0) {printf("Win!\n");getch();goto star;}
       setfillstyle(1, 0);
       bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty)

*j+piany+jy+ty);
      }
      else
      /*?判?2*/
     if(qx>=x-tx/2 && qx<=x+tx/2 &&(pow(qy+r-y+ty/2,2)<1 || pow(qy-r-y-ty/2,2)<1))
      {k=-k;
       zhuan[gi]=zhuan[gi]|l;
       sum-=1;
       if(sum==0) {printf("Win!\n");getch();goto star;}
       setfillstyle(1, 0);
       bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty)

*j+piany+jy+ty);
      }
      else
      /*角判?*/
     if(pow(qx-x+tx/2,2)+pow(qy-y+ty/2,2)<=r*r || pow(qx-x-tx/2,2)+pow(qy-y+ty/2,2)<=r*r ||

pow(qx-x+tx/2,2)+pow(qy-y-ty/2,2)<=r*r || pow(qx-x-tx/2,2)+pow(qy-y-ty/2,2)<=r*r)
      {flag=-flag;
       zhuan[gi]=zhuan[gi]|l;
       sum-=1;
       if(sum==0) {printf("Win!\n");getch();goto star;}
       setfillstyle(1, 0);
       bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty)

*j+piany+jy+ty);
      }
     }l=l*2;}}
  /*棍棒的反?*/
  if(qx<=mx+bx/2 && qx>=mx-bx/2 && pow(qy+r-my,2)<1) {k=-(k/pow(k*k,0.5))*(0.3*bx/(pow(pow

(qx-mx,2),0.5)+0.000001));}
  if((int)(qy+r)>my+0.5) {printf("DEAD!");Setmouse(0,0,640,480);getch();exit(1);}
  b=qy-qx*k;
  if(flag==1) qx=qx+speech/pow(1.0+k*k,0.5);
  if(flag==-1) qx=qx-speech/pow(1.0+k*k,0.5);
  qy=qx*k+b;/*?算球心坐?*/
  setcolor(14);
  circle((int)qx,(int)qy,r);
  delay(1);
  if(mb==1) {Setmouse(0,0,640,480);exit(1);}
 }
}

/*??函?用于??鼠?的初始化*/
int Msinit()
{int recored;
 regs.x.ax=0;
 int86 (0x33, & regs, & regs);
 recored=regs.x.ax;
 if(recored==0)
 {printf("Mouse not foundd or Mouse driver not installed.\n");
  return 0;
 }
 else
 return recored;
}

/*下面的函?用于???置鼠?的移?范?*/
void Setmouse(int left,int right,int top,int buttom)
{
 regs.x.ax=7;
 regs.x.cx=left;
 regs.x.dx=right;
 int86(0x33,& regs,& regs);
 regs.x.ax=8;
 regs.x.cx=top;
 regs.x.dx=buttom;
 int86(0x33,& regs,& regs);
}

/*下面??函?用于??鼠?的?取*/
int Msread(int *xp,int *yp,int *bup)
{int xnew,ynew,ch;
  if(kbhit()) return getch();
   regs.x.ax=3;
   int86(0x33,& regs,& regs);
   xnew=regs.x.cx;
   ynew=regs.x.dx;
   *bup=regs.x.bx;
 *xp=xnew;
 *yp=ynew;
 return -1;
}

/*下面??子程序是完成描?一?按?*/
void Draw(int x,int y,int sizex,int sizey)/* x, y?左上角坐?sizex,sizey??和?*/
{int sizx=sizex-1;
 int sizy=sizey-1;
 setcolor(15);/*?里最好用白色*/
 line(x,y,x+sizx-1,y);
 line(x,y+1,x+sizx-2,y+1);
 line(x,y,x,y+sizy-1);
 line(x+1,y,x+1,y+sizy-2);
 setcolor(8);/*?里最好用深灰色*/
 line(x+1,y+sizy,x+sizx,y+sizy);
 line(x+2,y+sizy-1,x+sizx,y+sizy-1);
 line(x+sizx-1,y+1,x+sizx-1,y+sizy);
 line(x+sizx,y+2,x+sizx,y+sizy);
 setcolor(7);/*?里最好用灰色*/
 putpixel(x,y+sizy,3);
 putpixel(x+1,y+sizy-1,3);
 putpixel(x+sizx,y,3);
 putpixel(x+sizx-1,y+1,3);
 setfillstyle(1, 7);/*?里最好用灰色,?置填充模式*/
 bar(x+2,y+2,x+sizx-2,y+sizy-2);
}

2
程式討論版 / 有人有打磚塊程式的範例嗎?
« 於: 2006-01-05 22:20 »
我已經寫好可以用棒子反彈球的程式了可是我不知道要則麼畫出磚塊有人能給個範例讓我參考一下嗎?

3
_setcursortype(_NOCURSOR);

4
#include<stdio.h>
 void main()
{
 char freg[]={0,262,294,330,349,392};
 int f;
 int l;
 int foffset=0;
 int loffset=0;
 int Escstatus=0;
 FILE *fp;
 fp=fopen("SONG.txt","r");
 while(Escstatus==0)
{
 if(feof(fp))rewind(fp);
 fscanf(fp,"%d %d",&f,&l);
 sound(freg[f+foffset]);
 checkkey();
 delay(500*l+100*loffset);
 }
 nosound();
 fclose(fp);
}
 void checkkey()
{
 int key;
 while(bioskey(1)==0)
{
 key=bioskey(0);
 switch(key)
 case Esc:
 Escstatus=1;
 break;
 case Up:
 foffset++;
 break;
 foffset--;
 break;
 case Down:
 loffset++;
 break;
 loffset--;
 break;
 case LEFT:
 case RIGHT:
 case Spase:
 loffset=0;
 foffset=0;
 break;
 defolat:
}
}
另一個 TXT檔
1_1_2_1_3_1_1_1_1_1_2_1_3_1_1_1_3_1_4_1_5_2

5
#include<stdio.h>
#include<dos.h>
void main()
{
int f;
int l;
char freg[]={0,262,294,330,349,392};
FILE*fp;
fp=fopen("S3.txt","r");
while(!feof(fp))
{
fscanf(fp,"%d %d",&f,&l);
sound(freg[f]);
delay(500*l);
}
nosound();
fclose(fp);
}
另一個TXT檔
1_2_3_1_1_2_3_5_4_3_1_1_5_1_1_5_1

頁: [1]