當前位置:編程學習大全網 - 源碼下載 - 求C語言編寫的壁球小遊戲的源代碼,謝謝。

求C語言編寫的壁球小遊戲的源代碼,謝謝。

速度和 接板 長度不能改

所以比較難玩

#include "graphics.h"

#include "stdio.h"

#include "conio.h" /*所需的頭文件*/

int on; /*聲明具有開關作用的全局變量*/

static int score; /*聲明靜態的記分器變量*/

/* 定義開始界面函數*/

int open()

{

setviewport(100,100,500,380,1); /*設置圖形窗口區域*/

setcolor(4); /*設置作圖色*/

rectangle(0,0,399,279); /*以矩形填充所設的圖形窗口區域*/

setfillstyle(SOLID_FILL,7); /*設置填充方式*/

floodfill(50,50,4); /*設置填充範圍*/

setcolor(8);

settextstyle(0,0,9); /*文本字體設置*/

outtextxy(90,80,"BALL"); /*輸出文本內容*/

settextstyle(0,0,1);

outtextxy(110,180,"version 1.0");

outtextxy(110,190,"made by ddt");

setcolor(128);

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=0; /*設置圖形模式*/

registerbgidriver(EGAVGA_driver);/* 註冊BGI驅動後可以不需要.BGI文件的支持運行 */

initgraph(&gdriver,&gmode,"");

setbkcolor(14);

open(); /*調用開始界面函數*/

getch(); /*暫停*/

while(1) /*此大循環體控制遊戲的反復重新進行*/

{

int driver,mode,l=320,t=400,r,a,b,dl=5,n,x=200,y=400,r1=10,dx=-2,dy=-2;/*初始化小球相關參數*/

int left[100],top[100],right[100],bottom[100],i,j,k,off=1,m,num[100][100];/*方磚陣列相關參數*/

static int pp;

static int phrase; /*壹系列起開關作用的變量*/

int oop=15;

pp=1;

score=0;

driver=DETECT;

mode=VGA;

registerbgidriver(EGAVGA_driver);

initgraph(&driver,&mode,"");

setbkcolor(10);

cleardevice(); /*圖形狀態下清屏*/

clearviewport(); /*清除現行圖形窗口內容*/

b=t+6;

r=l+60;

setcolor(1);

rectangle(0,0,639,479);

setcolor(4);

rectangle(l,t,r,b);

setfillstyle(SOLID_FILL,1);

floodfill(l+2,t+2,4);

for(i=0,k=0;i<=6;i++) /*此循環繪制方磚陣列*/

{

top[i]=k;

bottom[i]=top[i]+20;

k=k+21;

oop--;

for(j=0,m=0;j<=7;j++)

{

left[j]=m;

right[j]=left[j]+80;

m=m+81;

setcolor(4);

rectangle(left[j],top[i],right[j],bottom[i]);

setfillstyle(SOLID_FILL,j+oop);

floodfill(left[j]+1,top[i]+1,4);

num[i][j]=pp++;

}

}

while(1) /*此循環控制整個動畫*/

{

while(!kbhit())

{

x=x+dx; /*小球運動的圓心變量控制*/

y=y+dy;

if(x+r1>r||x+r1<r)

{ phrase=0;}

if((x-r1<=r||x+r1<=r)&&x+r1>=l)

{

if(y<t)

phrase=1;

if(y+r1>=t&&phrase==1)

{dy=-dy;y=t-1-r1;}

}

if(off==0)

continue;

for(i=0;i<=6;i++) /*此循環用於判斷、控制方磚陣列的撞擊、擦除*/

for(j=0;j<=7;j++)

{

if((x+r1<=right[j]&&x+r1>=left[j])||(x-r1<=right[j]&&x-r1>=left[j]))

{

if(( y-r1>top[i]&&y-r1<=bottom[i])||(y+r1>=top[i]&&y+r1<=bottom[i] ))

{

if(num[i][j]==0)

{continue; }

setcolor(10);

rectangle(left[j],top[i],right[j],bottom[i]);

setfillstyle(SOLID_FILL,10);

floodfill(left[j]+1,top[i]+1,10);

dy=-dy;

num[i][j]=0;

score=score+10;

printf("%d\b\b\b",score);

}

}

if((y+r1>=top[i]&&y+r1<=bottom[i])||(y-r1>=top[i]&&y-r1<=bottom[i]))

{

if((x+r1>=left[j]&&x+r1<right[j])||(x-r1<=right[j]&&x-r1>left[j]))

{

if(num[i][j]==0)

{ continue;}

setcolor(10);

rectangle(left[j],top[i],right[j],bottom[i]);

setfillstyle(SOLID_FILL,10);

floodfill(left[j]+1,top[i]+1,10);

dx=-dx;

num[i][j]=0;

score=score+10;

printf("%d\b\b\b",score);

}

}

}

if(x+r1>639) /*控制小球的彈射範圍*/

{dx=-dx;x=638-r1;}

if(x<=r1)

{dx=-dx;x=r1+1;}

if(y+r1>=479)

{off=0;quitwindow();break;}

if(y<=r1)

{dy=-dy;y=r1+1;}

if(score==560)

{off=0;quitwindow();break;}

setcolor(6);

circle(x,y,r1);

setfillstyle(SOLID_FILL,14);

floodfill(x,y,6);

delay(1000);

setcolor(10);

circle(x,y,r1);

setfillstyle(SOLID_FILL,10);

floodfill(x,y,10);

}

a=getch();

setcolor(10);

rectangle(l,t,r,b);

setfillstyle(SOLID_FILL,10);

floodfill(l+2,t+2,10);

if(a==77&&l<=565) /*鍵盤控制設定*/

{dl=20;l=l+dl;}

if(a==75&&l>=15)

{dl=-20;l=l+dl;}

if(a=='y'&&on==1)

break;

if(a=='n'&&on==1)

break;

if(a==27)

{quitwindow();off=0;}

r=l+60;

setcolor(4);

rectangle(l,t,r,b);

setfillstyle(SOLID_FILL,1);

floodfill(l+5,t+5,4);

delay(100);

}

if(a=='y'&&on==1) /*是否退出遊戲*/

{break;}

if(a=='n'&&on==1)

{ continue;}

}

closegraph();

}

妳不是要求在TC裏運行麽

C++和C不同的

如果要在C++裏

妳前面要寫函數的聲明的

C裏就不用

修改過了,試壹試吧。

我這裏可以

壹閃而過那個是圖形界面的問題

驅動沒安裝好

  • 上一篇:國際精益六西格瑪研究所(iLSSi)是什麽機構?
  • 下一篇:嵌入式開發中的燒寫與移植的區別?
  • copyright 2024編程學習大全網