當前位置:
首頁 > 最新 > 推箱子源碼,有這個之後你也會寫遊戲哦

推箱子源碼,有這個之後你也會寫遊戲哦

#include

#include

#include

#include

#pragma comment(lib,"winmm.lib")

IMAGE blank, end, people, wall, box, darkbox;

int map[7][8] = { //1代表牆

{ 1, 1, 1, 1, 1, 1, 1, 1 },

{ 1, 0, 0, 1, 0, 0, 0, 1 }, //0-空地

{ 1, 0, 4, 7, 7, 0, 0, 1 }, //5-人

{ 1, 0, 0, 3, 3, 0, 1, 1 }, //4-箱子

{ 1, 0, 4, 7, 7, 0, 0, 1 }, //3-目的地

{ 1, 5, 0, 1, 0, 0, 0, 1 }, //7-(4+3)箱子在目的地中

{ 1, 1, 1, 1, 1, 1, 1, 1 } }; //隱藏 人+目的地(5 3) 8

void DrawMap();

void PlayGame();

int main()

{

initgraph(350, 400); //窗口

mciSendString(L"open ./image/你還要我怎樣.mp3 alias niangniang", 0, 0, 0);

mciSendString(L"play niangniang", 0, 0, 0);

loadimage(&blank,L"./image/blank.jpg",50,50); //1保存的地方 2路徑 3大小

loadimage(&end, L"./image/end.jpg", 50, 50);

loadimage(&people, L"./image/people.jpg", 50, 50);

loadimage(&wall, L"./image/wall.jpg", 50, 50);

loadimage(&box, L"./image/box.jpg", 50, 50);

loadimage(&darkbox, L"./image/darkbox.jpg", 50, 50);

while (1)

{

DrawMap();

PlayGame();

}

}

void DrawMap()

{

//列印二維數組

for (int i = 0; i

{

for (int j = 0; j

{

switch (map[i][j])

{

case 0:

putimage(i * 50, j * 50, &blank);

break;

case 1:

putimage(i * 50, j * 50, &wall);

break;

case 3:

putimage(i * 50, j * 50, &end);

break;

case 4:

putimage(i * 50, j * 50, &box);

break;

case 5:

putimage(i * 50, j * 50, &people);

break;

case 7:

putimage(i * 50, j * 50, &darkbox);

break;

case 8:

putimage(i * 50, j * 50, &people);

break;

}

}

printf("
");

}

}

//玩這個遊戲!!!

void PlayGame()

{

//3.改變那些元素------人周圍的元素.

/*遊戲規則 以上為例

1.人的前面是空地.

2.人的前面是目的地.

3.人的前面是箱子.(不一定)

3.1 箱子的前面是空地.

3.2 箱子的前面是目的地.

//以上是可以改變的情況 只要去改變數組就可以

//除此之外都是不可以改變的情況 什麼都不做就可以

**************************/

char ch;

//3.改變那些元素------人周圍的元素. 人

int r, c; //人的行和列

for (int i = 0; i

{

for (int j = 0; j

{

if (map[i][j] == 5 || map[i][j] == 8)

{

r = i;

c = j;

}

}

}

printf("人的位置: %d %d", r, c); //map[peoR-1][peoC]

ch = getch(); //接收鍵盤

switch (ch)

{

case "w": //上 上下左右鍵.

case 72: //鍵值 72 80 75 77

//1.人的前面是空地. //2.人的前面是目的地

if (map[r][c - 1] == 0 || map[r][c - 1] == 3)

{

map[r][c - 1] += 5;

map[r][c] -= 5;

}

//3.人的前面是箱子.(不一定)3.1 箱子的前面是空地.3.2 箱子的前面是目的地.

else if (map[r][c - 1] == 4 || map[r][c - 1] == 7) //人的前面是箱子

{

if (map[r][c - 2] == 0 || map[r][c - 2] == 3) //箱子的前面是空地或者目的地

{

map[r][c - 2] += 4;

map[r][c - 1] += 1;

map[r][c] -= 5;

}

}

break;

case "s":

case 80:

//1.人的前面是空地. //2.人的前面是目的地

if (map[r][c + 1] == 0 || map[r][c + 1] == 3)

{

map[r][c + 1] += 5;

map[r][c] -= 5;

}

//3.人的前面是箱子.(不一定)3.1 箱子的前面是空地.3.2 箱子的前面是目的地.

else if (map[r][c + 1] == 4 || map[r][c + 1] == 7) //人的前面是箱子

{

if (map[r][c + 2] == 0 || map[r][c + 2] == 3) //箱子的前面是空地或者目的地

{

map[r][c + 2] += 4;

map[r][c + 1] += 1;

map[r][c] -= 5;

}

}

break;

case "a":

case 75:

//1.人的前面是空地. //2.人的前面是目的地

if (map[r - 1][c] == 0 || map[r - 1][c] == 3)

{

map[r - 1][c] += 5;

map[r][c] -= 5;

}

//3.人的前面是箱子.(不一定)3.1 箱子的前面是空地.3.2 箱子的前面是目的地.

else if (map[r - 1][c] == 4 || map[r - 1][c] == 7) //人的前面是箱子

{

if (map[r - 2][c] == 0 || map[r - 2][c] == 3) //箱子的前面是空地或者目的地

{

map[r - 2][c] += 4;

map[r - 1][c] += 1;

map[r][c] -= 5;

}

}

break;

case "d":

case 77:

//1.人的前面是空地. //2.人的前面是目的地

if (map[r + 1][c] == 0 || map[r + 1][c] == 3)

{

map[r + 1][c] += 5;

map[r][c] -= 5;

}

//3.人的前面是箱子.(不一定)3.1 箱子的前面是空地.3.2 箱子的前面是目的地.

else if (map[r + 1][c] == 4 || map[r + 1][c] == 7) //人的前面是箱子

{

if (map[r + 2][c] == 0 || map[r + 2][c] == 3) //箱子的前面是空地或者目的地

{

map[r + 2][c] += 4;

map[r + 1][c] += 1;

map[r][c] -= 5;

}

}

break;

}

}


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 豆豆飛 的精彩文章:

TAG:豆豆飛 |