C語(yǔ)言鍵盤控制走迷宮小游戲
本文實(shí)例為大家分享了C語(yǔ)言鍵盤控制走迷宮小游戲的具體代碼,供大家參考,具體內(nèi)容如下
在看了《啊哈C語(yǔ)言》之后想寫一個(gè)游戲demo
游戲的截圖
首先是啟動(dòng)界面

然后是初始化

接下來(lái)是鍵盤操控

地圖的復(fù)雜度也很容易修改。
也支持退出。按s鍵選擇退出游戲這個(gè)選項(xiàng)即可。
下面是源代碼
#include <stdio.h>
#include <stdlib.h>
void startUp();
void gameInstructions();
void menu(char c);
void gameMap();
char map[6][6]={"######",
"#o # ",
"# ## #",
"# # #",
"## #",
"######"
};
int main() {
startUp();//游戲啟動(dòng)界面
gameInstructions();//游戲說(shuō)明
//顯示菜單
printf(" -> 開始游戲\n");
printf(" 退出游戲\n");
printf("按Enter進(jìn)入游戲\n");
char choose1;
choose1 = getch();
menu(choose1);
//加載游戲地圖
gameMap();
//玩家進(jìn)行操作
system("cls");
int i,x,y,p,q,j;
char ch;
x=1;y=1;p=1;q=5;
for(i=0;i<6;++i){
printf(" ");
for(j=0;j<6;++j){
printf("%c ",map[i][j]);
}
printf("\n");
}
while(x != p || y != q){
ch = getch();
if(ch == 's' || ch == 'S'){
if(map[x+1][y] != '#'){
map[x][y] = ' ';
x++;
map[x][y] = 'o';
}else{
printf("\a");
}
}
if(ch == 'w' || ch == 'W'){
if(map[x-1][y] != '#'){
map[x][y] = ' ';
x--;
map[x][y] = 'o';
}else{
printf("\a");
}
}
if(ch == 'a' || ch == 'A'){
if(map[x][y-1] != '#'){
map[x][y] = ' ';
y--;
map[x][y] = 'o';
}else{
printf("\a");
}
}
if(ch == 'd' || ch == 'D'){
if(map[x][y+1] != '#'){
map[x][y] = ' ';
y++;
map[x][y] = 'o';
}else{
printf("\a");
}
}
system("cls");
for(i=0;i<6;++i){
printf(" ");
for(j=0;j<6;++j){
printf("%c ",map[i][j]);
}
printf("\n");
}
}
system("cls");
printf("You Win!\n");
Sleep(3000);
return 0;
}
void startUp(){
int i;
int circle = 2;
for(i=0;i<circle;++i){
system("cls");
printf(" 游戲正在加載");
Sleep(500);
system("cls");
printf(" 游戲正在加載.");
Sleep(500);
system("cls");
printf(" 游戲正在加載..");
Sleep(500);
system("cls");
printf(" 游戲正在加載...");
Sleep(500);
}
system("cls");
printf(" 游戲加載完畢!\n");
Sleep(1000);
}
void gameInstructions(){
printf("<---操作按鍵:[W][S][A][D]--->\n");
printf("<---分別對(duì)應(yīng)[上][下][左][右]--->\n");
printf("<---注意使用英文輸入法--->\n");
Sleep(1000);
}
void menu(char c){
system("cls");
if(c == 'S' || c == 's'){
printf(" 游戲加載完畢!\n");
printf("<---操作按鍵:[W][S][A][D]--->\n");
printf("<---分別對(duì)應(yīng)[上][下][左][右]--->\n");
printf(" 開始游戲\n");
printf(" -> 退出游戲\n");
printf("程序?qū)⒃?s后關(guān)閉\n");
int i = 0;
for(i=0;i<5;++i){
system("cls");
printf("程序?qū)⒃?%ds后關(guān)閉\n",5-i);
Sleep(1000);
}
exit(0);//退出程序
}else{
printf(" 游戲加載完畢!\n");
printf("<---操作按鍵:[W][S][A][D]--->\n");
printf("<---分別對(duì)應(yīng)[上][下][左][右]--->\n");
printf(" -> 開始游戲\n");
printf(" 退出游戲\n");
printf("按Enter進(jìn)入游戲\n");
}
}
void gameMap(){
system("cls");
printf("---正在加載游戲地圖---\n");
int i, j;
for(i=0;i<6;++i){
printf(" ");
for(j=0;j<6;++j){
printf("%c ",map[i][j]);
Sleep(100);
}
printf("\n");
Sleep(200);
}
system("cls");
printf("---Part1---\n");
for(i=0;i<6;++i){
printf(" ");
for(j=0;j<6;++j){
printf("%c ",map[i][j]);
}
printf("\n");
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言中((type *)0) 和(type *0)區(qū)別小結(jié)
((type *)0)?和?(type *0)?在 C 和 C++ 中有不同的含義和用途,本文主要介紹了C語(yǔ)言中((type *)0) 和(type *0)區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08
C語(yǔ)言?超詳細(xì)梳理總結(jié)動(dòng)態(tài)內(nèi)存管理
動(dòng)態(tài)內(nèi)存是相對(duì)靜態(tài)內(nèi)存而言的。所謂動(dòng)態(tài)和靜態(tài)就是指內(nèi)存的分配方式。動(dòng)態(tài)內(nèi)存是指在堆上分配的內(nèi)存,而靜態(tài)內(nèi)存是指在棧上分配的內(nèi)存,本文帶你深入探究C語(yǔ)言中動(dòng)態(tài)內(nèi)存的管理2022-03-03
舉例講解C語(yǔ)言對(duì)歸并排序算法的基礎(chǔ)使用
這篇文章主要介紹了C語(yǔ)言對(duì)歸并排序算法的使用,歸并排序算法的平均事件復(fù)雜度為(n\log n),需要的朋友可以參考下2016-05-05
C 標(biāo)準(zhǔn)I/O庫(kù)的粗略實(shí)現(xiàn)教程
下面小編就為大家分享一篇C 標(biāo)準(zhǔn)I/O庫(kù)的粗略實(shí)現(xiàn)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2017-12-12
C語(yǔ)言實(shí)現(xiàn)常見進(jìn)制轉(zhuǎn)換的示例代碼
生活中最常見的進(jìn)制是十進(jìn)制,而有一類編程題會(huì)要求將十進(jìn)制轉(zhuǎn)換為其他進(jìn)制,本文將主要講述C語(yǔ)言中常見的幾類進(jìn)制轉(zhuǎn)換問題,希望對(duì)大家有所幫助2023-04-04
C++ 中 const和static readonly區(qū)別
這篇文章主要介紹了C++ 中 const和static readonly區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-05-05
C++控制臺(tái)實(shí)現(xiàn)簡(jiǎn)單人機(jī)對(duì)弈井字棋
這篇文章主要為大家詳細(xì)介紹了C++控制臺(tái)實(shí)現(xiàn)簡(jiǎn)單人機(jī)對(duì)弈井字棋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05

