【C语言经典算法100道实战题】适合具备C语言基础语法的同学学习,提高编写程序的逻辑思维能力和算法设计能力专门精心设计。100个经典的算法供大家练习及配套对应的录播视频。为我们今后学习其它的编程语言和软件开发打下坚实的基础,让你在编码道路上如鱼得水、如虎添翼等,祝同学学习进步、快乐开心的学习编程,感谢大家的全力支持。

各位可爱的同学们好,现在已经为大家准备好超级精典的C语言、C++语言、C语言经典算法100例、数据结构算法(C语言版)、Windows高级编程(上下册)项目实战课程,希望可以帮助大家提高编程实战水平,点击链接就可以学习啦,祝大家学习开心,天天进步、前程似锦!!!

【C语言经典算法100道实战题】点击链接即可在线学习:

C语言经典算法100道实战题--C/C++视频教程-后端开发-CSDN程序员研修院

全套精品学习视频和程序源码代码已更新(第001讲--第100讲),学习目录参考如下:

一、经典《推箱子游戏》运行效果

二、开发环境安装与图形库配置

我的百度网盘下载地址:
链接:https://pan.baidu.com/s/1iIfIYIl55-sHLh51m0ykXQ 
提取码:ebyh

备注:【如下这一步主要是看你的电脑安装那个编译器版本的工具就直接点击安装就可以】

三、【推箱子游戏源代码】

#include "stdafx.h"

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
//背景,墙,空地,箱子,人物,目的地,箱子和目的地在一起
IMAGE backImg, wall, blank, box, people, end, dbox;
int nScore;
int g_nBox;
const int rows = 7, cols = 8;
int map[7][8] =
{
    { 1, 1, 1, 1, 1, 1, 1, 1 },
    { 1, 3, 1, 3, 0, 1, 3, 1 },
    { 1, 0, 0, 4, 4, 0, 0, 1 },
    { 1, 4, 0, 5, 0, 0, 0, 1 },
    { 1, 0, 0, 4, 4, 0, 0, 1 },
    { 1, 3, 0, 0, 0, 0, 3, 1 },
    { 1, 1, 1, 1, 1, 1, 1, 1 }
};

//判断目标地点数
int checkEndCount();

//加载资源
void LoadImg()
{
    loadimage(&blank, "blank.jpg", 72, 72);
    loadimage(&wall, "wall.jpg", 72, 72);
    loadimage(&box, "box.jpg", 72, 72);
    loadimage(&end, "end.jpg", 72, 72);
    loadimage(&people, "people.jpg", 72, 72);
    loadimage(&dbox, "dbox.jpg", 72, 72);
}

//初始化游戏界面--------SWITCH处理地图
void InitGame()
{
    nScore = 0;
    g_nBox = checkEndCount();
    //求出转换坐标
    int x, y;
    //根据地图中值----贴图
    for (int i = 0; i <7; i++)
    {
        for (int j = 0; j <8; j++)
        {
            //求出X,Y坐标
            x = j * 72;
            y = i * 72;
            switch (map[i][j])
            {
            case 0://空地
                putimage(x, y, &blank);
                break;
            case 1:
                putimage(x, y, &wall);
                break;
            case 3:
                putimage(x, y, &end);
                break;
            case 4:
                putimage(x, y, &box);
                break;
            case 5:
                putimage(x, y, &people);
                break;
            case 7:
                putimage(x, y, &dbox);
                break;
            case 8:
                putimage(x, y, &people);
                break;
            }

}

}

}

//玩游戏-----按键处理-----抽象到具体
//按键处理---当作字符处理-----ASCII码
//上下左右---W S A D
//方向键-----上:72  下:80  左:75  右:77
void PlayGame()
{
    char cuSer;
    int i = 0, j = 0;
    while (1)
    {
        //定位
        for (i = 0; i < 7; i++)
        {
            for (j = 0; j < 8; j++)
            {
                if (map[i][j] == 5 || map[i][j] == 8)
                    break;
            }
            if (map[i][j] == 5 || map[i][j] == 8)
                break;
        }
        InitGame();
        cuSer = _getch();
        switch (cuSer)
        {
            //左边
        case 75:
        case 'a':
        case 'A':
            //判断是否能走   前面空地+目的地 或箱子隔壁是空地或目的地
            //1.人前面是空地或目的地
            if (map[i][j - 1] == 0 || map[i][j - 1] == 3)
            {
                map[i][j] = map[i][j] - 5;
                map[i][j - 1] += 5;
            }
            //2.人的前面是箱子,箱子前面是目的地或空地,箱子和目的地重合
            else if (map[i][j - 1] == 4 || map[i][j - 1] == 7)
            {
                //箱子前面是空地或目的地
                if (map[i][j - 2] == 0 || map[i][j - 2] == 3)
                {
                    map[i][j - 2] += 4;
                    map[i][j - 1] += 1;  //5-4  人物(5)来了,箱子(4)走了
                    map[i][j] -= 5;
                    //箱子前面是目的地    分数+1
                    if (map[i][j - 2] == 7)
                    {
                        nScore += 1;
                    }
                }
            }
            break;
            //右边
        case 77:
        case 'd':
        case 'D':
            //判断是否能走   前面空地+目的地 或箱子隔壁是空地或目的地
            //1.人前面是空地或目的地
            if (map[i][j + 1] == 0 || map[i][j + 1] == 3)
            {
                map[i][j] = map[i][j] - 5;
                map[i][j + 1] += 5;
            }
            //2.人的前面是箱子,箱子前面是目的地或空地,箱子和目的地重合
            else if (map[i][j + 1] == 4 || map[i][j + 1] == 7)
            {
                //箱子前面是空地或目的地
                if (map[i][j + 2] == 0 || map[i][j + 2] == 3)
                {
                    map[i][j + 2] += 4;
                    map[i][j + 1] += 1;  //5-4  人物(5)来了,箱子(4)走了
                    map[i][j] -= 5;
                    //箱子前面是目的地    分数+1
                    if (map[i][j + 2] == 7)
                    {
                        nScore += 1;
                    }
                }
            }
            break;
            //上边;
        case 72:
        case 'w':
        case 'W':
            //判断是否能走   前面空地+目的地 或箱子隔壁是空地或目的地
            //1.人前面是空地或目的地
            if (map[i - 1][j] == 0 || map[i - 1][j] == 3)
            {
                map[i][j] = map[i][j] - 5;
                map[i - 1][j] += 5;
            }
            //2.人的前面是箱子,箱子前面是目的地或空地,箱子和目的地重合
            else if (map[i - 1][j] == 4 || map[i - 1][j] == 7)
            {
                //箱子前面是空地或目的地
                if (map[i - 2][j] == 0 || map[i - 2][j] == 3)
                {
                    map[i - 2][j] += 4;
                    map[i - 1][j] += 1;  //5-4  人物(5)来了,箱子(4)走了
                    map[i][j] -= 5;
                    //箱子前面是目的地    分数+1
                    if (map[i - 2][j] == 7)
                    {
                        nScore += 1;
                    }
                }
            }
            break;
            //下边
        case 80:
        case 's':
        case 'S':
            //判断是否能走   前面空地+目的地 或箱子隔壁是空地或目的地
            //1.人前面是空地或目的地
            if (map[i + 1][j] == 0 || map[i + 1][j] == 3)
            {
                map[i][j] = map[i][j] - 5;
                map[i + 1][j] += 5;
            }
            //2.人的前面是箱子,箱子前面是目的地或空地,箱子和目的地重合
            else if (map[i + 1][j] == 4 || map[i + 1][j] == 7)
            {
                //箱子前面是空地或目的地
                if (map[i + 2][j] == 0 || map[i + 2][j] == 3)
                {
                    map[i + 2][j] += 4;
                    map[i + 1][j] += 1;  //5-4  人物(5)来了,箱子(4)走了
                    map[i][j] -= 5;
                    //箱子前面是目的地    分数+1
                    if (map[i + 2][j] == 7)
                    {
                        nScore += 1;
                    }
                }
            }
            break;
        }
        if (nScore >= g_nBox)
        {
            InitGame();
            setbkmode(TRANSPARENT);
            setcolor(BLACK);
            //设置前景色为黑色
            outtextxy(150, 250, "恭喜您,顺利通关,再接再历!");
            break;
        }
    }

}

//判断目标地点数
int checkEndCount()
{
   
    return nBox;
}

int _tmain(int argc, _TCHAR* argv[])
{
    LoadImg();
    initgraph(72 * cols, 72 * rows);
    PlayGame();
    _getch();

closegraph();

return 0;
}

C语言开发《推箱子游戏》,亲自手把手教会大家相关推荐

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

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

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

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

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

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

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

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

  5. C语言之推箱子游戏代码

    每天学习一点点,每天容易一点点.一个简单的C语言程序,用来复习c语言,代码通俗易懂.有什么问题望各位不吝赐教. /******************************************* ...

  6. Cocos Creator:快速开发推箱子游戏

    本文首发于公众号: 一枚小工(caizj_cn) Cocos 已获得转载授权! 作者:蒲公英,开发工程师,7 年 Cocos 引擎使用经验. 游戏总共分为 4 个功能模块: 开始游戏(menuLaye ...

  7. C语言开发推箱子游戏项目实战

    C语言能做什么? 相信学过C语言的各位都会有一个疑问,我们学了C语言到底可以做什么?或许有人会说做系统开发.驱动开发等等,但是这个感觉离我们好远,甚至于我们学C语言都仅仅是为了用程序做数学题,要不就是 ...

  8. c语言语音控制游戏文献,C语言课程设计-基于C语言推箱子游戏设计-毕业论文文献.doc...

    gd工程职业技术学院毕业论文 基于C语言的推箱子游戏设计 Design of the push box Based on Combined Language 作者姓名: 学科专业: 应用电子技术 学院 ...

  9. 一文教你使用java开发一款推箱子游戏

    导读:社会在进步,人们生活质量也在日益提高.高强度的压力也接踵而来.社会中急需出现新的有效方式来缓解人们的压力.此次设计符合了社会需求,Java推箱子游戏可以让人们在闲暇之余,体验游戏的乐趣.具有操作 ...

最新文章

  1. 微软网站打不开_强烈建议收藏,微软出了自家「协作白板」应用
  2. 【深度学习】何恺明经典之作—2009 CVPR Best Paper | Dark Channel Prior
  3. CommandLineRunner与ApplicationRunner接口的使用及源码解析
  4. 【C语言】单链表的相关热点面试题(包括:从尾到头打印,逆置,冒泡,寻找中间节点,倒数k节点)
  5. 苹果应用上架遇到的问题(2017年4月27日)
  6. 收藏 | 可能是最详尽的PyTorch动态图解析
  7. 小白一枚。。。记录下这种构造函数
  8. Log4net PatternLayout 参数
  9. java文件上传中间件_maven工程 java 实现文件上传 SSM ajax异步请求上传
  10. 超算与湍流的直接数值模拟
  11. 顶刊TPAMI 2021!南开大学提出深度霍夫变换:语义线检测新方法
  12. linux文件搜索关键字并显示前后10行
  13. ZF GE5060F47/153
  14. socket是一个编程接口
  15. 移植华为LiteOS
  16. zipkin学习--01--理论
  17. VR头盔(眼镜)光学原理解析
  18. Vue:如何保持导航栏的高亮状态
  19. 【LeetCode】【队列】剑指 Offer 59 - I. 滑动窗口的最大值 思路解析和代码
  20. Abp 业务异常源码解读

热门文章

  1. NDK开发系列第一章
  2. 4 个快速的 Python 编译器
  3. 名词解释atm网络_网络名词解释
  4. 飞凌TE6410屏幕校准步骤
  5. 【项目实战-MATLAB】:基于EMD的心音信号特征提取
  6. 阿里云ecs安装mysql数据库途中遇到的坑
  7. 9与4日晚,冒雨参加3W咖啡的APP广告-流量变现活动
  8. Python进阶语法笔记(1)
  9. 安卓工控主板通信接口有哪些呢?
  10. LTE的下行同步、上行同步