當前位置:首頁 » 軟體設計 » c語言設計游戲

c語言設計游戲

發布時間: 2021-02-12 05:18:53

1. c語言怎樣設計游戲

1. 輸出1+1 = ? 輸入2,則輸出正確,輸入其他則顯示錯誤
2. 24點游戲,輸出4個數,輸入一行表達式,程序內部計算表達式的值(比較費勁),若=24則返回勝利,否則失敗
3. 五子棋(無AI,否則難),黑白方輪流輸入坐標,每次輸入完坐標都重新輸出一次棋盤上所有棋子,具體方式就是把存儲棋子的矩陣挨個輸出,無棋輸出空格,黑輸出*,白輸出o,循環直到判斷游戲是否結束的函數返回值為真,即有5子相連才結束。
4. 貪食蛇。這個需要查閱有關**的資料:線程(或計時器),響應鍵盤按鍵,隨機數等等。蛇每隔單位時間向當前方向前進一步,然後刷新(也就是把畫面重新輸出一遍),在隨機位置產生食物,蛇的尾巴經過食物(即已經消化)後加長一段。按方向鍵時改變記錄當前方向變數的值。加入判斷死亡的機制。
這個用控制台(就是和DOS似的,只有press any key to continue之類文字的界面)也可以實現,但是相關資料較少很難找,選擇圖形編程(windows下常用的軟體都是這樣,有窗口的)資料更多一些,如果你是在windows上編,就查C語言windows api,剛開始編時不會很方便。由易到難地嘗試吧,不必急於用圖形編程,控制台也是可以編出好游戲的,這是基礎。

2. 求C語言 小游戲設計

我寫了個貪吃蛇,有單人版,也有雙人版

這是單人版:

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<malloc.h>
intfood[2];
intfeng;
intdengji=3;
intspeed=150;
structsnake
{
intx,y,life;
structsnake*next;
};
voidwelcome()
{
system("MODEcon:COLS=79LINES=24");
system("color8F");
printf("歡迎來到貪吃蛇的世界 ");
printf("ByHB ");
printf("↑↓←→ ");
printf("上下左右 ");
printf("食物為:★ ");
printf("按空格暫停 ");
printf("按Z(大寫)切換等級 ");
printf("等級從5級到1級是從高到低 ");
printf("注意:每次增加的分數=當前等級*10 ");
printf("按任意鍵開始游戲! ");
getch();
system("cls");
}
voidgotoxy(intx,inty)
{
COORDcoord;
coord.X=x;coord.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
voidmakefood(structsnake*p)
{
intfx;
structsnake*p1=p;
srand(time(NULL));
fx=rand()%77+2;
if(fx%2==0)
{
fx--;
}
food[0]=fx;
food[1]=rand()%22+1;
while(p!=NULL)
{
if(p->x==food[0]&&p->y==food[1])
{
makefood(p1);
}
p=p->next;
}
}
voiddrawmap(structsnake*p)
{
system("cls");
printf("你的分數為:%d分當前等級為:%d級",feng,dengji);
gotoxy(p->x,p->y);
printf("◇");
p=p->next;
while(p!=NULL)
{
gotoxy(p->x,p->y);
printf("※");
p=p->next;
}
gotoxy(food[0],food[1]);
printf("★");
}
structsnake*mvsnake(structsnake*p,intz)
{
structsnake*p2,*p3;
intx,y;
x=p->x;
y=p->y;
switch(z)
{
case1:
{
x-=2;
break;
}
case2:
{
x+=2;
break;
}
case3:
{
y--;
break;
}
case4:
{
y++;
break;
}
}
p2=(structsnake*)malloc(sizeof(structsnake));
p2->x=x;
p2->y=y;
p2->life=1;
p2->next=p;

if(p2->x>=79||p2->y>=24||p2->x<0||p2->y<1)
{
p2->life=0;
}
p3=p;
while(p3!=NULL)
{
if(p2->x==p3->x&&p2->y==p3->y)
{
p2->life=0;
}
p3=p3->next;
}
if(p2->x==food[0]&&p2->y==food[1])
{
feng+=dengji*10;
makefood(p2);
}
else
{
while(p->next->next!=NULL)
{
p=p->next;
}
p3=p->next;
p->next=NULL;
free(p3);
}
returnp2;
}
intscan(intz)
{
charch;
if(kbhit()){
ch=getch();
switch(ch)
{

case75:if(z!=2)z=1;break;
case77:if(z!=1)z=2;break;
case72:if(z!=4)z=3;break;
case80:if(z!=3)z=4;break;
case32:z=5;break;
case'Z':speed-=50;
dengji++;
if(speed==0){speed=250;dengji=1;}
break;
default:break;
}
if(ch==27)z=27;
fflush(stdin);
}
returnz;
}
intmain(intargc,char*argv[])
{
welcome();
loop:system("cls");
structsnake*snakenext;
structsnake*snk=(structsnake*)malloc(sizeof(structsnake));
snk->x=15;
snk->y=15;
snk->life=1;
snk->next=(structsnake*)malloc(sizeof(structsnake));
snk->next->x=14;
snk->next->y=snk->y;
snk->next->next=(structsnake*)malloc(sizeof(structsnake));
snk->next->next->x=13;
snk->next->next->y=snk->y;
snk->next->next->next=NULL;
intz=2;

makefood(snk);
while(1)
{
inttemp_z=z;
z=scan(z);
if(z==27)exit(0);
if(z==5)
{
gotoxy(30,15);
printf("暫停");
getch();z=temp_z;
}
snk=mvsnake(snk,z);
if(snk->life==0)break;
drawmap(snk);
Sleep(speed);
}
system("cls");
gotoxy(25,11);
printf("GAMEOVER,你的最終分數為:%d分 ",feng);
gotoxy(25,12);
printf("按空格重新開始,按其他鍵結束! ");
while(snk!=NULL)
{
snakenext=snk->next;
free(snk);
snk=snakenext;
}
Sleep(500);
charcha;
cha=getch();
if(cha==32)
{
gotoloop;
}
return0;
}

這是雙人版:

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<malloc.h>
intfood[2];
intfeng1,feng2;
intspeed=150;
intdengji=3;
intchi;
structsnake
{
intx,y,life;
structsnake*next;
};
voidwelcome()
{
system("MODEcon:COLS=79LINES=24");
system("color8F");
printf("歡迎來到雙人貪吃蛇游戲 ");
printf("ByHB ");
printf("玩家1:□□◇ ");
printf("WSAD(大寫) ");
printf("上下左右 ");
printf("玩家2:■■◆ ");
printf("↑↓←→ ");
printf("上下左右 ");
printf("食物為:★ ");
printf("按空格暫停 ");
printf("按Z(大寫)切換等級 ");
printf("等級從5級到1級是從高到低 ");
printf("注意:每次增加的分數=當前等級*10 ");
printf("按任意鍵開始游戲! ");
getch();
system("cls");
}
voidgotoxy(intx,inty)
{
COORDcoord;
coord.X=x;coord.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
voidmakefood(structsnake*p,structsnake*p2)
{
intfx;
structsnake*p1=p;
structsnake*p3=p2;
srand(time(NULL));
fx=rand()%77+2;
if(fx%2==0)
{
fx--;
}
food[0]=fx;
food[1]=rand()%22+1;
while(p!=NULL&&p2!=NULL)
{
if((p->x==food[0]&&p->y==food[1])||(p2->x==food[0]&&p2->y==food[1]))
{
makefood(p1,p3);
}
p=p->next;
p2=p2->next;
}
}
voiddrawmap(structsnake*p,structsnake*p2)
{
system("cls");
printf("玩家1的分數為:%d分當前等級為:%d級玩家2的分數為:%d分",feng1,dengji,feng2);
gotoxy(p->x,p->y);
printf("◇");
p=p->next;
gotoxy(p2->x,p2->y);
printf("◆");
p2=p2->next;
while(p!=NULL)
{
gotoxy(p->x,p->y);
printf("□");
p=p->next;
}
while(p2!=NULL)
{
gotoxy(p2->x,p2->y);
printf("■");
p2=p2->next;
}
gotoxy(food[0],food[1]);
printf("★");
}
structsnake*mvsnake(structsnake*p,structsnake*p4,intz,inti)
{
structsnake*p2,*p3;
intx,y;
x=p->x;
y=p->y;
switch(z)
{
case1:
{
x-=2;
break;
}
case2:
{
x+=2;
break;
}
case3:
{
y--;
break;
}
case4:
{
y++;
break;
}
}
p2=(structsnake*)malloc(sizeof(structsnake));
p2->x=x;
p2->y=y;
p2->life=1;
p2->next=p;

if(p2->x>=79||p2->y>=24||p2->x<0||p2->y<1)
{
p2->life=0;
}
p3=p;
while(p3!=NULL)
{
if(p2->x==p3->x&&p2->y==p3->y)
{
p2->life=0;
}
p3=p3->next;
}

if(p2->x==food[0]&&p2->y==food[1])
{
if(i==1)
{
feng1+=dengji*10;
}
elseif(i==2)
{
feng2+=dengji*10;
}
makefood(p2,p4);
}
else
{
while(p->next->next!=NULL)
{
p=p->next;
}
p3=p->next;
p->next=NULL;
free(p3);
}
returnp2;
}
intscan(intz)
{
charch;
if(kbhit()){
ch=getch();
switch(ch)
{

case75:
case'A':if(z!=2)z=1;break;
case77:
case'D':if(z!=1)z=2;break;
case72:
case'W':if(z!=4)z=3;break;
case80:
case'S':if(z!=3)z=4;break;
case32:z=5;break;
case'Z':speed-=50;
dengji++;
if(speed==0){speed=250;dengji=1;}
break;
default:break;
}
if(ch==27)z=27;
}
returnz;
}
intmain(intargc,char*argv[])
{
welcome();
loop:system("cls");
structsnake*snakenext;
structsnake*snk=(structsnake*)malloc(sizeof(structsnake));
snk->x=15;
snk->y=15;
snk->life=1;
snk->next=(structsnake*)malloc(sizeof(structsnake));
snk->next->x=14;
snk->next->y=snk->y;
snk->next->next=(structsnake*)malloc(sizeof(structsnake));
snk->next->next->x=13;
snk->next->next->y=snk->y;
snk->next->next->next=NULL;
structsnake*snake2next;
structsnake*snk2=(structsnake*)malloc(sizeof(structsnake));
snk2->x=17;
snk2->y=10;
snk2->life=1;
snk2->next=(structsnake*)malloc(sizeof(structsnake));
snk2->next->x=16;
snk2->next->y=snk2->y;
snk2->next->next=(structsnake*)malloc(sizeof(structsnake));
snk2->next->next->x=15;
snk2->next->next->y=snk2->y;
snk2->next->next->next=NULL;
intz=2;
intk=2;
makefood(snk,snk2);

while(1)
{
inttemp_z=z;
z=scan(z);
k=scan(k);
if(z==27)exit(0);
if(z==5)
{
gotoxy(30,15);
printf("暫停");
getch();z=temp_z;
}
snk=mvsnake(snk,snk2,z,1);
snk2=mvsnake(snk2,snk,k,2);
if(snk->life==0||snk2->life==0)break;
drawmap(snk,snk2);
Sleep(speed);
}
system("cls");
gotoxy(15,11);
printf("GAMEOVER,玩家1的分數為:%d分,玩家2的分數為:%d分 ",feng1,feng2);
gotoxy(33,12);
if(feng1>feng2)
{
printf("玩家1贏了! ");
}
elseif(feng2>feng1)
{
printf("玩家2贏了! ");
}
else
{
printf("你們打成了平手! ");
}
gotoxy(25,13);
printf("按空格重新開始,按其他鍵結束! ");
while(snk!=NULL)
{
snakenext=snk->next;
free(snk);
snk=snakenext;
}
while(snk2!=NULL)
{
snake2next=snk2->next;
free(snk2);
snk2=snake2next;
}
Sleep(500);
charcha;
cha=getch();
if(cha==32)
{
gotoloop;
}
return0;
}

3. c語言程序設計 游戲設計

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int input,select0 = 10;
int data1,data,score=50;
void init()
{
printf("**************************************\n");
printf(" 歡迎來到猜數字游戲 \n");
printf("**************************************\n");
}
void game_init()
{
printf("[1]--開始游戲\n");
printf("[2]--游戲幫助\n");
printf("[3]--難度選擇\n");
printf("[4]--查看得分\n");
printf("[5]--退出遊戲\n");
}
void game_start()
{
srand((unsigned)time(NULL));
data1 = rand()%select0;
printf("請輸入一個數字\n");
while(1)
{
scanf("%d",&data);
if(data == data1)
{
printf("猜對了,分數加1\n");
score+=1;
break;
}
else
{
if(data > data1)
printf("太大了,分數減1,請重新輸入!\n");
else if(data < data1)
printf("太小了,分數減1,請重新輸入!\n");
score-=1;
}
}
}
void game_help()
{

}
void game_select()
{
printf("難度選擇,請輸入一個整數,這個數的數值越大,難度越高!\n");
scanf("%d",&select0);
}
void game_score()
{
printf("當前分數為:%d\n",score);
}
game()
{
scanf("%d",&input);
switch(input)
{
case 1:game_start();break;
case 2:game_help();break;
case 3:game_select();break;
case 4:game_score();break;
case 5:exit(0);
default:printf("沒有該選項!\n");break;
}
}
int main()
{
int i;
init();
while(1)
{
game_init();
game();
}
return 0;
}

自己作了一點修改,我是在linux環境下編譯的,可以運行成功!還存在bug,不過只要提示輸入,不會出現!

4. C語言編寫小游戲

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

5. 如何用C語言製作一個小游戲

這種小游戲其實就是一個大型的while循環。
初始化之後開始游戲,掉入while循環,在while循環裡面的每一回回合,得到玩答家的滑鼠和鍵盤輸入,通過調用函數更新畫面,輸出畫面,直至玩家選擇退出遊戲,結束while循環,釋放儲存空間,退出遊戲。
想編小游戲的話,可以看看清華大學出版社的《C語言課程設計與游戲開發實踐教程》,基於easyX開發小游戲。

6. 怎樣用C語言設計游戲程序

我不完全同意一樓的觀點,雖然我最早也是用C++編的,但並不認為C就編不了。3D就更不用說了,現在學就是空中樓閣。編游戲可以只是個興趣,不一定以後就從游戲業。
我覺得游戲的本質就是和玩家的互動,也就是輸入輸出。舉4個例子,由易到難。
1. 輸出1+1 = ? 輸入2,則輸出正確,輸入其他則顯示錯誤
2. 24點游戲,輸出4個數,輸入一行表達式,程序內部計算表達式的值(比較費勁),若=24則返回勝利,否則失敗
3. 五子棋(無AI,否則難),黑白方輪流輸入坐標,每次輸入完坐標都重新輸出一次棋盤上所有棋子,具體方式就是把存儲棋子的矩陣挨個輸出,無棋輸出空格,黑輸出*,白輸出o,循環直到判斷游戲是否結束的函數返回值為真,即有5子相連才結束。
4. 貪食蛇。這個需要查閱有關**的資料:線程(或計時器),響應鍵盤按鍵,隨機數等等。蛇每隔單位時間向當前方向前進一步,然後刷新(也就是把畫面重新輸出一遍),在隨機位置產生食物,蛇的尾巴經過食物(即已經消化)後加長一段。按方向鍵時改變記錄當前方向變數的值。加入判斷死亡的機制。
這個用控制台(就是和DOS似的,只有press any key to continue之類文字的界面)也可以實現,但是相關資料較少很難找,選擇圖形編程(windows下常用的軟體都是這樣,有窗口的)資料更多一些,如果你是在windows上編,就查C語言windows api,剛開始編時不會很方便。由易到難地嘗試吧,不必急於用圖形編程,控制台也是可以編出好游戲的,這是基礎。

7. 求c語言設計的小游戲

已發,連連看

8. 求一個用C語言編寫的小游戲代碼

/*也不知道你是什麼級別的,我是一個新手,剛接觸編程語言,以下是我自己變得一個小程序,在所有c語言的編譯器(vc++6.0、turbo…………)上都能運行,你還可以進一步改進。這是一個類似貪吃蛇的小游戲。祝你好運*/
/*貪吃蛇*/
#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++)
qipan[19][i]='_';
qipan[1][1]=qipan[1][2]=qipan[1][3]='*';//初始化蛇的位置
qipan[1][4]='#';
printf("This is a game of a SNAKE.\nGOOD LUCK TO YOU !\n");
printf("Input your game speed,please.(e.g.300)\n");
scanf("%d",&gamespeed);

while(direction!='q')
{
system("cls");
for(i=0;i<20;i++)//列印出棋盤
for(j=0;j<80;j++)
printf("%c",qipan[i][j]);
timeover=1;
start=clock();
while(!kbhit()&&(timeover=clock()-start<=gamespeed));
if(timeover)
{
getch();
direction=getch();
}
else
direction=direction;
if(!(direction==72||direction==80||direction==75||direction==77))
{
return 0;
system("cls");
printf("GAME OVER!\n");
}
if(!change(qipan,zuobiao,direction))
{
direction='q';
system("cls");
printf("GAME OVER!\n");
}
}
return 0;
}
int change(char qipan[20][80],int zuobiao[2][80],char direction)
{
int x,y;
if(direction==72)
x=zuobiao[0][head]-1;y=zuobiao[1][head];
if(direction==80)
x=zuobiao[0][head]+1;y=zuobiao[1][head];
if(direction==75)
x=zuobiao[0][head];y=zuobiao[0][head]-1;
if(direction==77)
x=zuobiao[0][head];y=zuobiao[1][head]+1;
if(x==0||x==18||y==78||y==0)
return 0;
if(qipan[x][y]!=' ')
return 0;
qipan[zuobiao[0][tail]][zuobiao[1][tail]]=' ';
tail=(tail+1)%80;
qipan[zuobiao[0][head]][zuobiao[1][head]]='*';
head=(head+1)%80;
zuobiao[0][head]=x;
zuobiao[1][head]=y;
qipan[zuobiao[0][head]][zuobiao[1][head]]='#';
return 1;
}

9. 怎樣用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 );

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

10. 如何用C語言做游戲開發

你錯了~ 理論上說,其他語言做到的c語言一定能夠做到~而且效率高得多,只不內過其他語言一句話容就能做到的,C語言可能要上百行代碼~ c語言時代,一個大軟體 動輒幾十萬行,幾百萬行代碼,其中出一個錯誤,是絕對令人抓狂的,所以有c++,java,。net 等應運而生~ linux 系統是純c語言寫的哦~ 也能有vista 那樣美的圖形用戶界面~ 發明c語言的人真的很了不起~ 從匯編的角度看C語言是垃圾,從C語言的角度看其他語言,同樣是垃圾~
其中也包括了懷舊的 MAX 3 界面(3DSMaxR3.cui)。當然如果你有足夠的時間和耐心,也可以自己設計...

熱點內容
美發店認證 發布:2021-03-16 21:43:38 瀏覽:443
物業糾紛原因 發布:2021-03-16 21:42:46 瀏覽:474
全國著名不孕不育醫院 發布:2021-03-16 21:42:24 瀏覽:679
知名明星確診 發布:2021-03-16 21:42:04 瀏覽:14
ipad大專有用嗎 發布:2021-03-16 21:40:58 瀏覽:670
公務員協議班值得嗎 發布:2021-03-16 21:40:00 瀏覽:21
知名書店品牌 發布:2021-03-16 21:39:09 瀏覽:949
q雷授權碼在哪裡買 發布:2021-03-16 21:38:44 瀏覽:852
圖書天貓轉讓 發布:2021-03-16 21:38:26 瀏覽:707
寶寶水杯品牌 發布:2021-03-16 21:35:56 瀏覽:837