C語言簡單遊戲程式設計學習入門之2048

2021-09-25 06:08:16 字數 2560 閱讀 4692

#include#include#include#include#include//過關數字

#define win_number 2048

//定義地圖行、列、以及本身

#define row 4

#define col 4

int map[row][col]=;

//初始化地圖

void initializemap();

//列印地圖

void printmap();

//判斷是否已經存在2048

int iswin();

//隨機生成乙個2或者4,生成2的概率是生成4的概率的3倍

void createanumber();

//移動數字

int move(char turn);

//合併數字

int combine(char turn);

//gotoxy函式的實現,把游標移到到指定位置

void gotoxy(int x,int y);

int main()

turn=getch(); //獲取使用者的移動請求,若移動有效則再次生成乙個隨機2或4

if(move(turn)==1)

createanumber();

} else if(combine(turn))

}return 0;

}//初始化地圖

void initializemap()

//列印地圖

void printmap()

else

}printf("\n");

} for(k=1;k<=5*col+1;k++)

printf("\n");

}//判斷是否已經存在2048

int iswin()

} } }}

break;

case 's':case 's'://有空位則上面的非空位往下移

for(i=row-1;i>=1;i--)

} } }}

break;

case 'a':case 'a'://有空位則右面的非空位往左移

for(j=0;j0)}}

}}break;

case 'd':case 'd'://有空位則左面的非空位往右移

for(i=0;i=1;j--)}}

}}break;

default:

break;

} return flag;

}//合併數字

int combine(char turn)

} }

break;

case 's':case 's'://是否存在上面乙個數字和自己的相同且不是0

for(i=row-1;i>=1;i--)}}

break;

case 'a':case 'a'://是否存在右面乙個數字和自己的相同且不是0

for(i=0;i0&&map[i][j]==map[i][j+1])}}

break;

case 'd':case 'd'://是否存在左面乙個數字和自己的相同且不是0

for(i=0;i=1;j--)}}

break;

default:

break;

} return flag;

}//gotoxy函式的實現,把游標移到到指定位置

void gotoxy(int x,int y)

總體來說,我們需要準備以下幾個步驟:

1.設計儲存地圖的二維陣列

2.列印地圖

3.是否已經過關的判斷

4.隨機將地圖中乙個為0的元素生成2或4

5.獲取玩家的移動或合併請求

6.處理移動和合併是否成功,成功則重新再將乙個隨機元素為0的生成2或4

7.優化,呼叫gotoxy使得不閃屏

8.有興趣的還可以在滿屏數字的時候加上判斷,判斷是否已經無法移動或者合併(提示,在移動和合併的基礎上修改便可達到)

2048曾是乙個廣為人知的小遊戲,以其簡單、有趣的遊戲規則深受大家的喜愛,和當初俄羅斯方塊剛設計出來一樣備受歡迎,如今我們在日漸深入學習c語言的道路上,就可以將平時所見所知嘗試著用程式設計去實現,讓程式設計成為生活不可或缺的一部分。

在設計這個小遊戲的過程中,我們首先需要懂得它的詳細規則,這意味著我們完成它的製作會涉及到很多邏輯思考,比如生成隨機數怎麼控制生成2的概率是生成4的概率的3倍呢?怎麼讓數字移動起來呢?怎麼合併數字?合併之後需要再移動一次嗎?無形之中,我們的邏輯思維能力會得到很好的提高,為日後用程式設計處理複雜問題打下基礎。

每次設計完成乙個作品,然後就寫個部落格記錄下來。以後回頭翻看自己的記錄,可能會覺得當初的設計非常幼稚,但是肯定也會非常慶幸以前的自己沒有學完就把知識扔一邊,而是把它運用到最容易提起自己興趣的地方,每每想到這裡,應該會挺開心的吧!

C語言簡單遊戲程式設計學習入門之fluppybird

include include include include 遊戲地圖資訊,行 列 地圖 define row 15 define col 19 int map row col 玩家結構,橫座標 縱座標 下落速度 typedef struct player player player p 障礙物結...

C語言簡單遊戲程式設計學習入門之猜數字

標頭檔案引用 include include include 主函式 int main else if guess number else 猜中了 還沒有猜中,判斷猜測次數是否已經是最大次數次了,超過則遊戲失敗,退出死迴圈 if count guess max count return 0 猜數字遊...

C語言簡單遊戲程式設計學習入門之推箱子

include include include 定義地圖資訊 define row 8 define col 8 int map row col 人物位置 int person x 4 int person y 4 定義代號 define person 5 注意 人進了空地也顯示人,所以9也是人的代...