C_Day08_pro.zip

  • 薛之谦、
    了解作者
  • C/C++
    开发工具
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2021-04-10 00:05
    上传日期
简单的推箱子游戏,可以实现上下左右,推动箱子也会有不同图案展示,无聊来试试吧
C_Day08_pro.zip
  • C_Day08_pro.c
    4.8KB
内容介绍
#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; }
评论
    相关推荐
    • 推箱子.rar
      简单的推箱子小游戏,怀恋儿时单纯的游戏,让你爱不释手
    • 推箱子.zip
      一个能够实现实现推箱子的小游戏,做的比较简单
    • 推箱子.zip
      简单的推箱子 适合初学者 毕竟只有一关,并且没有关卡切换,因为我也是第一次做这个,望理解
    • c语言游戏编程推箱子.zip
      c语言课程设计案例精编的推箱子源码及程序
    • 推箱子游戏
      这个推箱子游戏是用Java开发的,其中主要涉及Frame和JFrame等,还有Java中的监听机制,对于初学Java的人来说是一个不错的练习项目,能够很好的帮助你掌握Java基础,希望你们喜欢。
    • 3d推箱子
      我做的3D推箱子游戏,希望大家指点指点。 这回增加了地图编辑器,可随意设计关卡。 我的E妹子 :bull_liang@sina.com。 my home : milkbull.myrice.com 
    • 我爱推箱子
      用Java写的一个推箱子小游戏,功能比较全面,并具有背景音乐等。涉及到Swing的制作,图片的处理,声音处理,IO编程,线程控制等Java技术。代 码清晰易懂,并有详细的注释,是学习Java界面编程的良好资料。
    • 推箱子游戏.rar
      基于 C# 开发的 推箱子游戏闯关模式。
    • 推箱子.zip
      推箱子小游戏制作,推箱子,C语言,电脑小游戏
    • 推箱子.zip
      经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,...