广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++基于easyx实现迷宫游戏
  • 301
分享到

C++基于easyx实现迷宫游戏

2024-04-02 19:04:59 301人浏览 独家记忆
摘要

本文实例为大家分享了c++基于easyx实现迷宫游戏的具体代码,供大家参考,具体内容如下 #define _CRT_SECURE_NO_DEPRECATEd #define _C

本文实例为大家分享了c++基于easyx实现迷宫游戏的具体代码,供大家参考,具体内容如下


#define _CRT_SECURE_NO_DEPRECATEd
#define _CRT_SECURE_NO_WARNINGS

#include<graphics.h>
#include<coNIO.h>
#include<windows.h>
#include<stdio.h>
#define LEFT            0//方向
#define RIGHT            1
#define UP            0//由于当前素材只有左右二个方向,所以上下共用了左右方向
#define DOWN            1

#define ROAD 0//地图元素类型
#define WALL 1

#define ENTERX 1//入口  x列,y行
#define ENTERY 0

#define OUTX 11 //出口 x列,y行
#define OUTY 8

#define HUMANWIDTH        75
#define HUMANHEIGHT        130

#define WIDTH            12//地图大小
#define HEIGHT            10

IMAGE img_human;
IMAGE img_human_mask;
IMAGE img_wall;
IMAGE img_road;

int moveNum[2] = { 0 };//当前动作序号
int direction;//上下左右四个方向
int human_witdh;
int human_height;
int x, y;//x列数,y行数

int map[HEIGHT][WIDTH] = {//地图
    { 1,1,1,1,1,1,1,1,1,1,1,1 },
    { 0,0,0,1,1,1,1,1,1,1,1,1 },
    { 1,1,0,1,1,1,1,0,1,1,1,1 },
    { 1,1,0,0,1,1,1,0,1,1,1,1 },
    { 1,1,1,0,1,1,1,0,1,1,1,1 },
    { 1,1,1,0,1,1,1,0,1,1,1,1 },
    { 1,1,1,0,1,1,1,0,1,1,1,1 },
    { 1,1,1,0,0,0,0,0,0,0,1,1 },
    { 1,1,1,1,1,1,1,1,1,0,0,0 },
    { 1,1,1,1,1,1,1,1,1,1,1,1 },
};

void showbk() {//绘制背景
    for (int j = 0; j < WIDTH; j++)
        for (int i = 0; i < HEIGHT; i++)
            if (map[i][j] == WALL)
                putimage(j * img_wall.getwidth(), i * img_wall.getheight(), img_wall.getwidth(), img_wall.getheight(), &img_wall, 0, 0, SRCCOPY);
            else putimage(j * img_wall.getwidth(), i * img_wall.getheight(), img_wall.getwidth(), img_wall.getheight(), &img_road, 0, 0, SRCCOPY);

}
void start()//初始化
{
    loadimage(&img_wall, _T(".\\walls.gif"));
    initgraph(img_wall.getwidth() * WIDTH, img_wall.getheight() * HEIGHT);
    loadimage(&img_human, _T(".\\行走素材图.jpg"));
    loadimage(&img_human_mask,_T( ".\\行走素材图mask.jpg"));

    human_witdh = 75;//img_human.getwidth()/4;
    human_height = 130;//img_human.getheight()/2;
                       //putimage(x,y,HUMANWIDTH,HUMANHEIGHT,&img_human,0,0);
    loadimage(&img_road, _T(".\\road.gif"));
    x = 0;
    y = 1;

}


void updateWithoutInput()
{

}
void drawRole(int x0, int y0)//绘制前景
{
    putimage((x - x0 / 4.0) * img_wall.getwidth() - 7,
        (y - y0 / 4.0) * img_wall.getheight() - 70,
        human_witdh, human_height, &img_human_mask, moveNum[direction] * human_witdh, direction * (human_height - 10), NOTSRCERASE);
    putimage((x - x0 / 4.0) * img_wall.getwidth() - 7,
        (y - y0 / 4.0) * img_wall.getheight() - 70,
        human_witdh, human_height, &img_human, moveNum[direction] * human_witdh, direction * (human_height - 10), SRCINVERT);
}
void show(int x0, int y0)
{

    showbk();
    //clearrectangle(x,y,x+human_witdh,y+human_height);    
    //先显示背景
    //准备好遮罩MASK图和源图,三元光栅操作
    drawRole(x0, y0);
    FlushBatchDraw();
    Sleep(50);
}
void readRecordFile()
{//读取存档
    FILE* fp;
    int temp;
    fp = fopen(".\\record.dat", "r");
    fscanf(fp, "%d %d", &x, &y);
    fclose(fp);

}
void WriteRecordFile()
{//保存存档
    FILE* fp;
    int temp;
    fp = fopen(".\\record.dat", "w");
    fprintf(fp, "%d %d ", x, y);
    fclose(fp);
}
void updateWithInput()
{//增加过度
    char input;
    int olddirection = direction;
    int oldx = x;
    int oldy = y;
    
    if (_kbhit())
    {

        input = _getch();
        switch (input)
        {
        case 'a':direction = LEFT;        if (map[y][x - 1] == ROAD) x--; moveNum[direction] = 0; break;
        case 'd':direction = RIGHT;        if (map[y][x + 1] == ROAD) x++; moveNum[direction] = 0; break;
        case 'w':direction = UP;        if (map[y - 1][x] == ROAD) y--; moveNum[direction] = 0; break;
        case 's':direction = DOWN;        if (map[y + 1][x] == ROAD) y++; moveNum[direction] = 0; break;
        case 'W':WriteRecordFile(); break;
        case 'R':readRecordFile(); break;
        }
        if (x != oldx || y != oldy)
            for (int i = 4; i > 0; i--)
            {//过渡动画
                show((x - oldx) * i, (y - oldy) * i);
                moveNum[direction]++;//动作序号,一个完整动作分解为四个姿势
                moveNum[direction] %= 4;
            }
    }
}


int main()
{
    start();
    BeginBatchDraw();
    while (1) {
        show(0, 0);
        Sleep(50);
        if (x == OUTX && y == OUTY)//到达了出口
        {
            outtextxy(0, 0, _T("reach target!"));
            Sleep(50);
            break;
        }
        updateWithoutInput();
        updateWithInput();
    }
    EndBatchDraw();
    _getch();
    closegraph();
    return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C++基于easyx实现迷宫游戏

本文链接: https://www.lsjlt.com/news/148531.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++基于easyx实现迷宫游戏
    本文实例为大家分享了C++基于easyx实现迷宫游戏的具体代码,供大家参考,具体内容如下 #define _CRT_SECURE_NO_DEPRECATEd #define _C...
    99+
    2022-11-13
  • C++基于easyx怎么实现迷宫游戏
    本篇内容介绍了“C++基于easyx怎么实现迷宫游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果:#define _CRT_...
    99+
    2023-06-30
  • 基于C语言实现迷宫游戏的示例代码
    目录C语言迷宫游戏定义地图打印地图方法一打印地图方法二定义起点和终点位置实现读取按键实现小球下向下移动一步总结小球移动规律实现重新打印地图实现连续移动实现小球下向上下左右移动实现小球...
    99+
    2022-11-13
  • C++基于EasyX库实现拼图小游戏
    用C++的EasyX库做的拼图小游戏,供大家参考,具体内容如下   记录一下自己做的第一个项目,还有一些改进空间QWQ,可以支持难度升级,但是通关判断似乎有点...
    99+
    2022-11-12
  • Java实现的迷宫游戏
    目录完整项目地址:软件总体框架软件各模块介绍参数设置模块按钮功能模块迷宫主界面模块迷宫整体界面软件设计方案软件相关原理说明迷宫生成算法Depth First Search Algor...
    99+
    2022-11-12
  • 基于Unity3D实现3D迷宫小游戏的示例代码
    目录一、前言二、构思三、正式开发3-1、搭建场景3-2、设置出入口3-3、添加角色3-4、实现角色移动3-5、出入口逻辑四、总结一、前言 闲来无事,从零开始整个《3D迷宫》小游戏。 ...
    99+
    2022-11-13
  • Java递归实现迷宫游戏
    目录1.问题由来2.问题的描述3.思路分析4.代码实现5.结果输出1.问题由来 迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒中设置了许多墙...
    99+
    2022-11-12
  • Java怎么实现迷宫游戏
    这篇文章给大家分享的是有关Java怎么实现迷宫游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列:有序,可重...
    99+
    2023-06-14
  • C++基于easyx图形库实现打砖块游戏
    本文实例为大家分享了C++基于easyx实现打砖块的具体代码,供大家参考,具体内容如下 代码: #include <graphics.h> #include <c...
    99+
    2022-11-13
  • C++基于EasyX库如何实现拼图小游戏
    这篇“C++基于EasyX库如何实现拼图小游戏”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++基于EasyX库如何实现拼...
    99+
    2023-06-19
  • C++基于EasyX框架实现飞机大战小游戏
    正式使用Easyx之前,你需要先安装他!! EasyX 2022 版 (2022-9-1 更新) - EasyX 选择合适的版本安装 安装结束后就可以开始敲代码啦! 这里作者使用的...
    99+
    2023-01-06
    C++ EasyX飞机大战游戏 C++ 飞机大战游戏 C++ EasyX游戏
  • C语言基于EasyX如何实现贪吃蛇游戏
    本篇内容主要讲解“C语言基于EasyX如何实现贪吃蛇游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言基于EasyX如何实现贪吃蛇游戏”吧!成品展示:实现思路:贪吃蛇的实现思路并不复杂,由...
    99+
    2023-07-02
  • 怎么用html5实现迷宫游戏
    这篇文章主要介绍“怎么用html5实现迷宫游戏”,在日常操作中,相信很多人在怎么用html5实现迷宫游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用html5实现迷宫...
    99+
    2022-10-19
  • Pygame实战之迷宫游戏的实现
    目录导语正文1)效果展示2)主程序导语 哈喽!哈喽我是栗子,每日更新来啦—— “玩迷宫游戏长大的我们,欣慰地看到,下一代仍热爱着这个经典游戏。 如...
    99+
    2022-11-13
  • Java实现经典游戏复杂迷宫
    目录前言主要设计功能截图代码实现总结前言 人类建造迷宫已有5000年的历史。在世界的不同文化发展时期,这些奇特的建筑物始终吸引人们沿着弯弯曲曲、困难重重的小路吃力地行走,寻找真相。迷...
    99+
    2022-11-13
  • Python如何实现过迷宫小游戏
    小编给大家分享一下Python如何实现过迷宫小游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!开发工具Python版本: 3.6.4相关模块:pygame模块;以及一些Python自带的模块。环境搭建安装Python并添...
    99+
    2023-06-22
  • Java递归怎样实现迷宫游戏
    本篇文章为大家展示了Java递归怎样实现迷宫游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.问题由来迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒中设...
    99+
    2023-06-22
  • Unity怎么实现3D迷宫小游戏
    这篇文章主要介绍了Unity怎么实现3D迷宫小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Unity怎么实现3D迷宫小游戏文章都会有所收获,下面我们一起来看看吧。一、前言闲来无事,从零开始整个《3D迷宫》...
    99+
    2023-06-29
  • 如何实现一个canvas迷宫游戏
    小编给大家分享一下如何实现一个canvas迷宫游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!正文实现这个小游戏也不难,让我们想想,一个迷宫游戏有哪些基本要素。...
    99+
    2023-06-09
  • 基于Matlab制作伪3D第一视角迷宫小游戏
    目录游戏效果游戏原理说明第一代程序计算交点方法第二代程序计算交点方法距离转换为线段长度完整代码游戏效果 使用键盘上方向键↑向前移动 使用键盘左右方向键调整← ...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作