當前位置:首頁 » 編程語言 » c語言打磚塊

c語言打磚塊

發布時間: 2022-12-29 06:47:22

① 彈力球游戲有什麼特點

如果是打磚塊游戲的話 注意矢量反射就可以了 還有 起始射出球的角度不要是45度 其他的隨意了

c語言運行兩個子函數

不用線程或進程,cpu是無法調用時間片來執行兩個並行的程序的,只能順序往下執行。

③ 我想用C語言開發一個小項目

很小的游戲,你可以試試貓捉老鼠,請盡量使用圖片進行製作。貓捉老鼠的難度還是挺簡單的,你可以試試對你生活中有幫助的,例如解方程,解應用題。
我現在正在開發一個游戲,類似於打磚塊,但有四個板都能動,就像SHATTER一樣。但還是得看自己的愛好,你喜歡什麼就做什麼。
如果LZ不嫌棄的話,就點一下我下面的最佳答案吧:)

④ C語言有什麼作用,編寫軟體或者游戲是用C語言編寫的嗎

我也是去年剛學完C語言的,這是一門非常基礎的編程語言,有許多的程序員都在用它編寫程序。至於你說的C++嘛,也是和C語言一樣性質的編程語言。編程語言還有許多,諸如Basic,java等等。當然他們的規則也是不同的,但是也有相同之處。
語法限制不太嚴格,程序設計自由度大。雖然C語言也是強類型語言,但它的語法比較靈活,允許程序編寫者有較大的自由度。允許直接訪問物理地址,對硬體進行操作。由於C語言允許直接訪問物理地址,可以直接對硬體進行操作,因此它既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元,可用來寫系統軟體。生成目標代碼質量高,程序執行效率高。一般只比匯編程序生成的目標代碼效率低10へ20%。適用范圍大,可移植性好,C語言有一個突出的優點就是適合於多種操作系統,如DOS、UNIX、windows 98.windows NT;也適用於多種機型。C語言具有強大的繪圖能力,可移植性好,並具備很強的數據處理能力,因此適於編寫系統軟體,三維,二維圖形和動畫,它也是數值計算的高級語言。
缺點也有, C語言的缺點主要表現在數據的封裝性上,這一點使得C在數據的安全性上有很大缺陷,這也是C和C++的一大區別。C語言的語法限制不太嚴格,對變數的類型約束不嚴格,影響程序的安全性,對數組下標越界不作檢查等。從應用的角度,C語言比其他高級語言較難掌握。
像電腦游戲或者手機游戲其他編程語言都可以編寫,只是有難易繁簡之分罷了。
總之c語言是基礎,一定要重視!!!!!因為我們班現在學數據結構就受C語言之苦!還兼學java語言,痛煞我也,如何道哉!
最後,不要指望什麼語言都通,學精一門勝過樣樣疏鬆啊!兄台!
求加分!

⑤ Java大二課設,做一個打磚塊小游戲

很具體點嗎

⑥ C語言能製作小游戲需要其他軟體輔助嗎

能,但是C語言的是最接近系統的
高級語言
,像這類小游戲,建議你學C++,再用
開發平台
來做,比如QT,MFC等等,用面向對象的語言來寫游戲,軟體,便於擴展,維護。

⑦ C語言-打磚塊游戲是如何判斷球的反射方向的

一般一個變數表示朝向,兩個變數表示坐標
比對坐標和邊界判斷是否撞到牆和撞到了哪個牆,然後計算出入射角和反射後的坐標

⑧ 這個C語言打磚塊的代碼,磚塊如何實現刷新(磚塊怎麼消失)

c語言游戲中實現動畫靠的是1秒鍾多於25次的刷新。大一用easyx做過類似的,現在有點忘了,核心思想大概是

while(判斷游戲未結束)//時間沒停,未觸發游戲終止標志
{
for(inti=0;i<objectNum;i++)
{
//根據時間更新每個磚塊的狀態
//如果某磚塊的flag設為被打到,清除該物品,如果是鏈表刪節點
//未被打到,磚塊.y更新
}

//畫背景圖

for(inti=0;i<objectNum;i++)
{
//畫每個磚塊
}
//獲取用戶命令
//一旦有命令,DispatchCommand()
//調用那個函數,檢測滑鼠位置停留的時候是不是按鍵了,檢測有沒有操作磚塊
//sleep(100ms),延時造成視覺停留

}

⑨ c語言編的打磚塊游戲

這是一個c語言編的打磚塊游戲的雛形

編譯前在主目錄下建立一個文本文件(xia.txt)內容為:0 0 0 0 0

#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;<br/> unsigned int l;<br/> int i,gi,gj,j,flag=1;/*i,j是循環變數,flag是標記變數,-1:向x負半軸移動,+1:向x正半軸移動*/<br/> double qx,qy,k,b=0.0,speech=0.4,x,y;<br/> double r=2.0,bx=60.0,byy=270.0;<br/> double pianx=100.0,piany=100.0,tx=20.0,ty=10.0,jx=2.0,jy=2.0;<br/> int mx=0,my=0,mb,sum;/*sum紀錄磚塊的數目*/<br/> FILE * p;<br/> if((p = fopen("xia.txt", "r")) == NULL)<br/> {printf("The file cannot open!\n");<br/> 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[i]);
/*畫磚塊*/
for(i=0;i<5;i++)
{l=1;<br/> for(j=0;j<16;j++)<br/> {if((zhuan[i]&l)==0)<br/> {Draw((int)((jx+tx)*((16*i+j)%8)+pianx+jx),(int)((jy+ty)*((int)((16*i+j)/8))+piany+jy),<br/><br/>(int)tx,(int)ty);<br/> sum+=1;<br/> }
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;<br/> for(gj=0;gj<16;gj++)<br/> {<br/> if((zhuan[gi]&l)==0)<br/> {j=(16*gi+gj)/8;<br/> i=(16*gi+gj)%8;<br/> x=(jx+tx)*i+jx+tx/2+pianx;<br/> y=(jy+ty)*j+jy+ty/2+piany;<br/> /*邊判斷1*/<br/> 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))<br/> {flag=-flag;k=-k;<br/> zhuan[gi]=zhuan[gi]|l;<br/> sum-=1;<br/> 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;<br/> zhuan[gi]=zhuan[gi]|l;<br/> sum-=1;<br/> 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,int *bup)
{int xnew,ynew,ch;<br/> if(kbhit()) return getch();<br/> regs.x.ax=3;<br/> int86(0x33,& regs,& regs);<br/> xnew=regs.x.cx;<br/> ynew=regs.x.dx;<br/> *bup=regs.x.bx;<br/> *xp=xnew;<br/> *yp=ynew;<br/> return -1;<br/>}

⑩ 做一個打磚塊的游戲 用C語言

請編譯前在主目錄下建立一個文本文件(xia.txt)內容為:0 0 0 0 0
哈哈
#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[i]);
/*畫磚塊*/
for(i=0;i<5;i++)
{l=1;
for(j=0;j<16;j++)
{if((zhuan[i]&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);
}

熱點內容
魔獸清理緩存 發布:2025-07-03 10:46:38 瀏覽:518
神州防火牆web怎麼配置代碼 發布:2025-07-03 10:37:54 瀏覽:327
安卓看小說哪個軟體免費又最好 發布:2025-07-03 10:25:30 瀏覽:429
linuxprofile 發布:2025-07-03 10:25:29 瀏覽:718
存儲藍盤 發布:2025-07-03 09:55:10 瀏覽:887
java必學 發布:2025-07-03 09:21:57 瀏覽:446
go在線編譯 發布:2025-07-03 09:14:51 瀏覽:19
存儲控制器hp 發布:2025-07-03 08:59:51 瀏覽:504
密碼鎖延安多少一條 發布:2025-07-03 08:58:14 瀏覽:322
linux中gcc 發布:2025-07-03 08:51:04 瀏覽:412