日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux推箱子脚本,【编程例题】标准C语言实现推箱子游戏!附解析!

發(fā)布時(shí)間:2025/3/12 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux推箱子脚本,【编程例题】标准C语言实现推箱子游戏!附解析! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天我來分享一道對(duì)于初學(xué)C語言的同學(xué)非常有啟發(fā)作用的編程例題,是用C語言實(shí)現(xiàn)單張地圖推箱子的小游戲。

這個(gè)游戲是基于Linux環(huán)境下編程的,所用工具為ubuntu、和gcc編譯器。

首先推箱子的地圖,我們根據(jù)經(jīng)典游戲推箱子中的其中一幅地圖來自做,圖片如下。

用圖片形式實(shí)現(xiàn)這張圖片對(duì)于初學(xué)編程的同學(xué)來說,難以實(shí)現(xiàn),所以我們選擇用字符代替的形式來實(shí)現(xiàn)這張地圖。

我們采用2為數(shù)組的方式來存儲(chǔ)這張地圖,具體的數(shù)字與字符含義轉(zhuǎn)換如下:

0 printf(" "); 路

2?printf("@"); 人

3?printf("#"); 墻

4?printf("$"); 箱子

5?printf("O"); 目標(biāo)點(diǎn)

7 printf("@"); 人

9?printf("$"); 箱子

代碼如下:

#include

#include

#include

#include

int mx = 0;

int my = 0;

int step = 0;

char map[8][8] = {

{0,0,3,3,3,3,0,0},

{0,0,3,5,5,3,0,0},

{0,3,3,0,5,3,3,0},

{0,3,0,0,4,5,3,0},

{3,3,0,4,0,0,3,3},

{3,0,0,3,4,4,0,3},

{3,0,0,2,0,0,0,3},

{3,3,3,3,3,3,3,3}

};

void show_map(void)

{

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

{

for(int j=0;j<8;j++)

{

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

{

printf(" ");

}

else if(2 == map[i][j])

{

printf("@ ");

}

else if(3 == map[i][j])

{

printf("# ");

}

else if(4 == map[i][j])

{

printf("$ ");

}

else if(5 == map[i][j])

{

printf("O ");

}

else if(7 == map[i][j])

{

printf("@ ");

}

else if(9 == map[i][j])

{

printf("$ ");

}

}

printf("\n");

}

}

void up(void)

{

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

{

for(int j=0; j<8;j++)

{

if(2 == map[i][j] || 7 == map[i][j])

{

mx =i;

my =j;

}

}

}

if(3 == map[mx-1][my])

{

return;

}

else if(0 == map[mx-1][my] || 5 == map[mx-1][my])

{

map[mx-1][my] += 2;

map[mx][my] -= 2;

step++;

}

else if(4 == map[mx-1][my] || 9 == map[mx-1][my])

{

if(0 == map[mx-2][my])

{

map[mx-2][my] += 4;

map[mx-1][my] -= 2;

map[mx][my] -= 2;

step++;

}

else if(5 == map[mx-2][my])

{

map[mx-2][my] += 4;

map[mx-1][my] -= 2;

map[mx][my] -= 2;

step++;

}

else

{

return;

}

}

}

void down(void)

{

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

{

for(int j=0; j<8;j++)

{

if(2 == map[i][j] || 7 == map[i][j])

{

mx =i;

my =j;

}

}

}

if(3 == map[mx+1][my])

{

return;

}

else if(0 == map[mx+1][my] || 5 == map[mx+1][my])

{

map[mx+1][my] += 2;

map[mx][my] -= 2;

step++;

}

else if(4 == map[mx+1][my] || 9 == map[mx+1][my])

{

if(0 == map[mx+2][my])

{

map[mx+2][my] += 4;

map[mx+1][my] -= 2;

map[mx][my] -= 2;

step++;

}

else if(5 == map[mx+2][my])

{

map[mx+2][my] += 4;

map[mx+1][my] -= 2;

map[mx][my] -= 2;

step++;

}

else

{

return;

}

}

}

void left(void)

{

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

{

for(int j=0; j<8;j++)

{

if(2 == map[i][j] || 7 == map[i][j])

{

mx =i;

my =j;

}

}

}

if(3 == map[mx][my-1])

{

return;

}

else if(0 == map[mx][my-1] || 5 == map[mx][my-1])

{

map[mx][my-1] += 2;

map[mx][my] -= 2;

step++;

}

else if(4 == map[mx][my-1] || 9 == map[mx][my-1])

{

if(0 == map[mx][my-2])

{

map[mx][my-2] += 4;

map[mx][my-1] -= 2;

map[mx][my] -= 2;

step++;

}

else if(5 == map[mx][my-2])

{

map[mx][my-2] += 4;

map[mx][my-1] -= 2;

map[mx][my] -= 2;

step++;

}

else

{

return;

}

}

}

void right(void)

{

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

{

for(int j=0; j<8;j++)

{

if(2 == map[i][j] || 7 == map[i][j])

{

mx =i;

my =j;

}

}

}

if(3 == map[mx][my+1])

{

return;

}

else if(0 == map[mx][my+1] || 5 == map[mx][my+1])

{

map[mx][my+1] += 2;

map[mx][my] -= 2;

step++;

}

else if(4 == map[mx][my+1] || 9 == map[mx][my+1])

{

if(0 == map[mx][my+2])

{

map[mx][my+2] += 4;

map[mx][my+1] -= 2;

map[mx][my] -= 2;

step++;

}

else if(5 == map[mx][my+2])

{

map[mx][my+2] += 4;

map[mx][my+1] -= 2;

map[mx][my] -= 2;

step++;

}

else

{

return;

}

}

}

void start_soko(void)

{

FILE* frp = fopen("soko.bin","r");

if(NULL == frp)

{

printf("數(shù)據(jù)加載錯(cuò)誤!\n");

return;

}

fread(map,1,64,frp);

fclose(frp);

}

void exit_soko(void)

{

FILE* fwp = fopen("soko.bin","w");

printf("____");

if(NULL == fwp)

{

printf("數(shù)據(jù)保存錯(cuò)誤!\n");

}

fwrite(map,1,64,fwp);

fclose(fwp);

}

int main()

{

start_soko();

while(true)

{

system("clear");

//顯示地圖

show_map();

//判定是否游戲結(jié)束

int cnt = 0;

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

{

for(int j=0; j<8;j++)

{

if(9 == map[i][j])

{

cnt++;

}

}

}

if(4 == cnt)

{

printf("游戲結(jié)束,共使用%d步!\n",step);

return 0;

}

printf("%d\n",cnt);

//獲取方向鍵

switch(getch())

{

case 'w':up();break;

case 's':down();break;

case 'a':left();break;

case 'd':right();break;

case 'q':exit_soko();return 0;

default:

puts("輸入指令有誤!");

}

}

exit_soko();

}

本文地址:https://blog.csdn.net/weixin_48994377/article/details/107324818

總結(jié)

以上是生活随笔為你收集整理的linux推箱子脚本,【编程例题】标准C语言实现推箱子游戏!附解析!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美猛交xxx| 婷婷色视频 | 中国女人av| 打开免费观看视频在线播放 | 久操综合 | 久久久久无码精品国产 | 久久久久久久影视 | 精品国产一二三 | 日韩黄色网络 | 国产真实乱偷精品视频 | 日本亲子乱子伦xxxx50路 | 日本福利视频导航 | 日日操操 | www.欧美| 久久久精品国产sm调教 | 国产福利合集 | 男生操女生逼逼 | 激情导航 | 亚洲第一色网站 | 日韩免费观看一区二区三区 | 日韩中文字幕网 | a级片免费在线观看 | 泰坦尼克号3小时49分的观看方法 | 国产精品综合久久久 | 男女透逼视频 | 青青草在线免费视频 | 免费在线色| 一级黄色录像大片 | 亚洲乱码国产乱码精品精剪 | av在线资源网 | 日韩精品人妻无码一本 | 97精品国产97久久久久久粉红 | www国产www| 色校园| 91精品99| 国产又粗又猛又爽视频 | 亚洲精品国产精品国自产网站按摩 | 哺乳喂奶一二三区乳 | 天天干天天做 | 日日夜夜添 | www.青青草.com | 成人免费片| 日韩午夜| 久久人人爽人人爽人人片av免费 | www.jizzjizz | 综合久久一区二区 | 亚洲欧洲精品一区 | 91国产丝袜播放在线 | 午夜整容室 | 少妇无码av无码专区在线观看 | 伊人77| 久久精品久久久久 | 高清黄色一级片 | 91av影视| 午夜在线视频播放 | youjizz韩国| 极品在线播放 | 欧洲亚洲视频 | 亚洲av成人精品午夜一区二区 | 日本一区二区三区视频在线 | 婷婷伊人五月天 | xxxx国产 | 黑人巨大xxxxx性猛交 | 美国免费黄色片 | 97色伦图片 | 亚洲免费视频观看 | 国产有码视频 | 免费在线国产精品 | 亚洲av成人无码久久精品 | 成人在线天堂 | 欧美一区二区三区免费在线观看 | 国产精品久久久久久久久免费看 | 亚洲字幕成人中文在线观看 | 国产精品一卡二卡 | 91精品国产日韩91久久久久久 | 久天堂| 红杏出墙记 | 国产又粗又深又猛又爽又在线观看 | 操操操操网 | 国产偷怕 | 丰满人妻一区二区三区免费 | 一级特黄录像免费看 | 亚洲精品中文字幕在线播放 | 日韩精品一区二区三区视频在线观看 | 91精品国产综合久久久蜜臀 | 午夜黄色在线观看 | 四虎一区二区三区 | 97超视频 | 免费污网站在线观看 | 九九免费视频 | 亚洲你我色 | 91一区二区在线观看 | 在线观看自拍 | 综合免费视频 | 中文字幕有码在线观看 | 抱着老师的嫩臀猛然挺进视频 | 国产日韩欧美在线观看 | 国产精品8888 | 久操久热 |