首页 > 编程知识 正文

c语言项目开发实战入门(推箱子代码)

时间:2023-05-06 05:20:00 阅读:82329 作者:2985

本文主要详细介绍了c语言实现—— 《推箱子项目》。 示例代码介绍得非常详细,有一定的参考价值。 有兴趣的伙伴请作为参考。

本项目结合了分支、循环、数组的结合,对逻辑也有一定的要求,但是这些都在我们项目的源代码中有注释,大家在那个时候请不要无视注释。 评论有助于理解代码,特别是c语言的初学者。

本项目的编译环境: VS2019/VS2013;

插件:图形库插件easyX;

效果图展示

源代码示例

1.头文件

# #包括stdio.h

# #包括stdlib.h

# #包含图形. h//easyx图形库标头

# #包括连续号h

2 .级别设定(在此定义三维数组。 三维数组可以理解为多个二维数组。

int cas=0;

图像图像图像0、图像1、图像2、图像3、图像4、图像5;

int地图88=

{

0,0,1,1,1,0,0,0,

0,0,1,3,1,0,0,0,

0,0,1,0,1,1,1,1,

一、一、一、四、零、四、三、一、

一、三、零、四、五、一、一、一、

一,一,一,一,四,一,0,0,

0,0,0,1,3,1,0,0,

0,0,0,1,1,1,0,0,

0,0,1,1,1,0,0,0,

0,0,1,3,1,0,0,0,

0,0,1,0,1,1,1,1,

一、一、一、四、零、四、三、一、

一、三、零、四、五、一、一、一、

一,一,一,一,四,一,0,0,

0,0,0,1,3,1,0,0,

0,0,0,1,1,1,0,0,

0,0,1,1,1,0,0,0,

0,0,1,3,1,0,0,0,

0,0,1,0,1,1,1,1,

一、一、一、四、零、四、三、一、

一、三、零、四、五、一、一、一、

一,一,一,一,四,一,0,0,

0,0,0,1,3,1,0,0,

0,0,0,1,1,1,0,0,

(;

3 .绘制推动箱的地图

三维绘制地图() )

{

for (英制=0; i 8; I ) )

{

for(intj=0; j 8; j )日本

{

int x=j * 64;

int y=i * 64;

sitch (地图)

{

case 0: //空地

脉冲(x,y,img0);

//printf (' );

布莱克;

case 1: //墙

脉冲(x,y,img1);

//printf ((() );

布莱克;

case 3: //目的地:篮球

脉冲(x,y,img2);

//printf (' );

布莱克;

case 4: //箱:篮球

脉冲(x,y,img3 );

//printf (' );

布莱克;

case 5: //人: CXK

case 8:

脉冲(x,y,img4);

//printf (人);

布莱克;

case 7: //将箱子推进目的地:鸡

脉冲(x,y,img5 );

//printf (();

布莱克;

}

}

打印机((n ) );

}

}

4 .游戏的过程(这部分是整个游戏的核心部分,也是最难理解的部分,所以大家必须仔细解读)。

void playGame (

{

//键操作:游戏进程

//找人:找CXK :遍历二维数组---元素=5||8

英特尔,j;

for(I=0; i 8; I ) )

{

for(j=0; j 8; j )日本

{

//找人

if (地图I==5|地图I==8)

{

布莱克; //break只能跳出一楼的循环

}

}

//找人

if (地图I==5|地图I==8)

{

布莱克; //break只能跳出一楼的循环

}

}

//已经找到人了

//用键盘操作

人物 char userKey = _getch(); switch (userKey) { //那几个键移动:wsad 箭头:小键盘 键码值:72 80 75 77 case 'w': case 'W': case 72: //移动的原理:改变二维数组元素的值 //移动的步骤: //1.先让人移动 map[cas][i-1][j]=0||map[cas][i-1][j]=3 if (map[cas][i - 1][j] == 0 || map[cas][i - 1][j] == 3) { //人移动的原理:元素的值 map[cas][i][j] -= 5; map[cas][i - 1][j] += 5; } //2.推箱子,让箱子移动 //先找到(固定)箱子 if (map[cas][i - 1][j] == 4 || map[cas][i - 1][j] == 7) { //篮球,箱子移动的条件 if (map[cas][i - 2][j] == 0 || map[cas][i - 2][j] == 3) { //推箱子的原理:移动元素值 map[cas][i][j] -= 5; map[cas][i - 1][j] += 5; map[cas][i - 1][j] -= 4; map[cas][i - 2][j] += 4; } } break; case 's': case 'S': case 80: //1.先让人移动 map[cas][i-1][j]=0||map[cas][i-1][j]=3 if (map[cas][i + 1][j] == 0 || map[cas][i + 1][j] == 3) { //人移动的原理:元素的值 map[cas][i][j] -= 5; map[cas][i + 1][j] += 5; } //2.推箱子,让箱子移动 //先找到(固定)箱子 if (map[cas][i + 1][j] == 4 || map[cas][i + 1][j] == 7) { //篮球,箱子移动的条件 if (map[cas][i + 2][j] == 0 || map[cas][i + 2][j] == 3) { //推箱子的原理:移动元素值 map[cas][i][j] -= 5; map[cas][i + 1][j] += 5; map[cas][i + 1][j] -= 4; map[cas][i + 2][j] += 4; } } break; case 'a': case 'A': case 75: //1.先让人移动 map[cas][i-1][j]=0||map[cas][i-1][j]=3 if (map[cas][i][j - 1] == 0 || map[cas][i][j - 1] == 3) { //人移动的原理:元素的值 map[cas][i][j] -= 5; map[cas][i][j - 1] += 5; } //2.推箱子,让箱子移动 //先找到(固定)箱子 if (map[cas][i][j - 1] == 4 || map[cas][i][j - 1] == 7) { //篮球,箱子移动的条件 if (map[cas][i][j - 2] == 0 || map[cas][i][j - 2] == 3) { //推箱子的原理:移动元素值 map[cas][i][j] -= 5; map[cas][i][j - 1] += 5; map[cas][i][j - 1] -= 4; map[cas][i][j - 2] += 4; } } break; case 'd': case 'D': case 77: //1.先让人移动 map[cas][i-1][j]=0||map[cas][i-1][j]=3 if (map[cas][i][j + 1] == 0 || map[cas][i][j + 1] == 3) { //人移动的原理:元素的值 map[cas][i][j] -= 5; map[cas][i][j + 1] += 5; } //2.推箱子,让箱子移动 //先找到(固定)箱子 if (map[cas][i][j + 1] == 4 || map[cas][i][j + 1] == 7) { //篮球,箱子移动的条件 if (map[cas][i][j + 2] == 0 || map[cas][i][j + 2] == 3) { //推箱子的原理:移动元素值 map[cas][i][j] -= 5; map[cas][i][j + 1] += 5; map[cas][i][j + 1] -= 4; map[cas][i][j + 2] += 4; } } break; } } int gameOver() { int flag = 0; //遍历二维数组元素-->目的地:球框 for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (map[cas][i][j] == 3) { flag = 1; } } } return flag; }

5.主函数部分

int main() { loadimage(&img0, L"0.bmp"); //64*64 loadimage(&img1, L"1.bmp"); //64*64 loadimage(&img2, L"3.bmp"); //64*64 loadimage(&img3, L"4.bmp"); //64*64 loadimage(&img4, L"5.bmp"); //64*64 loadimage(&img5, L"7.bmp"); //64*64 initgraph(64 * 8, 64 * 8); while (1) { drawmap(); playGame(); if (!gameOver()) { cas++; if (cas == 3) break; } system("cls"); } //initgraph(600,600);//窗口:宽度*高度 ////贴图:基本贴图技术 ////1.定义图片变量 //IMAGE img; ////2.加载图片 //loadimage(&img, L"timg.jpg", 600, 600); ////3.显示图片 //putimage(0, 0, &img); while (1); //防止闪屏 closegraph(); //关闭窗口 return 0; }

整个项目的源码已经分享,这是一个三关完善的推箱子游戏,大家如果有兴趣可以自己去试试做更多的关卡来玩!

如果学习的过程中有什么问题,以及本项目有什么不懂的地方,都可以来找我交流,我来帮你!

那么今天的分享就到这里了,后续会更新更多精彩项目的,大家要好好学C语言C++哟~

写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

编程学习书籍分享:

编程学习视频分享:

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。