日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: xxxxx国产| 欧美日韩一区二区三区在线观看 | 人人人草 | 亚洲天堂精品在线观看 | 欧美精品日韩少妇 | 欧美大片在线播放 | 特级毛片在线播放 | 成人动作片 | 婷婷6月天 | 国产福利久久久 | 亚洲av综合色区无码一区爱av | 欧美成人午夜精品久久久 | 欧美tv | 欧美日韩在线免费播放 | 你懂得在线视频 | 韩国三色电费2024免费吗怎么看 | 精品无码三级在线观看视频 | 欧美激情一区二区三区在线 | 亚洲iv一区二区三区 | 99亚洲欲妇 | 熊猫成人网 | 在线一区二区三区视频 | 色妞网站| 欧美日韩美女 | 国产伦精品一区二区三区视频孕妇 | 日韩视频在线观看免费 | 国产亚洲精品久久久久久无几年桃 | 欧美成人一区二免费视频软件 | 香蕉视频在线视频 | av网址观看 | 亚洲精品一区在线 | 我们2018在线观看免费版高清 | av在线一| 国产第一页在线播放 | 天天综合日韩 | 欧美精品在线免费 | 性欧美hd调教 | 亚洲资源网 | 国产www精品 | 致单身男女免费观看完整版 | 青青操视频在线观看 | 欧美尹人 | 亚洲精品视频国产 | 一区二区视屏 | 日本一级大毛片a一 | 午夜视频1000 | 黄色片子免费看 | 91综合久久 | 狠狠躁日日躁夜夜躁2022麻豆 | 综合色久 | 国产99久久久 | 丁香花完整视频在线观看 | 日韩在线观看免费av | 欧美性xxxxx极品娇小 | 欧美一级黄色片视频 | 色91精品久久久久久久久 | 99久久精品日本一区二区免费 | 夜夜嗨av禁果av粉嫩av懂色av | 青青色在线观看 | 日韩在线一 | 成人理论影院 | 亚洲第一黄网 | 天天插天天干天天操 | 久久狠| 日本三级黄在线观看 | 99精品视频播放 | 亚洲av综合av一区二区三区 | 久久久久一区 | 国产亚洲精品成人av在线 | 国产a√精品区二区三区四区 | 怡红院成人在线 | 免费又黄又爽又猛大片午夜 | 麻豆精品国产 | 久久久18禁一区二区三区精品 | 乱日视频 | 在线精品福利 | 日韩有码av | 亚洲国产高清在线 | 97人人爽人人爽人人爽人人爽 | 亚洲国产欧美视频 | 亚色视频 | 好吊色视频在线观看 | 伊人久久大香线蕉av一区 | 亚洲人成电影网站 | 精品少妇人妻av一区二区 | 中文字幕理伦片免费看 | 国产一区二区三区中文字幕 | 欧美区二区三区 | 99久久免费看精品国产一区 | 欧美一级色图 | 欧美黄色片免费看 | 国产一区高清 | 国产黄色影视 | 亚洲第四页 | 日韩伦理一区 | 日韩成年人视频 | 全黄性高潮| 丰满少妇久久久久久久 | 国产一区二区日韩 |