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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android游戏编程之从零开始_纯C语言程序员写的编程新手入门基础小游戏之最炫酷推箱子...

發(fā)布時間:2024/7/23 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android游戏编程之从零开始_纯C语言程序员写的编程新手入门基础小游戏之最炫酷推箱子... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

很多編程愛好者都編寫過推箱子游戲編程吧,最近有好些朋友看見我以前的推箱子程序后,

問我是怎么做的。我一直想把這個程序的整個過程寫一份詳細(xì)的東西,與各位編程愛好者分享,一直沒空。正好現(xiàn)在放假了,而且離回家還有幾天。于是我就把這個程序重新寫了一遍,盡量使程序的結(jié)構(gòu)比較清晰好懂一些。同時寫了下面的這份東西。

通過w,s,a,d實現(xiàn)上下左右的移動

聲明畫圖函數(shù)

然后分別對移動位置進(jìn)行情況判斷:

1.如果人前面是空地。

2.如果人前面是目的地。

3.如果人前面是箱子。有以下兩種情況:

如果人前面是箱子,而箱子前面是空地。

如果人的前面是箱子,而箱子前面是目的地。

4.如果人前面是已經(jīng)進(jìn)入某目的地的箱子。有以下兩種情況:

如果人前面是已經(jīng)進(jìn)入某目的地的箱子,而箱子前面是空地。

如果人前面是已經(jīng)進(jìn)入某目的地的箱子,而箱子前面是另一目的地。

5.對箱子原先位置的判斷。

6.對人原先位置進(jìn)行判斷。

【從百科上參考查閱下載的代碼,并加以整理】

[cpp] view plain copy

//此小游戲使用C語言編寫,編譯環(huán)境VS2008

#include

#include

#include

int i,j;

void draw_map(int map[10][12]); //聲明畫圖函數(shù)

int main()

{

char input;

int count=0; //定義記分變量

/*下面定義一個二維數(shù)組,其中的元素是不同圖像的ID號,在后面的函數(shù)中將講解不同數(shù)字分別代表的圖像元素*/

int map[10][12] = {

while (1) //死循環(huán),等待用戶命令

{

system("CLS");

for (i=0;i

{

printf("%d",i);

}

printf(" ");

/*for (i=1;i

{

printf("%d ",i);

}*/

printf(" ");

draw_map(map);

printf("當(dāng)前得分:%d ",count);

//找初始位置

for (i=0;i

{

for (j=0;j

{

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

break;

}

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

break;

}

printf("您的當(dāng)前坐標(biāo)(%d,%d)",i,j);

input = getch(); //用getch()函數(shù)無需回車確認(rèn)地獲取用戶輸入,用于控制行走方向。

switch (input)

{

case'w':

//如果人前面是空地。 //0代表空地 6代表人 //3代表目的地

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

{

map[i-1][j]=6+0; //人往前走一步,ID為人的ID()加上空地的ID()。

if(map[i][j]==9) //如果當(dāng)前人站的位置為目的地,則ID為(即人的ID()加上目的地ID())。

map[i][j]=3; //將人往前走一步后原地的ID修改為空地ID()。

else

map[i][j]=0; //否則原地ID修改為空地ID 。

}

//如果人前面是目的地。

elseif((map[i-1][j]==3)||(map[i-1][j]==9))

{

map[i-1][j]=6+3; //人往前走一步,ID為人ID+目的地ID=9。

if(map[i][j]==9) //如果原地也是目的地(ID為)。

map[i][j]=3; //人走后把原地ID修改回目的地ID。

else

map[i][j]=0; //否則原地ID修改為為空地ID

}

//如果人前面是箱子。//4代表箱子 //7箱子進(jìn)入目的地

elseif(map[i-1][j]==4)

{

//如果人前面是箱子,而箱子前面是空地。

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

{

map[i-2][j]=4; //人推箱子往前走一步,把空地ID修改為箱子ID()

//下面是對箱子原地進(jìn)行判斷

if(map[i-1][j]==7) //如果箱子原地為目的地。

map[i-1][j]=9; //人站在箱子的原地(目的地)時該地ID應(yīng)該為人的ID+目的地ID=9。

else

map[i-1][j]=6; //否則,人站在了原來的空地上,ID應(yīng)該為+0=6。

//下面是對人原地進(jìn)行判斷

if(map[i][j]==9) //如果之前是目的地。

map[i][j]=3; //人走了之后修改回目的地ID。

else

map[i][j]=0; //否則就是空地。

}

//如果人的前面是箱子,而箱子前面是目的地。

elseif (map[i-2][j]==3)

{

map[i-2][j]=7; //ID為(目的地ID()+箱子ID()=7),表示已經(jīng)把箱子推入了目的地。

count++;

//下面是對箱子原先位置的判斷,同上。

if(map[i-1][j]==7)

map[i-1][j]=9;

else

map[i-1][j]=6;

//下面是對人原先位置進(jìn)行判斷,同上。

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

map[i][j]=3;

else

map[i][j]=0;

}

}

//如果人前面是已經(jīng)進(jìn)入某目的地的箱子(ID=7)。

elseif(map[i-1][j]==7)

{

//如果人前面是已經(jīng)進(jìn)入某目的地的箱子,而箱子前面是空地。

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

{

count--;

map[i-2][j]=4; //把箱子重新推到空地上,ID=箱子ID+空地ID=4。

map[i-1][j]=9; //人自然而然的就站在了原先的目的地上了。

//下面是對人原先地進(jìn)行判斷,方法同上。

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

map[i][j]=3;

else

map[i][j]=0;

}

//如果人前面是已經(jīng)進(jìn)入某目的地的箱子,而箱子前面是另一目的地。

if(map[i-2][j]==3)

{

map[i-2][j]=7; //把箱子推入了另一目的地,自然,ID也應(yīng)是。

map[i-1][j]=9; //人站在了目的地上。

//下面是對人原先站立地進(jìn)行判斷,方法同上。

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

map[i][j]=3;

else

map[i][j]=0;

}

}

break;

case's':

//如果人前面是空地。

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

{

map[i+1][j]=6+0; //人往前走一步,ID為人的ID()加上空地的ID()。

if(map[i][j]==9) //如果當(dāng)前人站的位置為目的地,則ID為(即人的ID()加上目的地ID())。

map[i][j]=3; //將人往前走一步后原地的ID修改為空地ID()。

else

map[i][j]=0; //否則原地ID修改為空地ID 。

}

//如果人前面是目的地。

elseif(map[i+1][j]==3)

{

map[i+1][j]=6+3; //人往前走一步,ID為人ID+目的地ID=9。

if(map[i][j]==9) //如果原地也是目的地(ID為)。

map[i][j]=3; //人走后把原地ID修改回目的地ID。

else

map[i][j]=0; //否則原地ID修改為為空地ID

}

//如果人前面是箱子。

elseif(map[i+1][j]==4)

{

//如果人前面是箱子,而箱子前面是空地。

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

{

map[i+2][j]=4; //人推箱子往前走一步,把空地ID修改為箱子ID()

//下面是對箱子原地進(jìn)行判斷

if(map[i+1][j]==7) //如果箱子原地為目的地。

map[i+1][j]=9; //人站在箱子的原地(目的地)時該地ID應(yīng)該為人的ID+目的地ID=9。

else

map[i+1][j]=6; //否則,人站在了原來的空地上,ID應(yīng)該為+0=6。

//下面是對人原地進(jìn)行判斷

if(map[i][j]==9) //如果之前是目的地。

map[i][j]=3; //人走了之后修改回目的地ID。

else

map[i][j]=0; //否則就是空地。 (加群: 571545210 學(xué)習(xí)編程,在群里獲得更多的學(xué)習(xí)資料)

}

//如果人的前面是箱子,而箱子前面是目的地。

elseif (map[i+2][j]==3)

{

map[i-2][j]=7; //ID為(目的地ID()+箱子ID()=7),表示已經(jīng)把箱子推入了目的地。

count++;

//下面是對箱子原先位置的判斷,同上。

if(map[i+1][j]==7)

map[i+1][j]=9;

else

map[i+1][j]=6;

//下面是對人原先位置進(jìn)行判斷,同上。

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

map[i][j]=3;

else

map[i][j]=0;

}

}

//如果人前面是已經(jīng)進(jìn)入某目的地的箱子(ID=7)。

elseif(map[i+1][j]==7)

{

//如果人前面是已經(jīng)進(jìn)入某目的地的箱子,而箱子前面是空地。

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

{

count--;

map[i+2][j]=4; //把箱子重新推到空地上,ID=箱子ID+空地ID=4。

map[i+1][j]=9; //人自然而然的就站在了原先的目的地上了。

//下面是對人原先地進(jìn)行判斷,方法同上。

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

map[i][j]=3;

else

map[i][j]=0;

}

//如果人前面是已經(jīng)進(jìn)入某目的地的箱子,而箱子前面是另一目的地。

if(map[i+2][j]==3)

{

map[i+2][j]=7; //把箱子推入了另一目的地,自然,ID也應(yīng)是。

map[i+1][j]=9; //人站在了目的地上。

//下面是對人原先站立地進(jìn)行判斷,方法同上。

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

map[i][j]=3;

else

map[i][j]=0;

}

}

break;

case'a':

//如果人前面是空地。

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

{

map[i][j-1]=6+0; //人往前走一步,ID為人的ID()加上空地的ID()。

if(map[i][j]==9) //如果當(dāng)前人站的位置為目的地,則ID為(即人的ID()加上目的地ID())。

map[i][j]=3; //將人往前走一步后原地的ID修改為空地ID()。

else

map[i][j]=0; //否則原地ID修改為空地ID 。

}

//如果人前面是目的地。

elseif(map[i][j-1]==3)

{

map[i][j-1]=6+3; //人往前走一步,ID為人ID+目的地ID=9。

if(map[i][j]==9) //如果原地也是目的地(ID為)。

map[i][j]=3; //人走后把原地ID修改回目的地ID。

else

map[i][j]=0; //否則原地ID修改為為空地ID

}

//如果人前面是箱子。

elseif(map[i][j-1]==4)

{

//如果人前面是箱子,而箱子前面是空地。

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

{

map[i][j-2]=4; //人推箱子往前走一步,把空地ID修改為箱子ID()

//下面是對箱子原地進(jìn)行判斷

if(map[i][j-1]==7) //如果箱子原地為目的地。

map[i][j-1]=9; //人站在箱子的原地(目的地)時該地ID應(yīng)該為人的ID+目的地ID=9。

else

map[i][j-1]=6; //否則,人站在了原來的空地上,ID應(yīng)該為+0=6。

//下面是對人原地進(jìn)行判斷

if(map[i][j]==9) //如果之前是目的地。

map[i][j]=3; //人走了之后修改回目的地ID。

else

map[i][j]=0; //否則就是空地。

}

//如果人的前面是箱子,而箱子前面是目的地。

elseif (map[i][j-2]==3)

{

count++;

map[i][j-2]=7; //ID為(目的地ID()+箱子ID()=7),表示已經(jīng)把箱子推入了目的地。

//下面是對箱子原先位置的判斷,同上。

if(map[i][j-1]==7)

map[i][j-1]=9;

else

map[i][j-1]=6;

//下面是對人原先位置進(jìn)行判斷,同上。

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

map[i][j]=3;

else

map[i][j]=0;

}

}

//如果人前面是已經(jīng)進(jìn)入某目的地的箱子(ID=7)。

elseif(map[i][j-1]==7)

{

//如果人前面是已經(jīng)進(jìn)入某目的地的箱子,而箱子前面是空地。

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

{

count--;

map[i][j-2]=4; //把箱子重新推到空地上,ID=箱子ID+空地ID=4。

map[i][j-1]=9; //人自然而然的就站在了原先的目的地上了。

//下面是對人原先地進(jìn)行判斷,方法同上。

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

map[i][j]=3;

else

map[i][j]=0;

}

//如果人前面是已經(jīng)進(jìn)入某目的地的箱子,而箱子前面是另一目的地。

if(map[i][j-2]==3)

{

map[i][j-2]=7; //把箱子推入了另一目的地,自然,ID也應(yīng)是。

map[i][j-1]=9; //人站在了目的地上。

//下面是對人原先站立地進(jìn)行判斷,方法同上。

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

map[i][j]=3;

else

map[i][j]=0;

}

}

break;

case'd':

//如果人前面是空地。

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

{

map[i][j+1]=6+0; //人往前走一步,ID為人的ID()加上空地的ID()。

if(map[i][j]==9) //如果當(dāng)前人站的位置為目的地,則ID為(即人的ID()加上目的地ID())。

map[i][j]=3; //將人往前走一步后原地的ID修改為空地ID()。

else

map[i][j]=0; //否則原地ID修改為空地ID 。

}

//如果人前面是目的地。

elseif(map[i][j+1]==3)

{

map[i][j+1]=6+3; //人往前走一步,ID為人ID+目的地ID=9。

if(map[i][j]==9) //如果原地也是目的地(ID為)。

map[i][j]=3; //人走后把原地ID修改回目的地ID。

else

map[i][j]=0; //否則原地ID修改為為空地ID

}

//如果人前面是箱子。

elseif(map[i][j+1]==4)

{

//如果人前面是箱子,而箱子前面是空地。

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

{

map[i][j+2]=4; //人推箱子往前走一步,把空地ID修改為箱子ID()

//下面是對箱子原地進(jìn)行判斷

if(map[i][j+1]==7) //如果箱子原地為目的地。

map[i][j+1]=9; //人站在箱子的原地(目的地)時該地ID應(yīng)該為人的ID+目的地ID=9。

else

map[i][j+1]=6; //否則,人站在了原來的空地上,ID應(yīng)該為+0=6。

//下面是對人原地進(jìn)行判斷

if(map[i][j]==9) //如果之前是目的地。

map[i][j]=3; //人走了之后修改回目的地ID。

else

map[i][j]=0; //否則就是空地。

}

//如果人的前面是箱子,而箱子前面是目的地。

elseif (map[i][j+2]==3)

{

count++;

map[i][j+2]=7; //ID為(目的地ID()+箱子ID()=7),表示已經(jīng)把箱子推入了目的地。

//下面是對箱子原先位置的判斷,同上。

if(map[i][j+1]==7)

map[i][j+1]=9;

else

map[i][j+1]=6;

//下面是對人原先位置進(jìn)行判斷,同上。

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

map[i][j]=3;

else

map[i][j]=0;

}

}

//如果人前面是已經(jīng)進(jìn)入某目的地的箱子(ID=7)。

elseif(map[i][j+1]==7)

{

//如果人前面是已經(jīng)進(jìn)入某目的地的箱子,而箱子前面是空地。

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

{

count--;

map[i][j+2]=4; //把箱子重新推到空地上,ID=箱子ID+空地ID=4。

map[i][j+1]=9; //人自然而然的就站在了原先的目的地上了。

//下面是對人原先地進(jìn)行判斷,方法同上。

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

map[i][j]=3;

else

map[i][j]=0;

}

//如果人前面是已經(jīng)進(jìn)入某目的地的箱子,而箱子前面是另一目的地。

if(map[i][j+2]==3)

{

map[i][j+2]=7; //把箱子推入了另一目的地,自然,ID也應(yīng)是。

map[i][j+1]=9; //人站在了目的地上。

//下面是對人原先站立地進(jìn)行判斷,方法同上。

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

map[i][j]=3;

else

map[i][j]=0;

}

}

break;

}

if(count==8) //如果分?jǐn)?shù)達(dá)到分

{

system("CLS"); //清屏

draw_map(map);

break; //退出死循環(huán)

}

}

printf(" 恭喜你,過關(guān)了!! "); //過關(guān)提示

return 0;

}

void draw_map(int map[10][12])

{

for(i=0;i

{

for(j=0;j

{

switch(map[i][j])

{

case 0:

printf(" "); //數(shù)字代表道路

break;

case 1:

printf("#"); //數(shù)字代表墻壁

break;

case 2:

printf(" "); //數(shù)字是游戲邊框的空白部分

break;

case 3:

printf("!"); //數(shù)字代表目的地

break;

case 4:

printf("*"); //數(shù)字代表箱子

break;

case 7:

printf("$"); //數(shù)字代表箱子進(jìn)入目的地

break;

case 6:

printf("@"); //數(shù)字代表人

break;

case 9:

printf("@"); //數(shù)字代表人進(jìn)入目的地

break;

}

}

printf(" "); //分行輸出

}

}

總結(jié)

以上是生活随笔為你收集整理的android游戏编程之从零开始_纯C语言程序员写的编程新手入门基础小游戏之最炫酷推箱子...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 三上悠亚ed2k| 亚洲大尺度在线观看 | 日韩欧美在线免费观看 | 欧美久久久影院 | 日韩的一区二区 | 日本xxx在线播放 | 国产99久久九九精品无码 | 黄色三极片 | 韩国av一区二区三区 | 一级片视频免费 | 久久久亚洲精品视频 | 国产91久久精品一区二区 | 侵犯女教师一区二区三区 | 久久人妻少妇嫩草av无码专区 | 欧美体内谢she精2性欧美 | 国产欧美视频在线观看 | 人妻换人妻仑乱 | 女人性做爰24姿势视频 | wwwxxxx在线观看 | 激情xxxx | 欧美天堂视频 | 国产一二三区在线视频 | 黄色片在线观看免费 | 一级在线免费视频 | 国产欧美日韩专区发布 | 国产精品嫩草久久久久 | 国产男女无遮挡猛进猛出 | 涩涩精品| 这里只有精品视频在线 | 日本免费一区二区三区最新 | 日本一区二区在线免费观看 | 免费古装一级淫片潘金莲 | 丁香色欲久久久久久综合网 | www.国产一区二区 | 国产色一区 | 欧美激情自拍偷拍 | 亚洲美女在线观看 | 国产精品丝袜视频 | 青青青草视频 | 欧洲做受高潮免费看 | 国产成人在线观看免费 | 麻豆亚洲 | 一级免费毛片 | 日本精品成人 | 天堂在线播放 | 又骚又黄的视频 | 亚洲深夜福利 | 人妻一区二区三区四区五区 | 国内精品亚洲 | 91av视频在线免费观看 | 十八禁毛片 | 日本国产亚洲 | 国产成人 综合 亚洲 | 天天躁日日躁狠狠躁 | 夜间福利视频 | 国产3区| 九九热精品在线 | 91美女在线观看 | 中国国产bdsm紧缚捆绑 | 草草视频在线 | 18岁禁黄网站 | 国产精品成人一区二区 | www.com捏胸挤出奶 | 国产成人在线播放视频 | 9色在线视频| 在线观看免费的av | 本道综合精品 | 亚洲欧美综合色 | 欧美xxxx黑人xyx性爽 | 欧美黄色一级视频 | 国产精品久久久精品三级 | 黄床大片 | 国产suv精品一区 | 日本香蕉视频 | 色黄网站 | 神马午夜电影一区二区三区在线观看 | 成人福利影院 | 九九在线观看免费高清版 | av网站在线观看不卡 | 免费黄色美女网站 | 亚洲精品二区 | 在线观视频免费观看 | 男阳茎进女阳道视频大全 | 黑人与日本少妇高潮 | 日本人妻丰满熟妇久久久久久 | 少女国产免费观看 | 日本天堂在线观看 | 一级黄色片免费播放 | 特级黄色网 | 97久久久 | 亚洲精品aa | 精品国产污污免费网站入口 | 日韩一卡二卡三卡 | 无码专区久久综合久中文字幕 | 中文字字幕在线中文乱码电影 | 国产免费又粗又猛又爽 | 亚洲乱熟 | 秋霞视频在线 | 国产黄网在线观看 |