开发环境Dev C++ +win10

//author:James_Bobo
#include <stdio.h>
#include <stdlib.h>#define WIDTH 8
#define HEIGHT 8/**
*   0   表示空
*   1   表示墙
*   2   表示人
*   3   表示箱子
*   4   表示球
*   5   表示推到目的地的箱子
*/
int map[HEIGHT][WIDTH] = {{0, 0, 1, 1, 1, 0, 0, 0},{0, 0, 1, 4, 1, 0, 0, 0},{0, 0, 1, 0, 1, 1, 1, 1},{1, 1, 1, 3, 0, 3, 4, 1},{1, 4, 0, 3, 2, 1, 1, 1},{1, 1, 1, 1, 3, 1, 0, 0},{0, 0, 0, 1, 4, 1, 0, 0},{0, 0, 0, 1, 1, 1, 0, 0}
};//人的位置
int x, y;//箱子的个数
int boxs; //声明方法
void initData();
void drawMap();
void moveUp();
void moveLeft();
void moveDown();
void moveRight();int main(int argc, char *argv[]) {char direction;      //存储键盘按的方向 initData();while(1){system("cls");drawMap(); if(!boxs){break;}direction = getch();switch(direction){case 'w':moveUp();break;case 'a':moveLeft(); break;case 's':moveDown();break;case 'd':moveRight();break; }}  printf("恭喜你完成游戏!※");return 0;
}/**
*   初始化一些必须的数据
*/
void initData(){int i, j;printf("游戏加载中,请稍后........."); //获取人的位置for(i = 0; i < HEIGHT; i++){for(j = 0; j < WIDTH; j++){//遍历到2时,记录人的左边 if(map[i][j] == 2){x = j;y = i;} //遍历到3时,箱子的数目增加 if(map[i][j] == 3){boxs++;}}}
}/**
*   用于在控制台显示地图
*/
void drawMap(){int i, j;for(i = 0; i < WIDTH; i++){for(j = 0; j < HEIGHT; j++){switch(map[i][j]){case 0:printf("  ");break;case 1:printf("■");break;case 2:printf("♀");break;case 3:printf("◆");break;case 4:printf("●");break;case 5:printf("★");break; }}printf("\n");}
}/**
*   人物向上移动
*/
void moveUp(){//定义变量存放人物上方的坐标int ux, uy; //当上方没有元素时,直接return if(y == 0){return;}//记录上方坐标ux = x;uy = y - 1; //上方为已完成方块if(map[uy][ux] == 5){return;} //假设上方为墙,直接return if(map[uy][ux] == 1){return;}//假设上方为箱子if(map[uy][ux] == 3){//判断箱子上方是否为墙 if(map[uy - 1][ux] == 1){return;}//判断箱子上方是否为球if(map[uy - 1][ux] == 4){//将箱子上面内容赋值为5★ map[uy - 1][ux] = 5;map[uy][ux] = 0;//箱子的数目减1   boxs--; }else{//移动箱子map[uy - 1][ux] = 3;}}map[y][x] = 0;map[uy][ux] = 2;y = uy;
} /**
*   向左移动
*/
void moveLeft(){//定义变量存放人物左边的坐标int lx, ly; //当左边没有元素时,直接return   if(x == 0){return;}//记录左边坐标lx = x - 1;ly = y; //左边为已完成方块if(map[ly][lx] == 5){return;} //假设左边为墙,直接return if(map[ly][lx] == 1){return;}//假设左边为箱子if(map[ly][lx] == 3){//判断箱子左边是否为墙 if(map[ly][lx - 1] == 1){return;}//判断箱子左边是否为球if(map[ly][lx - 1] == 4){//将箱子左边内容赋值为5★ map[ly][lx - 1] = 5;map[ly][lx] = 0;//箱子的数目减1 boxs--; }else{//移动箱子 map[ly][lx - 1] = 3; }}map[y][x] = 0;map[ly][lx] = 2;x = lx;
}/**
*   向下移动
*/
void moveDown(){//定义变量存放人物下方的坐标int dx, dy; //当下方没有元素时,直接return   if(y == HEIGHT - 1){return;}//记录下方坐标dx = x;dy = y + 1; //下方为已完成方块if(map[dy][dx] == 5){return;} //假设下方为墙,直接return if(map[dy][dx] == 1){return;}//假设下方为箱子if(map[dy][dx] == 3){//判断箱子下方是否为墙 if(map[dy + 1][dx] == 1){return;}//判断箱子下方是否为球if(map[dy + 1][dx] == 4){//将箱子下面内容赋值为5★ map[dy + 1][dx] = 5;map[dy][dx] = 0;//箱子的数目减1 boxs--; }else{//移动箱子map[dy + 1][dx] = 3; }}map[y][x] = 0;map[dy][dx] = 2;y = dy;
}/*** 向右移动
*/
void moveRight(){//定义变量存放人物右边的坐标int rx, ry; //当右边没有元素时,直接return  if(x == WIDTH - 1){return;}//记录右边坐标rx = x + 1;ry = y; //右边为已完成方块if(map[ry][rx] == 5){return;} //假设右边为墙,直接return if(map[ry][rx] == 1){return;}//假设右边为箱子if(map[ry][rx] == 3){//判断箱子右边是否为墙 if(map[ry][rx + 1] == 1){return;}//判断箱子左边是否为球if(map[ry][rx + 1] == 4){//将箱子右边内容赋值为5★ map[ry][rx + 1] = 5;map[ry][rx] = 0;//箱子的数目减1 boxs--; }else{//移动箱子 map[ry][rx + 1] = 3; }}map[y][x] = 0;map[ry][rx] = 2;x = rx;
}
  • W:向上移动

  • S:向下移动

  • A:向左移动

  • D:向右移动

C语言实现推箱子game相关推荐

  1. c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目

    C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...

  2. c 语言推箱子vs,基于C语言实现推箱子游戏

    本文实例为大家分享了C语言实现推箱子游戏的具体代码,供大家参考,具体内容如下 代码在vs2013上测试运行. 思想: 1):地图用二维数组实现,箱子.墙壁.人等事物用不同的数字表示,遍历二维数组,遇到 ...

  3. C语言书写推箱子(坤坤版easyx库)

    C语言书写推箱子(坤坤版easyx库) 游戏效果的展示 运用的知识点(必看) 代码的讲解 游戏地图的实现 地图的初始化 地图图片的加载 地图图片的放置 人物和箱子的移动(重点) 游戏结束的判断 音乐的 ...

  4. 用C语言实现推箱子小游戏基础程序plus

    目录 设计一个简单的推箱子游戏 功能设计要求: 代码实现 数据定义头文件data_def.h 窗口设置头文件WindowsSet.h WindowsSet.cpp 上移函数 矩阵旋转函数 游戏帧 菜单 ...

  5. c语言程序推箱子详细设计,C语言实现推箱子项目

    本文实例为大家分享了C语言实现推箱子的具体代码,供大家参考,具体内容如下 项目展示 首先介绍结构板,结构版是图形版的逻辑基础: 结构版效果图: 地图: 二维数组储存地图,0代表空地,1代表墙,4代表箱 ...

  6. 算法c语言源码_C语言实现推箱子

    很多同学说C语言难学,不知道C语言学了能做什么,如果说不涉及嵌入式设备编程,我们可以用它来写游戏?是的,C语言能写的游戏有很多,推箱子,贪食蛇,等等 上学的时候老师说过,程序=数据结构+算法,真是这样 ...

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

    今天我来分享一道对于初学C语言的同学非常有启发作用的编程例题,是用C语言实现单张地图推箱子的小游戏. 这个游戏是基于Linux环境下编程的,所用工具为ubuntu.和gcc编译器. 首先推箱子的地图, ...

  8. 语言程序推箱子课设报告_学完C语言,可以去哪些应用领域工作?

    C语言是目前世界上流行.使用非常广泛的高级程序设计语言. 在TIOBE已公布2020年8月的编程语言排行榜.C语言依然保持排行第一! 前20名排行如下: C语言对操作系统和系统使用程序以及需要对硬件进 ...

  9. c语言推箱子游戏实习报告,用C语言编写推箱子游戏

    本文实例为大家分享了C语言推箱子游戏的具体实现代码,供大家参考,具体内容如下 #include #include #include #include //行和列 #define ROW 10 #def ...

  10. 推箱子完整c语言程序,C语言实现推箱子游戏

    每天学习一点点,每天容易一点点.一个简单的C语言程序,用来复习c语言,代码通俗易懂.有什么问题望各位不吝赐教. 本文用最简单的C语言语句写个推箱子的程序,分享给大家: /*************** ...

最新文章

  1. 《More Effective C++》读书笔记
  2. c++设置单元格填充色_更改数据后单元格自动填充颜色,从此以后再也不用核对数据了...
  3. python中函数的括号使用
  4. JavaScript学习笔记(4)
  5. c/c++反混淆方法
  6. spring+quartz 完整例子
  7. halcon--1D measuring
  8. jquery parsley ajax,用户体验超棒且功能强大使用简单的javascript表单验证 - Parsley.js...
  9. 为什么网格布局不显示java_java – 在GridLayout中不显示组件的FlowLayout?
  10. PocketLibs(3)—— 进度条 NProgress
  11. java ee 容器_javaee中web的四大容器简介
  12. visual studio 代码提示插件_程序员请收好:10个非常有用的Visual Studio Code插件
  13. Postman API 开发的协作平台
  14. 网络安全管理规章制度
  15. 【LKJ】LKJ2000型记录装置显示界面说明
  16. js获取当前页面url信息
  17. 计算机系统定期验证,计算机化系统验证基本原则
  18. Google Ads关键词不展示原因及解决方案
  19. 无线网络经常掉线的原因以及网络的设置
  20. 你都为美白缴过哪些智商税? | Alfred数据室

热门文章

  1. 共享内存shared pool (3):Library cache
  2. [golang 易犯错误] golang 局部变量初始化:=的陷阱
  3. 一个研究生毕业以后的人生规划(ZT)
  4. 实践:VB创建Com组件 在Asp以及.Net中调用
  5. 26种土的掉渣的东西,看你有多少
  6. 【C面试】一道简单的C语言面试题的思考——打印星阵
  7. 王乐园 php_见到海贼王主题乐园的雕像,感觉认知回不去了,索隆是认真的?...
  8. 机器学习:matlab实现异常检测
  9. java理论知识看了忘_Java基础知识点总结--从细节再看Java(一)
  10. mongodb 查多个不等于_MongoDB增删查