① 用c語言能編寫游戲程序嗎

  1. C語言是可以用來編寫游戲程序的

  2. C語言的主要特點是面向過程,將實現的方法抽回象成一個演算法從而實現預想的功能答,游戲也可以看作是一個預先要實現的功能,可以通過模塊化思想來分塊實現游戲

  3. C語言其實是很強大的,只不過大部分人接觸的C語言都是比較初級的,沒有看到C語言的另一面,實際上,有的windows系統就是用C語言編寫的,而且還相當成功

② 如何使用C語言編寫簡單小游戲

C語言是計算機專業都要學習的一門基礎學科。一般來說,是比較枯燥的.那麼,我們能不能通過編一些小游戲來提高它的趣味性呢?這樣學習程序設計,就不會是一件艱苦 ,枯燥的事,它變得象電腦游戲一樣充滿好奇,富有樂趣。

例如2048這款游戲:

方法/步驟:

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<conio.h>

#include<windows.h>

#define SIZE 4

static int score=0;

void putn(int n[][SIZE]);

void getn(int n[][SIZE]);

int isempty(int n[][SIZE]);

int isfull(int n[][SIZE]);

void math(int n[][SIZE],char c);

void tow(int n[][SIZE]);

void toa(int n[][SIZE]);

void tos(int n[][SIZE]);

void tod(int n[][SIZE]);

  • //主函數

    int main()

    {

    int i,j;

    int n[SIZE][SIZE];

    char c=' ';

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

    {

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

    {

    n[i][j]=0;

    }

    }

    printf( "*********************** "

    " 2048(%dX%d) "

    " control:W/A/S/D "

    "press any key to begin "

    "*********************** ",SIZE,SIZE);

    getch();

    system("cls");

    //n[0][1]=2048;

    //n[0][3]=2048;

    while(1)

    {

    if(isempty(n))

    getn(n);

    putn(n);

    if(!isempty(n)&&isfull(n))

    break;

    sleep(200);

    c=getch();

    while(c!='w'&&c!='a'&&c!='s'&&c!='d')

    c=getch();

    math(n,c);

    system("cls");

    }

    printf(" Game Over! ",score);

    return 0;

    }

  • //函數

    void putn(int n[][SIZE])

    {

    int i,j;

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

    {

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

    printf("| ");

    printf("| ");

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

    {

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

    printf("| ");

    else

    printf("|%4d ",n[i][j]);

    }

    printf("| ");

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

    printf("|_____");

    printf("| ");

    }

    printf("score: %d",score);

    }

    void getn(int n[][SIZE])

    {

    int a,b;

    a=rand()%SIZE;

    b=rand()%SIZE;

    while(n[a][b]!=0)

    {

    a=rand()%SIZE;

    b=rand()%SIZE;

    }

    n[a][b]=2;

    }

    int isempty(int n[][SIZE])

    {

    int i,j,count=0;

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

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

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

    count++;

    return count;

    }

    int isfull(int n[][SIZE])

    {

    int i,j,count=0;

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

    {

    for(j=1;j<SIZE-1;j++)

    {

    if(n[i][j]==n[i][j+1]||n[i][j]==n[i][j-1])

    count++;

    }

    }

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

    {

    for(i=1;i<SIZE-1;i++)

    {

    if(n[i][j]==n[i+1][j]||n[i][j]==n[i-1][j])

    count++;

    }

    }

    return count>0?0:1;

    }

    void math(int n[][SIZE],char c)

    {

    switch(c)

    {

    case 'w':tow(n);break;

    case 'a':toa(n);break;

    case 's':tos(n);break;

    case 'd':tod(n);break;

    default :;

    }

    }

    void tow(int n[][SIZE])

    {

    int i,j,a;

    int m[SIZE];

    for(a=0;a<SIZE;a++)

    m[a]=0;

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

    {

    for(a=0;a<SIZE;a++)

    {

    for(i=0;i<SIZE-1;i++)

    {

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

    {

    n[i][j]=n[i+1][j];

    n[i+1][j]=0;

    }

    }

    }

    }

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

    {

    for(a=0,i=0;i<SIZE;i++)

    {

    if(n[i][j]!=n[i+1][j]&&n[i][j]!=0||n[i][j]==2048)

    {

    m[a++]=n[i][j];

    n[i][j]=0;

    }

    else if(n[i][j]==n[i+1][j])

    {

    m[a++]=n[i][j]+n[i+1][j];

    score+=m[a-1];

    n[i][j]=0,n[i+1][j]=0;

    }

    }

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

    {

    n[i][j]=m[i];

    m[i]=0;

    }

    }

    }

    void toa(int n[][SIZE])

    {

    int i,j,a;

    int m[SIZE];

    for(a=0;a<SIZE;a++)

    m[a]=0;

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

    {

    for(a=0;a<SIZE;a++)

    {

    for(j=0;j<SIZE-1;j++)

    {

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

    {

    n[i][j]=n[i][j+1];

    n[i][j+1]=0;

    }

    }

    }

    }

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

    {

    for(a=0,j=0;j<SIZE;j++)

    {

    if(n[i][j]!=n[i][j+1]&&n[i][j]!=0||n[i][j]==2048)

    {

    m[a++]=n[i][j];

    n[i][j]=0;

    }

    else if(n[i][j]==n[i][j+1])

    {

    m[a++]=n[i][j]+n[i][j+1];

    score+=m[a-1];

    n[i][j]=0,n[i][j+1]=0;

    }

    }

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

    {

    n[i][j]=m[j];

    m[j]=0;

    }

    }

    }

    void tos(int n[][SIZE])

    {

    int i,j,a;

    int m[SIZE];

    for(a=0;a<SIZE;a++)

    m[a]=0;

    for(j=SIZE-1;j>=0;j--)

    {

    for(a=SIZE-1;a>=0;a--)

    {

    for(i=SIZE-1;i>0;i--)

    {

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

    {

    n[i][j]=n[i-1][j];

    n[i-1][j]=0;

    }

    }

    }

    }

    for(j=SIZE-1;j>=0;j--)

    {

    for(a=SIZE-1,i=SIZE-1;i>=0;i--)

    {

    if(n[i][j]!=n[i-1][j]&&n[i][j]!=0||n[i][j]==2048)

    {

    m[a--]=n[i][j];

    n[i][j]=0;

    }

    else if(n[i][j]==n[i-1][j])

    {

    m[a--]=n[i][j]+n[i-1][j];

    score+=m[a+1];

    n[i][j]=0,n[i-1][j]=0;

    }

    }

    for(i=SIZE-1;i>=0;i--)

    {

    n[i][j]=m[i];

    m[i]=0;

    }

    }

    }

    void tod(int n[][SIZE])

    {

    int i,j,a;

    int m[SIZE];

    for(a=0;a<SIZE;a++)

    m[a]=0;

    for(i=SIZE-1;i>=0;i--)

    {

    for(a=SIZE-1;a>=0;a--)

    {

    for(j=SIZE-1;j>0;j--)

    {

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

    {

    n[i][j]=n[i][j-1];

    n[i][j-1]=0;

    }

    }

    }

    }

    for(i=SIZE-1;i>=0;i--)

    {

    for(a=SIZE-1,j=SIZE-1;j>=0;j--)

    {

    if(n[i][j]!=n[i][j-1]&&n[i][j]!=0||n[i][j]==2048)

    {

    m[a--]=n[i][j];

    n[i][j]=0;

    }

    else if(n[i][j]==n[i][j-1])

    {

    m[a--]=n[i][j]+n[i][j-1];

    score+=m[a+1];

    n[i][j]=0,n[i][j-1]=0;

    }

    }

    for(j=SIZE-1;j>=0;j--)

    {

    n[i][j]=m[j];

    m[j]=0;

    }

    }

    }

③ 教你如何使用C語言編寫簡單小游戲

||||//聲明
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<windows.h>
#define SIZE 4
static int score=0;

void putn(int n[][SIZE]);
void getn(int n[][SIZE]);
int isempty(int n[][SIZE]);
int isfull(int n[][SIZE]);
void math(int n[][SIZE],char c);
void tow(int n[][SIZE]);
void toa(int n[][SIZE]);
void tos(int n[][SIZE]);
void tod(int n[][SIZE]);
//主函數
int main()
{
int i,j;
int n[SIZE][SIZE];
char c=' ';
for(i=0;i<SIZE;i++)
{
for(j=0;j<SIZE;j++)
{
n[i][j]=0;
}
}

printf( "***********************\n"
" 2048(%dX%d) \n"
" control:W/A/S/D \n"
"press any key to begin \n"
"***********************\n",SIZE,SIZE);
getch();
system("cls");
//n[0][1]=2048;
//n[0][3]=2048;
while(1)
{
if(isempty(n))
getn(n);
putn(n);
if(!isempty(n)&&isfull(n))
break;
sleep(200);
c=getch();
while(c!='w'&&c!='a'&&c!='s'&&c!='d')
c=getch();
math(n,c);
system("cls");
}
printf(" Game Over!\n",score);
return 0;
}
//函數
void putn(int n[][SIZE])
{
int i,j;
for(i=0;i<SIZE;i++)
{
for(j=0;j<SIZE;j++)
printf("| ");
printf("|\n");
for(j=0;j<SIZE;j++)
{
if(n[i][j]==0)
printf("| ");
else
printf("|%4d ",n[i][j]);
}
printf("|\n");
for(j=0;j<SIZE;j++)
printf("|_____");
printf("|\n");
}
printf("score: %d",score);
}

void getn(int n[][SIZE])
{
int a,b;
a=rand()%SIZE;
b=rand()%SIZE;
while(n[a][b]!=0)
{
a=rand()%SIZE;
b=rand()%SIZE;
}
n[a][b]=2;

}

int isempty(int n[][SIZE])
{
int i,j,count=0;
for(i=0;i<SIZE;i++)
for(j=0;j<SIZE;j++)
if(n[i][j]==0)
count++;
return count;
}

int isfull(int n[][SIZE])
{
int i,j,count=0;
for(i=0;i<SIZE;i++)
{
for(j=1;j<SIZE-1;j++)
{
if(n[i][j]==n[i][j+1]||n[i][j]==n[i][j-1])
count++;
}
}
for(j=0;j<SIZE;j++)
{
for(i=1;i<SIZE-1;i++)
{
if(n[i][j]==n[i+1][j]||n[i][j]==n[i-1][j])
count++;
}
}
return count>0?0:1;
}

void math(int n[][SIZE],char c)
{
switch(c)
{
case 'w':tow(n);break;
case 'a':toa(n);break;
case 's':tos(n);break;
case 'd':tod(n);break;
default :;
}
}
void tow(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a<SIZE;a++)
m[a]=0;
for(j=0;j<SIZE;j++)
{
for(a=0;a<SIZE;a++)
{
for(i=0;i<SIZE-1;i++)
{
if(n[i][j]==0)
{
n[i][j]=n[i+1][j];
n[i+1][j]=0;
}
}
}
}
for(j=0;j<SIZE;j++)
{
for(a=0,i=0;i<SIZE;i++)
{
if(n[i][j]!=n[i+1][j]&&n[i][j]!=0||n[i][j]==2048)
{
m[a++]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i+1][j])
{
m[a++]=n[i][j]+n[i+1][j];
score+=m[a-1];
n[i][j]=0,n[i+1][j]=0;
}
}
for(i=0;i<SIZE;i++)
{
n[i][j]=m[i];
m[i]=0;
}
}

}

void toa(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a<SIZE;a++)
m[a]=0;
for(i=0;i<SIZE;i++)
{
for(a=0;a<SIZE;a++)
{
for(j=0;j<SIZE-1;j++)
{
if(n[i][j]==0)
{
n[i][j]=n[i][j+1];
n[i][j+1]=0;
}
}
}
}
for(i=0;i<SIZE;i++)
{
for(a=0,j=0;j<SIZE;j++)
{
if(n[i][j]!=n[i][j+1]&&n[i][j]!=0||n[i][j]==2048)
{
m[a++]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i][j+1])
{
m[a++]=n[i][j]+n[i][j+1];
score+=m[a-1];
n[i][j]=0,n[i][j+1]=0;
}
}
for(j=0;j<SIZE;j++)
{
n[i][j]=m[j];
m[j]=0;
}
}

}
void tos(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a<SIZE;a++)
m[a]=0;
for(j=SIZE-1;j>=0;j--)
{
for(a=SIZE-1;a>=0;a--)
{
for(i=SIZE-1;i>0;i--)
{
if(n[i][j]==0)
{
n[i][j]=n[i-1][j];
n[i-1][j]=0;
}
}
}
}
for(j=SIZE-1;j>=0;j--)
{
for(a=SIZE-1,i=SIZE-1;i>=0;i--)
{
if(n[i][j]!=n[i-1][j]&&n[i][j]!=0||n[i][j]==2048)
{
m[a--]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i-1][j])
{
m[a--]=n[i][j]+n[i-1][j];
score+=m[a+1];
n[i][j]=0,n[i-1][j]=0;
}
}
for(i=SIZE-1;i>=0;i--)
{
n[i][j]=m[i];
m[i]=0;
}
}

}
void tod(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a<SIZE;a++)
m[a]=0;
for(i=SIZE-1;i>=0;i--)
{
for(a=SIZE-1;a>=0;a--)
{
for(j=SIZE-1;j>0;j--)
{
if(n[i][j]==0)
{
n[i][j]=n[i][j-1];
n[i][j-1]=0;
}
}
}
}
for(i=SIZE-1;i>=0;i--)
{
for(a=SIZE-1,j=SIZE-1;j>=0;j--)
{
if(n[i][j]!=n[i][j-1]&&n[i][j]!=0||n[i][j]==2048)
{
m[a--]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i][j-1])
{
m[a--]=n[i][j]+n[i][j-1];
score+=m[a+1];
n[i][j]=0,n[i][j-1]=0;
}
}
for(j=SIZE-1;j>=0;j--)
{
n[i][j]=m[j];
m[j]=0;
}
}
}
需要注意的是:

srand((unsigned) time(0);rand();是固定形式,不要更改任何一個字元!
如果不能編譯,請把sleep(200);注釋掉,如果提示不能找到system("cls");請把system("cls")更換為clrscr();

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

「猜數字小游戲」,每個數字後按空格,最後按回車確認

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

int a[4],b[4];

int count=0; //計算猜測次數

void csh( ); //初始化

void start( ); //開始游戲

int main( )

{ csh( );

start( );

}

void csh( ) //初始化

{ printf(" 猜 數 字 小 游 戲 ");

printf(「 猜四個數字,如數字與順序都正確記為A,數字正確位置不對記為B. 」);

}

void start( ) //開始游戲

{int m,n; //m是完全猜對的個數,n是順序不對的個數

while(1)

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

while(1) { for(int i=0;i<4;i++) a[i]=rand( )%10; //rand( )函數每次隨機產生一個0-9的數

if( (a[3]!=a[2]&&a[3]!=a[1]&&a[3]!=a[0])&&

(a[2]!=a[1]&&a[2]!=a[0])&&a[1]!=a[0] ) break; } //4個隨機數各自不相等

printf(" 請依次輸入4個一位整數: ");

while(1)

{for(int i=0;i<4;i++) scanf(「%d」,&b[i]);

printf(" 你輸入的是:%d %d %d %d ",b[0],b[1],b[2],b[3]);

m=0;n=0;

for(int i=0;i<4;i++)

{for(int j=0;j<4;j++)

{ if(b[i]==a[j]&&i==j)m=m+1; if(b[i]==a[j]&&i!=j)n=n+1; }

}

count=count+1;

printf(" %dA %dB 你試了%d次 ",m,n,count);

if(m==4)break;

if(count==8){ count=0; break; }

}

printf(" ");

if(m==4)printf(" 你猜對了(^-^)! 就是:%d %d %d %d ",a[0],a[1],a[2],a[3]);

else printf(" 你輸了(T-T)!哈哈!應該是:%d %d %d %d ",a[0],a[1],a[2],a[3]);

int z;

printf(" (要繼續嗎?1或0) ");

scanf(「%d」,&z);

if(z==0) break;

}

}

⑤ 如何用C語言編寫圖形游戲

標準的C是沒有圖形庫的 圖形庫都是第3方的擴展的 比如 TC2.0 的graphics.h等等

用C寫一般專的Win32應用程序屬一般都是 VC6.0 (API 或者 MFC 就是你所說的能有按鍵那些的程序), 所以它要很好的C基礎甚至C++基礎才能學好 , 現在不要煩那個 黑不隆冬的dos界面 ,它是你學Win32應用程序的基礎.所以我非常建議你認真把C讀好,它的功能真的很強,一般高級語言能寫的東西,他一般也是行的.

⑥ 用C語言編寫一個簡單的打字母游戲,給出基本思路及完整程序。

# include<stdio.h>
# include <conio.h>
# include <graphics.h>
# include <time.h>
# pragma comment(lib,」Winmm.lib」) //引用Windows Multimedia APT

int score =0; //全局變數********整型的分數
char s[5]; //全局變數****字元型的分數
struct player_ //自定義的結構體,並順便定義一個結構體變數
{
char name[20];
int score_;
}player[11];
/***************函數聲明*****************/
void record_(); //記錄彼此成績函數
void welcome( ); //歡迎界面函數
void instructions( ); //游戲說明界面函數
void gane (int rank2); //游戲函數
void record ( ); //顯示記錄函數
int rank_(char rank1); //等級選擇函數
void goodbye ( ); //退出界面函數

/**************主函數**************/
int main ()
{
char rank1; //rank1接受從鍵盤輸入的字元,根據字元判斷等級
int rank2=15; // 控制延時時間,從而控制速度
intsign=1; // 當做標記,用於標記是否彈出MessageBox對話框

welcome ( ); //調用歡迎界面函數
instructions ( ); //調用游戲什麼函數
record( ); //調用顯示記錄函數
InputBox(player[10].name,20,"請輸入玩家昵稱"; //以對話框形式獲取用戶輸入函數
rank1=getch();//讀入一個字母
rank2=rank_(rank1); //調用等級函數
game (rank2); //調用游戲函數
HWND wnd =GetHWnd();
while (sign) //sign作為標記,執行循環
if (MessageBox(wnd,"游戲結束!!!\n再來一局,挑戰更高分數","詢問",MB_YESNO|MB_ICONQUESTION)==IDYES)
game (rank2);
else
{
sign=0;
goodbye( );
}
closegraph( );
return 0;
}
/***************記錄本次成績函數***************/
void record_()
{
FILE*fp; //文件指針
int i,j;
struct player_t; //定義結構體變數t,冒泡法比較大小時用
player[10].score_=score; //把該局的分數賦給該局用戶的結構體變數中
fp=fopen("記錄.dat","rb"); //打開二進制文件
for (i=0;i<10;i++)
{
fread(player[i].name,20,l,fp); //讀入記錄中的成績和名字
fread (&player[i].score_,4,l,fp);
}
fclose(fp); //關閉二進制文件
for (j=0;j<10;j++) //冒泡法排序
for (i=0;i<10-j;i++)
if (player[i].score_)
{
t=player[i];
player[i]=player[i+1];
player[i+1]=t;
}
fp=fopen("記錄.dat","wb"); //打開文件
for (i=0;i<10;i++) //把排好序列的數據存入記錄文件
{
fwrite(player[i].name,20,l,fp);
fwrite (&player[i].score_,4,l,fp);
}
fclose(fp); //關閉文件
}
/****************歡迎界面函數****************/
void welcome ( )
{
char ch;
mciSendString("open\"res\\Sleep Away.mp3\"alias mymusic",NULL,0,NULL);

initgraph(640,480); //初始化畫圖界面
IMAGE img; //定義IMAGE對象
loadimage (&img,"res\\00.jpg"); //讀取圖片到img對象中
putimage (0,0,&img); //在坐標(0,0)位置顯示IMAGE對象
ch=getch(); //吸收掉一個按鍵
cleardevice(); //清屏
}

/***************游戲說明界面函數**************/
void instructions()
{
int c=255; //控制變色的變數
setcolor(YELLOW); //設置顏色
setfont (30,0,"黑體"); //設置字體
outtextxy(0,0,"游戲說明"); //輸出文字
setcolor(WHITE);
setfont(28,0,"宋體");
outtextxy(0,30,"一、每次游戲下落200個字母"); //輸出文字
outtextxy(0,58,"二、請按數字鍵選擇游戲等級");
outtextxy(0,86,"三、統計被擊中的個數");
setfont(30,0,"華文行楷")
outtextxy (20,220,"等級一二三四 五六七八九");
outtextxy(20,260,「按鍵 1 2 3 4 5 6 7 8 9」);
while (!kbhit()) //kihit()作用是判斷是否有字幕輸入
{
setcolor(RGB(c,255,0));
setfont (80,0,"楷體");
outtextxy(140,130,"請選擇等級");
setcolor(RGB(c,0,255));
setfont(100,0,"Wickenden Cafe NDP");
outtextxy(100,135,"Let's go!!!");
c-=25; //控制顏色的變數自減
if(c<0)c=255; //控制顏色的變數小於0時,再把255賦給c
cleardevice(); //清屏
}
/***************退出界面函數***************/
void goodbye()
{
int c=255; //控制變色變數
cleardevice(); //清屏
setcolor(YELLOW);
setfont (48,0,"黑體");
outtextxy (104,120,"的最終成績是: ");
setfont (48,0,"華文楷體");
setcolor(RGB(255,255,0));
outtextxy(140,320,"按任意鍵退出遊戲");
setcolor(YELLOW);
setfont(48,0,"黑體");
outtextxy (104,120,"的最終成績是: ");
outtextxy(104,70,player[10].name);
record_(); //調用記錄本次成績函數
while(!kbhit())
{
setcolor(RGB(255,0,c-100)); //設置顏色
setfont(100,0,」Wickenden Café NDP」);
outtextxy(400,90,s); //輸出數字
setcolor(RGB(c,0,255));
setfont(48,0,」黑體」);
if (score==200)
outtextxy(100,200,」全部擊中!!!」);
else
if(score>190)
outtextxy(100,200,」不錯!繼續加油!」);
else
outtextxy(100,200,」不要灰心!繼續加油!」);
c-=25;
if(c<0)
c=255;
Sleeep(20); //延時20秒
}
getch( ); //提供給用戶時需要等待輸入後再退出
}
/**************等級選擇函數**************/
int rank_(char rank1)
{
int rank2;
switch(rank1) //判斷字元,確定等級
{
case』0』:rank2=11;break;
case』1』:rank2=10;break;
case』2』:rank2=9;break;
case』3』:rank2=8;break;
case』4』:rank2=7;break;
case』5』:rank2=6;break;
case』6』:rank2=5;break;
case』7』:rank2=4;break;
case』8』:rank2=3;break;
case』9』:rank2=2;break;
default:rank2=15;break;
}
return rank2;
}

/**************顯示記錄函數***********/
void record( )
{
FILE *p; //文件指針
int a[10],j;
char b[10][10];
fp=fopen(「記錄。dat」,」rb」); //打開文件
for (j=0;j<10;j++)
{
fread(player[j].name,20,1,fp); //讀取文件中的信息
fread(&player[j].score_,4,1,fp);
}
fclose(fp); //關閉文件
setfont(60,0,」Arial」);
setcolor(RGB(250,250,0));
outtextxy(250,0,」TOP10」);
for(j=0;j<10;j++)
{
sprintf(「b[j],%d」,player[j].score_); //把整型轉換為字元型
setcolor(RGB(0,100,255));
setfont(40,0,」Arial」);
outtextxy(420,50+40*j,b[j]);
outtextxy(120,50+40*j,player[j].name); //輸出名字

/**********游戲函數******************/
void game (int rank2)
{
cleardevice( ); //清屏
score=0; //清除掉原有的分數
outtextxy(0,0,」玩家:」);
outtextxy(90,0,player[10].name);
setfont(20,0,」Arial」);
outtextxy(100,460,」 人生有享受片刻優雅恬適的權力,讓打字母游戲放鬆你一下吧!」);
int i;
char target; //目標字母
char key; //用戶的按鍵
intx,y; //字母的位置
int flag =1; //標記是否按了退出鍵
int sum=0; //成績計數
int num =200; //規定下落字母的個數
srand (time(NULL)); //隨機時間種子,設置第一個隨機函數的值
setfillstyle(BLACK); //設置下面矩形內圖的顏色
setcolor(YELLOW); //
line(0,450,640,450); //用3條線規定一下工作區
line(0,440,640,440); //用3條線規定一下工作區
line(0,40,640,40); //用3條線規定一下工作區

while (flag&&num)
{
setfont(40,0,」宋體」); //設置字母的字體和大小
i=rand()%2; //rand()函數返回0~32767之間的一個整數
if(i)
target=97+rand()%26; //產生任意小寫字母
else
target=65+rand()%26; //產生任意大寫字母
x=rand()%610; //產生任意下落位置
for (y=41;y<380;y++)
{
setcolor (RGB(255,0,255));
outtextxy(x,y,target); //顯示字母

if(kbhit())
{
key=getch(); //獲取用戶按鍵
if ((key==target)||( key==target-32)||( key==target+32))
{
score++; //分數統計
sprintf(s,」%d」score);
setfont(30,0,」Arial」);
outtextxy(500,0,「分數」);
outtextxy(600,0,s); //輸出分數
bar(x-10,y-10,x+35,y+50); // 擊中用黑框形擦去字母
break; //跳出循環,進行下一個字母
}
else if (key==27) //判斷是否按了
{
flag=0; //若果按ESC,退出遊戲主循環
break;
}
}
Sleep(rank2); //控制清除字母的時間愛你也就是控制下落速度
bar(x,y,x+35,y+60); //擦最下面的字元
}
num--; //計數
}
}

⑦ 可以用C語言編寫游戲嗎

可以用C語言編寫游戲的。

⑧ 求一個用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.
GOOD
LUCK
TO
YOU
!
");
printf("Input
your
game
speed,please.(e.g.300)
");
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!
");
}
if(!change(qipan,zuobiao,direction))
{
direction='q';
system("cls");
printf("GAME
OVER!
");
}
}
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;
}

⑨ 怎樣用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做游戲的很少了.
更常見的是用java或者C++來做.
也有用C做底層核心,或者引擎,
C++/Java做上層的.
在很久以前,幾乎所有的游戲都是C寫的.