當前位置:首頁 » 編程語言 » c語言圖形編程游戲
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言圖形編程游戲

發布時間: 2022-08-15 05:00:26

Ⅰ 用c語言編漢諾塔游戲要有圖形

Program Hanoi(input,output);
uses
crt;
type
a3=array[1..3] of byte;
var
n :byte;
Col,Flag:a3;

(* print a disk size is n on (x,y) *)
Procere Disk(x,y,n:byte);
var
i:byte;
Begin
for i:=0 to n do
begin
gotoxy(x+i,y);write('?);
gotoxy(x-i,y);write('?);
gotoxy(80,25);
end;
end;

(* a sound procere when move a disk *)
Procere Sing;
var
i,freq:integer;
Begin
Randomize;
for i:=1 to 10 do
begin
freq:=Random(2900)+100;
Sound(freq); Delay(20000);
NoSound;
end;
end;

(* clear a disk size is n on (x,y) *)
Procere ClrDisk(x,y,n:byte);
var
i:byte;
Begin
for i:=n downto 0 do
begin
gotoxy(x+i,y);write(' ');
gotoxy(x-i,y);write(' ');
end;
end;

(* initiate procere *)
Procere Initiate;
var
i:byte;
Begin
clrscr;
repeat { input n }
gotoxy(5,5);
write('輸入漢鍩塔的層數<1髇?1>:');
ClrEol;read(n);
until (0<n) and (n<12);
clrscr; {version information}
gotoxy(28,1);
write('** ',n,'-Hanoi Problem **');
gotoxy(37,2);
write('1992.10 W.Y.Z');
for i:=8 to 19 do {three pointers }
begin
gotoxy(15,i);write('?);
gotoxy(40,i);write('?);
gotoxy(65,i);write('?);
end;
for i:=1 to 80 do { the bottom }
begin
gotoxy(i,20);write('?);
end;
{ print A,B,C }
gotoxy(15,21);write('A');
gotoxy(40,21);write('B');
gotoxy(65,21);write('C');
for i:=n downto 1 do {n disks }
Disk(15,19-n+i,i-1);
{ initiate array Col[3],Flag[3] }
Col[1]:=15; Col[2]:=40; Col[3]:=65;
Flag[1]:=n+1; Flag[2]:=1; Flag[3]:=1;
{ some informations }
gotoxy(5,24);
write('Press spacebar to begin...');
repeat until ReadKey<>'';
gotoxy(5,24);ClrEol;
gotoxy(5,24);ClrEol;
write('Press any key to break.');
end;

(* move a disk FROM from TO too *)
Procere Move(m,from,too:byte);
var
x1,y1,x2,y2,n,step:byte;
Begin
x1:=Col[from]; y1:=20-Flag[from]+1;
x2:=Col[too] ; y2:=20-Flag[too];
step:=too-from; n:=m-1;
repeat { up }
ClrDisk(x1,y1,n);
if y1>=8 then begin gotoxy(x1,y1);write('?); end;
dec(y1);
Disk(x1,y1,n);Delay(10000);
until y1=5;
dec(Flag[from]);
repeat { shift }
ClrDisk(x1,5,n);
inc(x1,step);
Disk(x1,5,n);Delay(10000);
until x1=x2;
repeat { down }
ClrDisk(x2,y1,n);
if y1>=8 then begin gotoxy(x1,y1);write('?); end;
inc(y1);
Disk(x2,y1,n);Delay(10000);
until y1=y2;
inc(Flag[too]);
(* Sing; *)
if KeyPressed then Halt(0);
end;

(* n Hanoi Problem *)
procere N_Hanoi(n,a,b,c:byte);
Begin
if n=1 then Move(1,a,c)
else begin
N_Hanoi(n-1,a,c,b);
Move(n,a,c);
N_Hanoi(n-1,b,a,c);
end;
end;

(* print end information of this program *)
Procere Final;
Begin
gotoxy(5,24);ClrEol;
write('I have moved all disks !');
gotoxy(5,25);
write('Press spacebar to end.');
repeat until ReadKey<>'';
end;

Begin
Initiate;
N_Hanoi(n,1,2,3);
Final;
End.

Ⅱ 怎樣用C語言編寫一個小游戲

「貪吃蛇」C代碼:

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <time.h>

#include <Windows.h>

#define W 78 //游戲框的寬,x軸

#define H 26 //游戲框的高,y軸

int dir=3; //方向變數,初值3表示向「左」

int Flag=0; //吃了食物的標志(1是0否)

int score=0; //玩家得分

struct food{ int x; //食物的x坐標

int y; //食物的y坐標

}fod; //結構體fod有2個成員

struct snake{ int len; //身長

int speed; //速度

int x[100];

int y[100];

}snk; //結構體snk有4個成員

void gtxy( int x,int y) //控制游標移動的函數

{ COORD coord;

coord.X=x;

coord.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

void gtxy( int x,int y); //以下聲明要用到的幾個自編函數

void csh( ); //初始化界面

void keymove( ); //按鍵操作移動蛇

void putFod( ); //投放食物

int Over( ); //游戲結束(1是0否)

void setColor(unsigned short p, unsigned short q); //設定顯示顏色

int main( ) //主函數

{ csh( );

while(1)

{ Sleep(snk.speed);

keymove( );

putFod( );

if(Over( ))

{system(「cls」);

gtxy(W/2+1,H/2); printf(「游戲結束!T__T」);

gtxy(W/2+1,H/2+2); printf(「玩家總分:%d分」,score);

getch( );

break;

}

}

return 0;

}

void csh( ) //初始化界面

{ int i;

gtxy(0,0);

CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下兩行是隱藏游標的設置

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

for(i=0;i<=W;i=i+2) //橫坐標要為偶數,因為這個要列印的字元佔2個位置

{ setColor(2, 0); //設定列印顏色為綠字黑底

gtxy(i,0); printf("■"); //列印上邊框

gtxy(i,H); printf("■"); //列印下邊框

}

for(i=1;i<H;i++)

{ gtxy(0,i); printf("■"); //列印左邊框

gtxy(W,i); printf("■"); //列印右邊框

}

while(1)

{ srand((unsigned)time(NULL)); //初始化隨機數發生器srand( )

fod.x=rand()%(W-4)+2; //隨機函數rand( )產生一個從0到比」(W-4)」小1的數再加2

fod.y=rand()%(H-2)+1; //隨機函數rand( )產生一個從0到比」(H-2)」小1的數再加1

if (fod.x%2==0) break; //fod.x是食物的橫坐標,要是2的倍數(為偶數)

}

setColor(12, 0); //設定列印顏色為淡紅字黑底

gtxy(fod.x,fod.y); printf("●"); //到食物坐標處列印初試食物

snk.len=3; //蛇身長

snk.speed=350; //刷新蛇的時間,即是移動速度

snk.x[0]=W/2+1; //蛇頭橫坐標要為偶數(因為W/2=39)

snk.y[0]=H/2; //蛇頭縱坐標

setColor(9, 0); //設定列印顏色為淡藍字黑底

gtxy(snk.x[0], snk.y[0]); printf("■"); //列印蛇頭

for(i=1;i<snk.len;i++)

{ snk.x[i]=snk.x[i-1]+2; snk.y[i]=snk.y[i-1];

gtxy(snk.x[i],snk.y[i]); printf("■"); //列印蛇身

}

setColor(7, 0); //恢復默認的白字黑底

return;

}

void keymove( ) //按鍵操作移動蛇

{ int key;

if( kbhit( ) ) //如有按鍵輸入才執行下面操作

{ key=getch( );

if (key==224) //值為224表示按下了方向鍵,下面要再次獲取鍵值

{ key=getch( );

if(key==72&&dir!=2)dir=1; //72表示按下了向上方向鍵

if(key==80&&dir!=1)dir=2; //80為向下

if(key==75&&dir!=4)dir=3; //75為向左

if(key==77&&dir!=3)dir=4; //77為向右

}

if (key==32)

{ while(1) if((key=getch( ))==32) break; } //32為空格鍵,這兒用來暫停

}

if (Flag==0) //如沒吃食物,才執行下面操作擦掉蛇尾

{ gtxy(snk.x[snk.len-1],snk.y[snk.len-1]); printf(" "); }

int i;

for (i = snk.len - 1; i > 0; i--) //從蛇尾起每節存儲前一節坐標值(蛇頭除外)

{ snk.x[i]=snk.x[i-1]; snk.y[i]=snk.y[i-1]; }

switch (dir) //判斷蛇頭該往哪個方向移動,並獲取最新坐標值

{ case 1: snk.y[0]--; break; //dir=1要向上移動

case 2: snk.y[0]++; break; //dir=2要向下移動

case 3: snk.x[0]-=2; break; //dir=3要向左移動

case 4: snk.x[0]+=2; break; //dir=4要向右移動

}

setColor(9, 0);

gtxy(snk.x[0], snk.y[0]); printf("■"); //列印蛇頭

if (snk.x[0] == fod.x && snk.y[0] == fod.y) //如吃到食物則執行以下操作

{ printf("07"); snk.len++; score += 100; snk.speed -= 5; Flag = 1; } //007是響鈴

else Flag = 0; //沒吃到食物Flag的值為0

if(snk.speed<150) snk.speed= snk.speed+5; //作弊碼,不讓速度無限加快

}

void putFod( ) //投放食物

{ if (Flag == 1) //如吃到食物才執行以下操作,生成另一個食物

{ while (1)

{ int i,n= 1;

srand((unsigned)time(NULL)); //初始化隨機數發生器srand( )

fod.x = rand( ) % (W - 4) + 2; //產生在游戲框范圍內的一個x坐標值

fod.y = rand( ) % (H - 2) + 1; //產生在游戲框范圍內的一個y坐標值

for (i = 0; i < snk.len; i++) //隨機生成的食物不能在蛇的身體上

{ if (fod.x == snk.x[i] &&fod.y == snk.y[i]) { n= 0; break;} }

if (n && fod.x % 2 == 0) break; //n不為0且橫坐標為偶數,則食物坐標取值成功

}

setColor(12, 0);

gtxy(fod.x, fod.y); printf("●"); //游標到取得的坐標處列印食物

}

return;

}

int Over( ) //判斷游戲是否結束的函數

{ int i;

setColor(7, 0);

gtxy(2,H+1); printf(「暫停鍵:space.」); //以下列印一些其它信息

gtxy(2,H+2); printf(「游戲得分:%d」,score);

if (snk.x[0] == 0 || snk.x[0] == W) return 1; //蛇頭觸碰左右邊界

if (snk.y[0] == 0 || snk.y[0] == H) return 1; //蛇頭觸碰上下邊界

for (i = 1; i < snk.len; i++)

{ if (snk.x[0] == snk.x[i] && snk.y[0] == snk.y[i]) return 1; } //蛇頭觸碰自身

return 0; //沒碰到邊界及自身時就返回0

}

void setColor(unsigned short ForeColor = 7, unsigned short BackGroundColor = 0)

{ HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute( handle, ForeColor + BackGroundColor * 0x10 );

} //用來設定顏色的函數

Ⅲ 用C語言能編寫游戲程序嗎

C語言不適合用於寫網頁,雖然可以用C語言寫CGI程序,但是這種方法現在已經被PHP/ASP/JSP等動態頁面技術取代,所以並不常用。

Ⅳ C語言編寫小游戲

如果以後你的主攻方向不是C語言,
那我建議你不要嘗試用C寫游戲, 頂多也就看看那些源碼.
用C寫游戲, 哪怕是很簡單的一個游戲也是很麻煩的, 現在的C大部分人都只是把它作為了一個編程入門的語言, 真正想搞嵌入式, 搞驅動開發之類的底層才會真正深入...
如果你要向那方面發展, 那你就繼續, 如果不是, 那還是看看源碼然後轉向其他高級語言吧...

Ⅳ 能不能介紹點C語言編程的小游戲,例如貪吃蛇,。。好玩點的。要有代碼,謝謝了

可以學寫「俄羅斯方塊」代碼:

#include <stdio.h>

#include <conio.h>

#include <time.h>

#include <windows.h>

#define ZL 4 //坐標增量, 不使游戲窗口靠邊

#define W 36 //游戲窗口的寬度

#define H 20 //游戲窗口的高度

int i,j,Ta,Tb,Tc; // Ta,Tb,Tc用於記住和轉換方塊變數的值

int a[60][60]={0}; //標記游戲屏幕各坐標點:0,1,2分別為空、方塊、邊框

int b[4]; //標記4個"口"方塊:1有,0無,類似開關

int x,y, level,score,speed; //方塊中心位置的x,y坐標,游戲等級、得分和游戲速度

int flag,next; //當前要操作的方塊類型序號,下一個方塊類型序號

void gtxy(int m, int n); //以下聲明要用到的自編函數

void setColor(unsigned short p, unsigned short q); //設定顯示顏色

void gflag( ); //獲得下一方塊類型的序號

void csh( ); //初始化界面

void start( ); //開始部分

void prfk ( ); //列印方塊

void clfk( ); //清除方塊

void mkfk( ); //製作方塊

void keyD( ); //按鍵操作

int ifmov( ); //判斷能否移動

void clHA( ); //清除滿行的方塊

void clNEXT( ); //清除邊框外的NEXT方塊

int main( )

{ csh( );

while(1)

{ start( );

while(1)

{ setColor(5, 0);

prfk( ); Sleep(speed); clfk( );

Tb=x;Tc=flag; //臨存當前x坐標和序號,以備撤銷操作

keyD( );

y++; //方塊向下移動

if (ifmov( )==0) { y--; setColor(2, 0);prfk( ); clHA( ); break;} //不可動時的操作

}

for(i=y-2;i<y+2;i++){ if (i==ZL) { j=0; } } //方塊觸到框頂

if (j==0) { system("cls");gtxy(10,10); setColor(6, 0);

printf("游戲結束!"); getch(); break; }

clNEXT( );

}

return 0;

}

void gtxy(int m, int n) //控制游標移動

{COORD pos; //定義變數

pos.X = m; //橫坐標

pos.Y = n; //縱坐標

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); //獲得顯示器句柄

}

void setColor(unsigned short ForeColor = 7, unsigned short BackGroundColor = 0)

{ HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(handle, ForeColor + BackGroundColor * 0x10);

}

void csh( ) //初始化界面

{gtxy(ZL+W/2-5,ZL-2); setColor(10, 0); printf("俄羅斯方塊"); //列印游戲名稱

gtxy(ZL+W+3,ZL+7); setColor(5, 0);printf("******* NEXT:"); //列印菜單信息

gtxy(ZL+W+3,ZL+13); setColor(5, 0);printf("************");

gtxy(ZL+W+3,ZL+15); setColor(9, 0);printf("Esc :退出遊戲");

gtxy(ZL+W+3,ZL+17); setColor(9, 0);printf("↑鍵:變體");

gtxy(ZL+W+3,ZL+19); setColor(9, 0);printf("空格:暫停游戲");

gtxy(ZL,ZL); setColor(2, 0); printf("╔"); gtxy(ZL+W-2,ZL); printf("╗"); //列印框角

gtxy(ZL,ZL+H); printf("╚"); gtxy(ZL+W-2,ZL+H); printf("╝");

a[ZL][ZL+H]=2; a[ZL+W-2][ZL+H]=2; //記住有圖案

for(i=2;i<W-2;i+=2) {gtxy(ZL+i,ZL); printf("═"); } //列印上橫框

for(i=2;i<W-2;i+=2) {gtxy(ZL+i,ZL+H); printf("═"); a[ZL+i][ZL+H]=2; } //列印下橫框有圖案

for(i=1;i<H;i++) { gtxy(ZL,ZL+i); printf("║"); a[ZL][ZL+i]=2; } //列印左豎框記住有圖案

for(i=1;i<H;i++) {gtxy(ZL+W-2,ZL+i); printf("║"); a[ZL+W-2][ZL+i]=2; } //列印右豎框有圖案

CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下是隱藏游標的設置

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

level=1; score=0; speed=400;

gflag( ); flag=next; //獲得一個當前方塊序號

}

void gflag( ) //獲得下一個方塊類型的序號

{ srand((unsigned)time(NULL)); next = rand()%19+1; }

void start( ) //開始部分

{ gflag( ); Ta=flag; flag=next; //保存當前方塊序號,將下一方塊序號臨時操作

x=ZL+W+6; y=ZL+10; setColor(5, 0); prfk( ); //給x,y賦值,在框外列印出下一方塊

flag=Ta; x=ZL+W/2; y=ZL-1; //取回當前方塊序號,並給x,y賦值

}

void prfk ( ) //列印俄羅斯方塊

{ for(i=0;i<4;i++) {b[i]=1; } //數組b[4]每個元素的值都為1

mkfk ( ); //製作俄羅斯方塊

for( i= x-2; i<=x+4; i+=2 ) //列印方塊

{ for(j=y-2;j<= y+1;j++) { if( a[i][j]==1 && j>ZL ){ gtxy(i,j); printf("□"); } } }

gtxy(ZL+W+3,ZL+1); setColor(9, 0); printf("level : %d",level); //以下列印菜單信息

gtxy(ZL+W+3,ZL+3); setColor(9, 0); printf("score : %d",score);

gtxy(ZL+W+3,ZL+5); setColor(9, 0); printf("speed : %d",speed);

}

void clfk( ) //清除俄羅斯方塊

{ for(i=0;i<4;i++) { b[i]=0; } //數組b[4]每個元素的值都為0

mkfk ( ); //製作俄羅斯方塊

for( i=x-2; i<=x+4; i+=2 ) //清除方塊

{ for(j=y-2;j<=y+1;j++){ if( a[i][j]==0 && j>ZL ){ gtxy(i,j); printf(" "); } } }

}

void mkfk( ) //製作俄羅斯方塊

{ a[x][ y]=b[0]; //方塊中心位置狀態: 1-有,0-無

switch(flag) //共6大類,19種小類型

{ case 1: { a[x][y-1]=b[1]; a[x+2][y-1]=b[2]; a[x+2][y]=b[3]; break; } //田字方塊

case 2: { a[x-2][y]=b[1]; a[x+2][y]=b[2]; a[x+4][y]=b[3]; break; } //直線方塊:----

case 3: { a[x][y-1]=b[1]; a[x][y-2]=b[2]; a[x][y+1]=b[3]; break; } //直線方塊: |

case 4: { a[x-2][y]=b[1]; a[x+2][y]=b[2]; a[x][y+1]=b[3]; break; } //T字方塊

case 5: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x-2][y]=b[3]; break; } //T字順時針轉90度

case 6: { a[x][y-1]=b[1]; a[x-2][y]=b[2]; a[x+2][y]=b[3]; break; } //T字順轉180度

case 7: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x+2][y]=b[3]; break; } //T字順轉270度

case 8: { a[x][y+1]=b[1]; a[x-2][y]=b[2]; a[x+2][y+1]=b[3]; break; } //Z字方塊

case 9: { a[x][y-1]=b[1]; a[x-2][y]=b[2]; a[x-2][y+1]=b[3]; break; } //Z字順轉90度

case 10: { a[x][y-1]=b[1]; a[x-2][y-1]=b[2]; a[x+2][y]=b[3]; break; } //Z字順轉180度

case 11: { a[x][y+1]=b[1]; a[x+2][y-1]=b[2]; a[x+2][ y]=b[3]; break; } //Z字順轉270度

case 12: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x-2][y-1]=b[3]; break; } //7字方塊

case 13: {a[x-2][y]=b[1]; a[x+2][y-1]=b[2]; a[x+2][y]=b[3]; break; } //7字順轉90度

case 14: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x+2][y+1]=b[3]; break; } //7字順轉180度

case 15: { a[x-2][y]=b[1]; a[x-2][y+1]=b[2]; a[x+2][y]=b[3]; break; } //7字順轉270度

case 16: { a[x][y+1]=b[1]; a[x][y-1]=b[2]; a[x+2][y-1]=b[3]; break; } //倒7字方塊

case 17: { a[x-2][y]=b[1]; a[x+2][y+1]=b[2]; a[x+2][y]=b[3]; break; } //倒7字順轉90度

case 18: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x-2][y+1]=b[3]; break; } //倒7字順轉180度

case 19: { a[x-2][y]=b[1]; a[x-2][y-1]=b[2]; a[x+2][y]=b[3]; break; } //倒7字順轉270度

}

}

void keyD( ) //按鍵操作

{ if (kbhit( ))

{ int key;

key=getch();

if (key==224)

{ key=getch();

if (key==75) { x-=2; } //按下左方向鍵,中心橫坐標減2

if (key==77) { x+=2; } //按下右方向鍵,中心橫坐標加2

if (key==72) //按下向上方向鍵,方塊變體

{ if (flag>=2 && flag<=3 ) { flag++; flag%=2; flag+=2; }

if ( flag>=4 && flag<=7 ) { flag++; flag%=4; flag+=4; }

if (flag>=8 && flag<=11 ) { flag++; flag%=4; flag+=8; }

if (flag>=12 && flag<=15 ) { flag++; flag%=4; flag+=12; }

if ( flag>=16 && flag<=19 ) { flag++; flag%=4; flag+=16; } }

}

if (key==32) //按空格鍵,暫停

{ setColor(5, 0);prfk( ); while(1) { if (getch( )==32) { clfk( );break;} } } //再按空格鍵,繼續游戲

if (ifmov( )==0) { x=Tb; flag=Tc; } //如果不可動,撤銷上面操作

else { setColor(5, 0); prfk( ); Sleep(speed); clfk( ); Tb=x;Tc=flag;} //如果可動,執行操作

}

}

int ifmov( ) //判斷能否移動

{ if (a[x][y]!=0) { return 0; } //方塊中心處有圖案返回0,不可移動

else{ if ( (flag==1 && ( a[x][ y-1]==0 && a[x+2][y-1]==0 && a[x+2][y]==0 ) ) || //田字方塊

(flag==2 && ( a[x-2][y]==0 && a[x+2][y]==0 && a[x+4][y]==0 ) ) || //以下為其它方塊

(flag==3 && ( a[x][y-1]==0 && a[x][y-2]==0 && a[x][y+1]==0 ) ) ||

(flag==4 && ( a[x-2][y]==0 && a[x+2][y]==0 && a[x][y+1]==0 ) ) ||

(flag==5 && ( a[x][y-1]==0 && a[x][y+1]==0 && a[x-2][y]==0 ) ) ||

(flag==6 && ( a[x][ y-1]==0 && a[x-2][y]==0 && a[x+2][y]==0 ) ) ||

(flag==7 && ( a[x][y-1]==0 && a[x][y+1]==0 && a[x+2][y]==0 ) ) ||

(flag==8 && ( a[x][y+1]==0 && a[x-2][y]==0 && a[x+2][y+1]==0 ) ) ||

(flag==9 && ( a[x][y-1]==0 && a[x-2][y]==0 && a[x-2][y+1]==0 ) ) ||

(flag==10 && ( a[x][y-1]==0 && a[x-2][y-1]==0 && a[x+2][y]==0 ) ) ||

(flag==11 && ( a[x][y+1]==0 && a[x+2][y-1]==0 && a[x+2][y]==0 ) ) ||

(flag==12 && ( a[x][y-1]==0 && a[x][y+1]==0 && a[x-2][y-1]==0 ) ) ||

( flag==13 && ( a[x-2][y]==0 && a[x+2][y-1]==0 && a[x+2][y]==0 ) ) ||

( flag==14 && ( a[x][y-1]==0 && a[x][y+1]==0 && a[x+2][y+1]==0 ) ) ||

(flag==15 && ( a[x-2][y]==0 && a[x-2][y+1]==0 && a[x+2][y]==0 ) ) ||

(flag==16 && ( a[x][y+1]==0 && a[x][y-1]==0 && a[x+2][y-1]==0 ) ) ||

( flag==17 && ( a[x-2][y]==0 && a[x+2][y+1]==0 && a[x+2][y]==0 ) ) ||

(flag==18 && ( a[x][y-1]==0 &&a[x][y+1]==0 && a[x-2][y+1]==0 ) ) ||

(flag==19 && ( a[x-2][y]==0 && a[x-2][y-1]==0 && a[x+2][y]==0 ) ) ) { return 1; }

}

return 0; //其它情況返回0

}

void clNEXT( ) //清除邊框外的NEXT方塊

{ flag = next; x=ZL+W+6; y=ZL+10; clfk( ); }

void clHA( ) //清除滿行的方塊

{ int k, Hang=0; //k是某行方塊個數, Hang是刪除的方塊行數

for(j=ZL+H-1;j>=ZL+1;j--) //當某行有W/2-2個方塊時,則為滿行

{ k=0; for(i=ZL+2;i<ZL+W-2;i+=2)

{ if (a[i][j]==1) //豎坐標從下往上,橫坐標由左至右依次判斷是否滿行

{ k++; //下面將操作刪除行

if (k==W/2-2) { for(k=ZL+2;k<ZL+W-2;k+=2) { a[k][j]=0; gtxy(k,j); printf(" "); Sleep(1); }

for(k=j-1;k>ZL;k--)

{ for(i=ZL+2;i<ZL+W-2;i+=2) //已刪行數的上面有方塊,先清除再全部下移一行

{ if(a[i][k]==1) { a[i][k]=0; gtxy(i,k); printf(" ");a[i][k+1]=1; gtxy(i,k+1);

setColor(2, 0); printf("□"); } }

}

j++; //方塊下移後,重新判斷刪除行是否滿行

Hang++; //記錄刪除方塊的行數

}

}

}

}

score+=100*Hang; //每刪除一行,得100分

if ( Hang>0 && (score%500==0 || score/500> level-1 ) ) //滿500分速度加快,升一級

{ speed-=20; level++; if(speed<200)speed+=20;}

}

Ⅵ 用C語言編漢諾塔圖形游戲

發到你郵箱了,注意查收,可以給我分

Ⅶ c語言游戲編程

C++吧,先研究一下D3D驅動模塊吧。如果就你一個人,以你現在提出問題的水平,估計夠嗆,兩年吧,或許更長,看你有沒有毅力了

Ⅷ c語言編程游戲的問題..

用文本方式也可以玩,程序相對簡單,就是玩起來麻煩一點

1。數組10x10,刪掉的填-1,空格填0,小艇填1,驅逐填2,巡洋填3,航母填4 ,中間狀態,如果是艦,數字加10(11到14)
row = rand()%10;
col = rand()%10;
可以判斷是不是被刪掉了,如果刪掉了,繼續找隨機值

2。LINUX下面可以用gtk、qt等編寫圖形界面程序,看看相關文檔,慢慢摸索

3。使用二進制文件存儲兩個數組,以及下一步輪到誰等
二進制整體寫入/讀出,很方便的

有個疑問:
假如航母,
需要連續四次剛好都選中它的四個格子才能刪掉它?
還是只要有四次選中它的不同的四個格子就能刪掉它?

Ⅸ 求各種C語言編程小游戲,越多越好,多了會有加分

C語言數字記憶小游戲,望採納

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<time.h>
#defineTURE1
#defineFALSE0

voidmain()

{
charanother_name='Y';
charanother_game='Y';

intcorrect='TRUE';
intcounter=0;
intsequence_length=0;
inti=0;
longintseed=0;
intnumber=0;
longintnow=0;
longtime_taken=0;
intclock_per_sec;

printf(" ---------------------------------記憶小游戲-------------------------------------------- ");
printf("請牢記屏幕上出現的沒一個數字,並在規定時間內輸入您記下的數字。 ");
printf("回車開始游戲。 ");

scanf("%c",&another_game);

do
{
correct='TRUE';
counter=0;
sequence_length=2;
time_taken=clock();

while(correct)
{
sequence_length+=(counter++%3==0);
seed=time(NULL);
now=clock();
srand((int)seed);
for(i=0;i<=sequence_length;i++)
printf("%d",rand()%10);
for(;clock()-now<clock_per_sec;);
printf(" ");
for(i=0;i<=sequence_length;i++)
printf("");
if(counter==1)
printf(" 輸入您記住的數字,以空格隔開。 ");
else
printf(" ");
srand((int)seed);
for(i=0;i<=sequence_length;i++)
{
scanf("%d",&number);
if(number!=rand()%10)
{
correct=FALSE;
break;

}

}
printf("%s ",correct?"正確!":"錯誤!");

}
time_taken=(clock()-time_taken)/clock_per_sec;
printf(" 您的成績是:%d",--counter*100/time_taken);
fflush(stdin);
printf(" 是否繼續游戲?(Y/N)? ");
scanf("%c",&another_game);

}
while(another_game=='y'||another_game=='Y');
}

Ⅹ 用C語言編寫的小游戲代碼是什麼

/*貪吃蛇*/

#include<stdio.h>

#include<time.h>

#include<conio.h>

#include<stdlib.h>

int head=3 ,tail=0;

int main()

{

int i,j,k=0;

int zuobiao[2][80];

long start;

int direction=77;

int gamespeed;

int timeover;

int change(char qipan[20][80],

int zuobiao[2][80],

char direction);

zuobiao[0][tail]=1;

zuobiao[1][tail]=1;

zuobiao[0][1]=1;

zuobiao[1][1]=2;zuobiao[0

[2]=1;

zuobiao[1][2]=3;

zuobiao[0][head]=1;

zuobiao[1][head]=4;

/*處理棋盤*/

char qipan[20][80];

//定義棋盤

for(i=0;i<20;i++)

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

qipan[i][j]=' ';//初始化棋盤

for(i=0;i<80;i++)

qipan[0][i]='_';

for(i=0;i<20;i++)

qipan[i][0]='|';

for(i=0;i<20;i++)

qipan[i][79]='|';

for(i=0;i<80;i++)

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。