c語言編程遊戲界面,c語言遊戲編程入門

本文目錄一覽:

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

愛玩是人的天性,而C語言是我們計算機專業都要學習的一門基礎 學科.一般來說,是比較枯燥的.那麼,我們能不能通過編一些小遊戲來提高它的趣味性呢?這樣學習程序設計,就不會是一件艱苦 ,枯燥的事,它變得象電腦遊戲一樣充滿好奇,富有樂趣. 1, 總是從Hello,world開始 學習編程的第一個程序,一般就是打印一個親切的詞語——”Hell o,world!”.讓我們來看看這個最簡單的C程序:#incolude /*把輸入輸出函數的頭文件包含進來*/int main(){printf(“Hello, world!”);/*在屏幕上輸出字符串”Hello,world!”*/return 0;/*退出main函數,並返回0*/} 下面我們發現幾個值得改進的地方,1,程序的運行結果一閃而過 .2,每執行這個程序一次都能看見上次運行留下的字符.3,我們 還希望屏幕輸出一個笑臉來歡迎我們. 讓我們來改進一下這個程序吧!1,在return語句的前面加一句:getch ();,表示按任意鍵結束.2,在printf語句前用clrscr函數清屏,要使用這個函數和getch函數,需要在程序開頭再包含頭文件conio.h.3,ASCII碼也有 許多非常好玩的字符,比如ASCII碼值為2的就是一個笑臉,我們可 以用printf(“%c”, 2)來輸出一個笑臉. 現在我們把Hello,world程序改成一個更好看的Hello,world了.下面讓我們開始做遊戲吧! 2, 心動的開始,一個運動中的笑臉 大家小時侯喜歡看動畫片嗎?哈哈,我猜你們都喜歡吧!下面就讓我們來做一個小動畫吧.在屏幕上顯示一個運動的小笑臉,而且當它到達屏幕的邊緣時會自動彈回來.先在程序定義一個在屏幕中運動的點的結構:struct move_point{ int x, y;/*該點的位置,包括x坐標和y坐標*/ int xv, yv;/*該點在x軸,y軸的速度*/};運動的原理是,先擦去物體先前的軌跡,讓物體按其速度移動一段距離,再畫出該物體.讓我們看到以下代碼:gotoxy(man.x, man.y);/*把光標移到指定的坐標*/printf(” “);/*輸出一個空格,把先前的字符擦去*/然後我們讓物體按其速度運動:man.x += man.xv;/*水平方向按x軸的速度運動*/man.y += man.yv;/*垂直方向按y軸的速度運動*/運動後還要判斷物體是否出界,如果出了界,就令物體反彈,即讓 它下一刻的速度等於現在的速度的相反數.最後打印出這個笑臉:gotoxy(man.x, man.y);printf(“%c\b”, 2); /*輸出ASCII碼值為2的”笑臉”字符*/怎麼樣?是不是很有趣呢?不過這個笑臉一直是自己運動,能不能 讓我們來控制它運動呢?不過這個程序沒有什麼目的,也沒有什麼判斷勝負的條件.下面我們就利用這個能控制它移動的笑臉來做一個更有趣的遊戲吧! 4, 在迷宮中探索 小時侯,我常在一些小人書和雜誌上看見一些迷宮的遊戲,非常喜歡玩,還常到一些書上找迷宮玩呢.好的,現在我們用C語言來編個迷宮的遊戲,重溫一下童年的樂趣. 首先,我們定義一個二維數組map,用它來保存迷宮的地圖,其中map[x][y] == ‘#’表示在(x,y)坐標上的點是牆壁.DrawMap函數在屏幕上輸出迷宮的地圖和一些歡迎信息.在main函數里,我們定義了”小人”man的坐標和”目的地”des的 坐標.在遊戲循環中,我們增加了一些用來判斷勝負的語句:if (man.x == des.x man.y == des.y) /*如果人的坐標等於目的地的坐標*/{ gotoxy(35, 3); printf(“Ok! You win!”); /*輸出勝利信息*/….}在判斷按鍵時,如果玩家按的是方向鍵,我們還要先判斷前面是不是有”牆壁”,如果有的話,就不能往前移動了.好的,我們在判斷按鍵的switch語句的各個分支加上了判斷語句,如下:if (map[…][…] == ‘#’) break;/*如果前面是牆壁,就不執行下去*/哇噻!真棒,我們做出了一個完整的遊戲了.當然你還可以通過修改二維數組map來修改迷宮的地圖,讓它更有挑戰性.不過,我們要設計一個更好玩的遊戲—— 5, 聰明的搬運工 大家一定玩過”搬運工”的遊戲吧!這是在電腦和電子字典上較流行的益智遊戲,讓我們動手做一個屬於自己的”搬運工”吧!程序依然用數組map來保存地圖,數組元素如果為空格則表示什麼也沒有,’b’表示箱子,’#’表示牆壁,’*’表示目的地,’i’表示箱子在目的地.我們以後每推一下箱子,不但要改變屏幕的顯示,也要改變map相應元素的值.遊戲的主循環依然是接受按鍵.當接收一個方向鍵,需要判斷小人前面一格的狀態,如果是空地或目的地,則人物可以直接移動;如果是牆壁,則不可移動;如果是箱子或目的地上的箱子,則需要繼續判斷箱子前面一格的狀態:如果前一格是空地或目的地,則人推箱子前進,否則不可移動.好的,我們在switch中增加了這些判斷語句.程序還有一個重要的功能就是判斷勝利.數組Des用來記錄全部目的地的坐標,我們每執行一步操作後,程序就要通過Des數組判斷這些目的地上是否都有箱子了.真棒啊!我們可以做遊戲了.而且是一個老少皆宜,趣味十足的遊戲呢!當然,我們可以通過修改map數組來製作不同的遊戲地圖,我們還可以相互分享好的遊戲地圖呢. 尾聲: 在C++等高級語言還沒出來的時候,很多應用程序也是C語言開發的.C語言在與硬件聯繫緊密的編程中,也佔有重要地位.其實我覺得學習編程,可以通過一些小遊戲,實用的例子來學習.象學習音樂的人,不是要等到把全部樂理學完後才演奏一個完整的曲子.而是剛開始學時就有一些簡單的曲子讓你演奏,讓你立刻就有成就感,讓你很快就能賣弄出來在別人面前表現自己了.通過編遊戲來學習編程,把學習變成遊戲,不失為學習計算機的一種好方法. 好了,編遊戲就這麼簡單,希望大家也嘗試用C語言或其他的語言來做幾個自己喜歡的小遊戲.

用C語言編寫一個具有簡單界面的猜數字遊戲

分析:

先產生一個隨機數N。

然後輸入數I,如果i大於N,則提示大於信息。

如果I小於N,則提示小於信息。

直到I==N,則輸出成功信息。

這是我用C語言寫的。

環境:

WIN-C ,TORBO C,如果是C++環境把倒數第二排getch();刪掉!

已經調試成功:

main()

{

int i=0,n;

srand(time(0));

n=rand()%100+1;

while(i!=n)

{printf(“please input a number:\n”);

scanf(“%d”,i);

if(in)printf(“this number is too big!\n”);

if(in)printf(“this number is too smaller!\n”);

}

if(i==n)

printf(“PASS!%3d”,n);

getch();

}

提示:

srand(time(0));

n=rand()%100+1;

是用來生成一個1~100以內的隨機數,如果你改,把100改成50或者200。如(n=rand()%50+1;

怎樣用c語言編寫一個界面好看的遊戲 例如 俄羅斯方塊

別說做遊戲了,做一個正規的窗口都困難得要死!!!

自己看吧。這就是用C語言做的最最簡單的一個窗口:

#include tchar.h

#include windows.h

/* 這個函數由Windows內部函數DispatchMessage()調用 */ 

LRESULT CALLBACK WindowProcedure (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

 HDC hdc;

 PAINTSTRUCT ps;

 RECT rect;

 switch (message)    /* 處理信息 */

 {

  case WM_DESTROY: 

   PostQuitMessage (0);      /* 發送WM_QUIT到消息隊列 */

   break;

  case WM_PAINT:

   hdc = BeginPaint (hWnd, ps);

   GetClientRect (hWnd, rect);

   DrawText (hdc, TEXT(“Hello, Windows NT!”), -1, rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

   EndPaint (hWnd, ps);

   break;

  default:  /* 不處理的消息 */ 

   return DefWindowProc (hWnd, message, wParam, lParam);

 }

 return 0;

}

/* 下面是主函數 */

int WINAPI _tWinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nFunsterStil)

{

 HWND hWnd;   /* 這是窗口的句柄 */

 MSG messages;   /* 應用程序的消息保存在這裡 */

 WNDCLASSEX wincl;  /* 窗口類的數據結構 */

 TCHAR szClassName[ ] = TEXT(“WindowsApp”); /* 窗口類的類名 */

 /* 窗口結構 */

 wincl.hInstance = hThisInstance;

 wincl.lpszClassName = szClassName;

 wincl.lpfnWndProc = WindowProcedure;/* 這個函數由Windows操作系統調用 */

 wincl.style = CS_DBLCLKS; /* 獲取雙擊指令 */

 wincl.cbSize = sizeof (WNDCLASSEX);

 /* 使用默認圖標和鼠標指針 */

 wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);

 wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);

 wincl.hCursor = LoadCursor (NULL, IDC_ARROW);

 wincl.lpszMenuName = NULL; /* 沒有菜單 */

 wincl.cbClsExtra = 0;/* 窗口類後面沒有多餘的位元組 */

 wincl.cbWndExtra = 0;/* 結構或者窗口實例 */

 /* 使用窗口的默認顏色作為窗口的背景色 */

 wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

 /* 註冊窗口類。如果註冊失敗,那麼就退出程序 */

 if (!RegisterClassEx (wincl))

  return 0;

 /* 窗口類已被註冊。創建它的程序 */

 hWnd = CreateWindowEx (

   0,

   szClassName, /* 類名 */

   TEXT(“Windows App”), /* 窗口標題欄的文字 */

   WS_OVERLAPPEDWINDOW, /* 默認窗口 */

   CW_USEDEFAULT, /* 窗口左上角的位置 */

   CW_USEDEFAULT, /* 窗口右下角的位置 */

   544, /* 窗口寬度(以「像素」位單位) */

   375, /* 窗口高度(以「像素」位單位) */

   HWND_DESKTOP, /* 窗口是桌面的子窗口 */

   NULL,/* 該窗口無菜單 */

   hThisInstance, /* 程序實例的句柄 */

   NULL /* 沒有窗口創建的數據 */

   );

 /* 顯示窗口 */

 ShowWindow (hWnd, nFunsterStil);

 /* 重繪窗口 */

 UpdateWindow(hWnd);

 /* 運行消息循環。循環到GetMessage()函數返回0 */

 while (GetMessage (messages, NULL, 0, 0))

 {

  /* 把虛擬信息翻譯成字符信息 */

  TranslateMessage(messages);

  /* 發送信息到窗口過程 */

  DispatchMessage(messages);

 }

 /* 返回PostQuitMessage()函數的返回值 */

 return messages.wParam;

}

c語言編程 遊戲開始之前的界面 點擊play 開始遊戲

【教程】c語言怎麼編遊戲

純真童趣的《泡泡堂》,還有武林情仇,笑傲江湖的《劍俠情緣on

line》.它是e時代常談的話題,是交互式娛樂的主力軍,是一種

高層次的綜合藝術,更是一個民族的文化,世界觀的全新傳播方式

.作為遊戲玩家的我們,是不是想設計一個屬於自己的遊戲呢?

愛玩是人的天性,而C語言是我們計算機專業都要學習的一門基礎

學科.一般來說,是比較枯燥的.那麼,我們能不能通過編一些小

遊戲來提高它的趣味性呢?這樣學習程序設計,就不會是一件艱苦

,枯燥的事,它變得象電腦遊戲一樣充滿好奇,富有樂趣.這正是

我發貼的目的.

1, 總是從Hello,world開始

學習編程的第一個程序,一般就是打印一個親切的詞語——”Hell

o,world!”.讓我們來看看這個最簡單的C程序:

#incolude stdio.h /*把輸入輸出函數的頭文件包含進來*/

int main()

{

printf(“Hello,

world!”);/*在屏幕上輸出字符串”Hello,world!”*/

return 0;/*退出main函數,並返回0*/

}

下面我們發現幾個值得改進的地方,1,程序的運行結果一閃而過

.2,每執行這個程序一次都能看見上次運行留下的字符.3,我們

還希望屏幕輸出一個笑臉來歡迎我們.(大家不要小看了這個笑臉

曾經有人發貼專門問呢)讓我們來改進一下這個程序吧!

1,在return語句的前面加一句:getch ();,表示按任意鍵結

束.2,在printf語句前用clrscr函數清屏,要使用這個函數和get

ch函數,需要在程序開頭再包含頭文件conio.h.3,ASCII碼也有

許多非常好玩的字符,比如ASCII碼值為2的就是一個笑臉,我們可

以用printf(“%c”, 2)來輸出一個笑臉.

現在我們把Hello,world程序改成一個更好看的Hello,world了.下

面讓我們開始做遊戲吧!

2, 心動的開始,一個運動中的笑臉

大家小時侯喜歡看動畫片嗎?哈哈,我猜你們都喜歡吧!下面就讓

我們來做一個小動畫吧.在屏幕上顯示一個運動的小笑臉,而且當

它到達屏幕的邊緣時會自動彈回來.

先在程序定義一個在屏幕中運動的點的結構:

struct move_point

{

int x, y;/*該點的位置,包括x坐標和y坐標*/

int xv, yv;/*該點在x軸,y軸的速度*/

};

運動的原理是,先擦去物體先前的軌跡,讓物體按其速度移動一段

距離,再畫出該物體.讓我們看到以下代碼:

gotoxy(man.x, man.y);/*把光標移到指定的坐標*/

printf(” “);/*輸出一個空格,把先前的字符擦去*/

然後我們讓物體按其速度運動:

man.x += man.xv;/*水平方向按x軸的速度運動*/

man.y += man.yv;/*垂直方向按y軸的速度運動*/

運動後還要判斷物體是否出界,如果出了界,就令物體反彈,即讓

它下一刻的速度等於現在的速度的相反數.最後打印出這個笑臉:

gotoxy(man.x, man.y);

printf(“%c\b”, 2); /*輸出ASCII碼值為2的”笑臉”字符*/

怎麼樣?是不是很有趣呢?不過這個笑臉一直是自己運動,能不能

讓我們來控制它運動呢?答案是肯定的,讓我們繼續往下學吧!

3, 交互的實現——讓我們來控制笑臉運動

這個程序的主要功能是接受按鍵,如果接收的是方向鍵,就讓笑臉

順着方向移動,如果接收的是ESC鍵就退出程序,其他按鍵則忽略

處理.接受按鍵我們用以下兩條語句:

while (bioskey(1) == 0);/*等待按鍵*/

key = bioskey(0);/*把接收的按鍵的鍵盤碼賦給變量key*/

然後用switch語句來判斷按鍵以及執行相關操作,如下:

switch (key) /*對變量key的值進行判斷*/

{

case UP: /*如果按的是向上鍵*/

… break; /*讓物體向上運動,並退出switch*/

case DOWN: /*如果按的是向下鍵*/

… break; /*讓物體向下運動,並退出switch*/

case LEFT: /*向左鍵*/

… break;;/*向左運動*/

case RIGHT: /*向右鍵*/

… break;/*向右運動*/

default:

break;/*其他按鍵則忽略處理*/

}

怎麼樣,是不是有了玩遊戲的感覺了?不過這個程序沒有什麼目的

,也沒有什麼判斷勝負的條件.下面我們就利用這個能控制它移動

的笑臉來做一個更有趣的遊戲吧!

4, 在迷宮中探索

小時侯,我常在一些小人書和雜誌上看見一些迷宮的遊戲,非常喜

歡玩,還常到一些書上找迷宮玩呢.好的,現在我們用C語言來編

個迷宮的遊戲,重溫一下童年的樂趣.

首先,我們定義一個二維數組map,用它來保存迷宮的地圖,其中m

ap[x][y] == ‘#’表示在(x,y)坐標上的點是牆壁.DrawMap函數

在屏幕上輸出迷宮的地圖和一些歡迎信息.

在main函數里,我們定義了”小人”man的坐標和”目的地”des的

坐標.在遊戲循環中,我們增加了一些用來判斷勝負的語句:

if (man.x == des.x man.y == des.y) /*如果人的坐標等於目

的地的坐標*/

{

gotoxy(35, 3);

printf(“Ok! You win!”); /*輸出勝利信息*/

….

}

在判斷按鍵時,如果玩家按的是方向鍵,我們還要先判斷前面是不

是有”牆壁”,如果有的話,就不能往前移動了.好的,我們在判

斷按鍵的switch語句的各個分支加上了判斷語句,如下:

if (map[…][…] == ‘#’) break;/*如果前面是牆壁,就不執行

下去*/

哇噻!真棒,我們做出了一個完整的遊戲了.當然你還可以通過修

改二維數組map來修改迷宮的地圖,讓它更有挑戰性.不過,我們

要設計一個更好玩的遊戲——

5, 聰明的搬運工

大家一定玩過”搬運工”的遊戲吧!這是在電腦和電子字典上較流

行的益智遊戲,讓我們動手做一個屬於自己的”搬運工”吧!

程序依然用數組map來保存地圖,數組元素如果為空格則表示什麼

也沒有,’b’表示箱子,’#’表示牆壁,’*’表示目的地,’i

‘表示箱子在目的地.我們以後每推一下箱子,不但要改變屏幕的

顯示,也要改變map相應元素的值.

遊戲的主循環依然是接受按鍵.當接收一個方向鍵,需要判斷小人

前面一格的狀態,如果是空地或目的地,則人物可以直接移動;如

果是牆壁,則不可移動;如果是箱子或目的地上的箱子,則需要繼

續判斷箱子前面一格的狀態:如果前一格是空地或目的地,則人推

箱子前進,否則不可移動.好的,我們在switch中增加了這些判斷

語句.

程序還有一個重要的功能就是判斷勝利.數組Des用來記錄全部目

的地的坐標,我們每執行一步操作後,程序就要通過Des數組判斷

這些目的地上是否都有箱子了.

真棒啊!我們可以做遊戲了.而且是一個老少皆宜,趣味十足的游

戲呢!當然,我們可以通過修改map數組來製作不同的遊戲地圖,

我們還可以相互分享好的遊戲地圖呢.

尾聲:

在C++等高級語言還沒出來的時候,很多應用程序也是C語言開發的

.C語言在與硬件聯繫緊密的編程中,也佔有重要地位.

其實我覺得學習編程,可以通過一些小遊戲,實用的例子來學習.

象學習音樂的人,不是要等到把全部樂理學完後才演奏一個完整的

曲子.而是剛開始學時就有一些簡單的曲子讓你演奏,讓你立刻就

有成就感,讓你很快就能賣弄出來在別人面前表現自己了.通過編

遊戲來學習編程,把學習變成遊戲,不失為學習計算機的一種好方

法.

好了,編遊戲就這麼簡單,希望大家也嘗試用C語言或其他的語言

來做幾個自己喜歡的小遊戲.

怎樣用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;iH;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;isnk.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==72dir!=2)dir=1;  //72表示按下了向上方向鍵

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

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

         if(key==77dir!=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(“\007”); snk.len++; score += 100; snk.speed -= 5; Flag = 1; } //007是響鈴

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

if(snk.speed150) 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 );

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

原創文章,作者:XGGZ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/139618.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XGGZ的頭像XGGZ
上一篇 2024-10-04 00:22
下一篇 2024-10-04 00:22

相關推薦

  • Python wordcloud入門指南

    如何在Python中使用wordcloud庫生成文字雲? 一、安裝和導入wordcloud庫 在使用wordcloud前,需要保證庫已經安裝並導入: !pip install wo…

    編程 2025-04-29
  • Python小波分解入門指南

    本文將介紹Python小波分解的概念、基本原理和實現方法,幫助初學者掌握相關技能。 一、小波變換概述 小波分解是一種廣泛應用於數字信號處理和圖像處理的方法,可以將信號分解成多個具有…

    編程 2025-04-29
  • 為什麼不用Python開發遊戲

    Python是一種高級編程語言,擁有簡單易學、代碼簡潔等優點。同時,Python也是一種多用途的語言,可以用於Web開發、數據分析以及機器學習等領域。然而,對於遊戲開發領域,Pyt…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python豎線圖:從入門到精通

    Python豎線圖,即Python的繪圖工具matplotlib中的一種圖形類型,具有直觀、易於理解的特點,適用於各種數據分析和可視化場景。本文從初學者角度出發,介紹Python豎…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • 使用Python製作遊戲代碼

    Python是一種高級編程語言,因其簡潔明了的代碼風格、易於學習和使用而備受青睞。Python已經成為遊戲製作的熱門選擇之一,可以通過Pygame、Panda3D等工具來實現遊戲制…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29

發表回復

登錄後才能評論