導航:首頁 > 源碼編譯 > BL程序C語言源碼

BL程序C語言源碼

發布時間:2024-03-24 09:00:55

1. C語言源代碼是什麼

數字版「拼圖」游戲C源代碼:

#include<time.h>

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<windows.h>

int i, j, r, k; //i、j、r用於循環, k存放隨機數值


int m, n; // m、n是當前空位的下標, t標記排序是否成功

int a[4][4]; //存儲4×4共16個數字的數組

void show(void); //輸出數組表格

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

int yes(void); //判斷排序是否成功

void up(void); //數字向上移動到空位(空位則下移)

void down(void); //數字向下移

void left(void); //數字向左移

void rght(void); //數字向右移

void inkey(void); //按鍵操作

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

int main(void)

{ while(1)

{csh( );

while(1)

{ inkey();

show();

if ( yes( ) )

{gtxy(6,12); printf("你成功了! 再來一局y/n?"); break;}

}

if(getch( )== ʹnʹ)break;

}

return 0;

}

void csh(void)

{r=0;

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

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

for(i=0;i<4;i++) //給數組a依序賦值

for(j=0;j<4;j++)
{ if (i==3 && j==3) a[i][j]=0;
else a[i][j]=1+r++;
}

a[3][3]=a[1][1]; a[1][1]=0; //把a[3][3]與a[1][1]的值交換一下

m=1; n=1;

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

for(r=0;r<500;r++) //將數組各值打亂
{k=rand( )%(4); //取0-3隨機數,分別代表上下左右四個方向
switch(k)
{ case 0: { up( );break; }
case 1: {down( );break; }
case 2: {left( );break; }
case 3: {rght( ); break; }
}
}

printf(" 數字拼圖");

printf(" ┌──────┬──────┬──────┬──────┐");

printf(" │ │ │ │ │");

printf(" ├──────┼──────┼──────┼──────┤");

printf(" │ │ │ │ │");

printf(" ├──────┼──────┼──────┼──────┤");

printf(" │ │ │ │ │");

printf(" ├──────┼──────┼──────┼──────┤");

printf(" │ │ │ │ │");

printf(" └──────┴──────┴──────┴──────┘");
show( );
}

void show(void)

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

for(j=0;j<4;j++) //gtxy(7*j+9, 2*i+4)是游標到指定位置輸出數字

{gtxy(7*j+9,2*i+4); if(a[i][j]==0)printf(" │");

else if(a[i][j]>9)printf(" %d │",a[i][j]);

else printf(" %d │",a[i][j]);

}

}

void inkey(void)

{ int key;

key=getch( );
switch(key)
{ case 72: { up( ); break;}
case 80: {down( ); break; }
case 75: {left( ); break; }
case 77: {rght( );break;}
}
}

void up(void)

{ if (m!=3) //移動時要考慮空位"0"是否已經在邊界
{ a[m][n]=a[m+1][n]; m++; a[m][n]=0; }
}


void down(void)

{ if (m!=0)
{a[m][n]=a[m-1][n]; m--; a[m][n]=0; }
}

void left(void)

{ if (n!=3)
{ a[m][n]=a[m][n+1]; n++; a[m][n]=0;}
}
void rght(void)

{ if (n!=0)
{ a[m][n]=a[m][n-1]; n--; a[m][n]=0; }
}

int yes(void)

{ r=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{ if (a[i][j]!=1+r++) return (r==16)?1:0; }
}

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

{ COORD coord;

coord.X = x;

coord.Y = y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

2. 求助啊,誰有有趣的c語言小程序,並且要有源代碼!!

一個貪吃蛇C源代碼,本人稍加優化,練手應當不錯。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <Windows.h>

#define WIDTH 78 //地圖的寬,x軸
#define HEIGHT 26 //地圖的高,y軸
int dire=3; //方向變數,初值為向「左」
int Flag=0; //判斷是否吃了食物的標志
int score=0; //玩家得分

struct foods{ int x;
int y;
}food; //結構體food有2個成員
struct snakes{int len;
int speed;
int x[100];
int y[100];
}snake; //結構體snake有4個成員

void gotoxy( int x,int y) //獲得句柄,才能控制游標移動
{ COORD coord;
coord.X=x;
coord.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

void gotoxy( int x,int y); //以下聲明要用到的幾個自編函數
void csh( );
void keyDown( );
void Move( );
void putFood( );
int pdOver( );

int main( ) //主函數
{ csh( );
while(1)
{ keyDown( );
Move( );
putFood( );
if(pdOver( ))
{system(「cls」);
gotoxy(WIDTH/2+1,HEIGHT/2);
printf(「游戲結束!T__T」);
gotoxy(WIDTH/2+1,HEIGHT/2+1);
printf(「玩家總分:%d分」,score);
getch( );
break; }
Sleep(snake.speed);
}
return 0;
}

void csh( ) //初始化界面
{ int i;
gotoxy(0,0);
CONSOLE_CURSOR_INFO cursor_info={1,0}; //游標值設為0就隱藏了
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

for(i=0;i<=WIDTH;i=i+2) //橫坐標要為偶數,因為這里要列印的字元佔2個位置
{ gotoxy(i,0); //列印上邊框
printf("■");
gotoxy(i,HEIGHT); //列印下邊框
printf("■");
}
for(i=1;i<HEIGHT;i++)
{ gotoxy(0,i); //列印左邊框
printf("■");
gotoxy(WIDTH,i); //列印右邊框
printf("■");
}
while(1)
{ srand((unsigned int)time(NULL)); //設定種子為當前時間
food.x=rand()%(WIDTH-4)+2;
food.y=rand()%(HEIGHT-2)+1;
if(food.x%2==0)break;
}
gotoxy(food.x,food.y); //到食物坐標處列印初試食物
printf("●");

snake.len=3; //蛇身長
snake.speed=350; //刷新蛇的時間,即是移動速度
snake.x[0]=WIDTH/2+1; //蛇頭橫坐標為偶數
snake.y[0]=HEIGHT/2; //蛇頭縱坐標
gotoxy(snake.x[0], snake.y[0]); //列印蛇頭
printf("■");

for(i=1;i<snake.len;i++)
{ snake.x[i]=snake.x[i-1]+2;
snake.y[i]=snake.y[i-1];
gotoxy(snake.x[i],snake.y[i]); //列印蛇身
printf("■");
}
return;
}

void keyDown( ) //按鍵操作
{ int key;
if(kbhit( )) //如有按鍵輸入才執行下面操作
{ key=getch( );
if(key==224) //值為224表示按下了方向鍵,下面要再次獲取鍵值
{ key=getch( );
if(key==72&&dire!=2)dire=1; //72為向上
if(key==80&&dire!=1)dire=2; //80為向下
if(key==75&&dire!=4)dire=3; //75為向左
if(key==77&&dire!=3)dire=4; //77為向右
}
if(key==13)
{ while(1) if((key=getch( ))==13) break; } //13為回車鍵,這兒用來暫停
}
}

void Move( ) //蛇移動一節
{ if(Flag==0) //如沒吃食物,才執行下面操作擦掉蛇尾
{ gotoxy(snake.x[snake.len-1],snake.y[snake.len-1]);
printf(" ");
}
int i;
for (i = snake.len - 1; i > 0; i--) //從蛇尾起每節存儲前一節坐標值(蛇頭除外)
{ snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
switch (dire) //以下判斷蛇頭該往哪個方向移動,並獲取最新坐標值
{ case 1: snake.y[0]--; break;
case 2: snake.y[0]++; break;
case 3: snake.x[0]-=2; break;
case 4: snake.x[0]+=2; break;
}
gotoxy(snake.x[0], snake.y[0]); //列印蛇頭
printf("■");
if (snake.x[0] == food.x && snake.y[0] == food.y) //如吃到食物執行以下操作
{ snake.len++; score += 50; snake.speed -= 5; Flag = 1;}
else Flag = 0;
if(snake.speed<160) snake.speed= snake.speed+5; //作弊碼,不讓速度無限加快
}

void putFood( ) //投放食物
{ if(Flag == 1) //如吃到食物才執行以下操作,生成另一個食物
{ while (1)
{ int i,n= 1;
srand((unsigned int)time(NULL)); //設定當前時間,接下產生食物坐標值
food.x = rand( ) % (WIDTH - 4) + 2;
food.y = rand( ) % (HEIGHT - 2) + 1;
for (i = 0; i < snake.len; i++) //隨機生成的食物不能在蛇的身體上
{ if (food.x == snake.x[i] &&food.y == snake.y[i])
{ n= 0; break;}
}
if (n && food.x % 2 == 0) break; //n不為0且橫坐標為偶數,食物坐標取值成功
}
gotoxy(food.x, food.y); //游標到取得的坐標處列印食物
printf("●");
}
return;
}

int pdOver( ) //判斷游戲是否結束
{ int i;
gotoxy(2,HEIGHT+1); //以下列印一些其它信息
printf(「暫停鍵:Enter.」);
gotoxy(2,HEIGHT+2);
printf(「游戲得分:%d」,score);
if (snake.x[0] == 0 || snake.x[0] == WIDTH) return 1; //蛇頭觸碰左右邊界
if (snake.y[0] == 0 || snake.y[0] == HEIGHT) return 1; //蛇頭觸碰上下邊界
for (i = 1; i < snake.len; i++)
{ if (snake.x[0] == snake.x[i] && snake.y[0] == snake.y[i]) return 1; } //蛇頭觸碰自身
return 0;
}

3. c語言源程序的擴展名是什麼

c語言源程序的擴展名是:「.c」。由C語言構成的指令序列稱為C源程序,源程序文件的後綴為「.c」。註:在絕大多數的操作系統里,C源代碼文件的後綴的大小寫無所謂,如「index.C」和「index.c」指的是同一個文件;但老練的程序員通常使用小寫。

對於計算機語言來說,其源代碼文件的命名會有一個特定的後綴。如C++的源代碼文件的後綴是「.cpp」;Python的源代碼文件的後綴是「.py」;而C的源代碼文件的後綴則是「.C」。

源程序的結構特點

1、一個C語言源程序可以由一個或多個源文件組成。

2、每個源文件可由一個或多個函數組成。

3、一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。

4、源程序中可以有預處理命令(include 命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。

5、每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括弧「}」之後不能加分號。

6、標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。

閱讀全文

與BL程序C語言源碼相關的資料

熱點內容
哪裡app可以上高中生物課 瀏覽:472
cad粗糙度快捷鍵命令大全 瀏覽:521
騰訊雲伺服器無法運行軟體 瀏覽:342
奔跑吧哪個app 瀏覽:97
哪個app聽音樂最好 瀏覽:281
考研英語2真題pdf 瀏覽:699
煙台編程積木教育環境好不好 瀏覽:214
python優秀代碼 瀏覽:620
androidtop命令 瀏覽:455
你平時怎麼排解壓力 瀏覽:68
表格中的文件夾怎樣設置 瀏覽:476
em78單片機 瀏覽:960
splitjava空格 瀏覽:248
電腦怎麼谷歌伺服器地址 瀏覽:515
nx自定義工具啟動宏命令 瀏覽:101
程序員怎麼解決無法訪問互聯網 瀏覽:303
java訪問本地文件 瀏覽:747
瓦斯琪伺服器怎麼用 瀏覽:22
安卓主題用什麼app 瀏覽:747
修改伺服器pci地址空間 瀏覽:321