推房子游戏c++

 

这段代码是一个推箱子游戏的实现。游戏中有一个地图,地图上有墙壁、人、箱子和目标位置。玩家通过键盘输入WASD或方向键来控制人物的移动,目标是将所有的箱子推到相应的目标位置上。

代码中的dt数组表示地图,每个位置上的字符表示对应的元素,如#表示墙壁,r表示人,O表示箱子,*表示目标位置。函数shuoming用来输出游戏说明,xianshi用来输出地图,find用来找到人物的位置,yidong用来处理人物移动的逻辑。

在主函数中,通过一个循环不断接受玩家的输入并更新地图。每次更新后,清空屏幕并输出游戏说明和地图。这样就实现了一个简单的推箱子游戏。

​
#include<bits/stdc++.h>

 

 #include<conio.h>

 

 using namespace std;

 

 

 

 int x,y;

 

 char dt[20][20]={

     

    "#####       ",

     

    "#r  #       ",

     

    "# OO# ###   ",

      

    "# O # #*#   ",

     

    "### ###*#   ",

     

    "#      *#   ",

     

    "#   ##  #   ",

     

    "#   ####    ",

      

    "######"

     

 };

 

 void shuoming(){

     

    cout<<"---------推箱子游戏欢迎你---------"<<endl;

     

    cout<<"|   通过WASD或方向键移动   |"<<endl; 

    

    cout<<"|   r:人的位置        |"<<endl;

     

    cout<<"|   O:箱子的位置       |"<<endl;

     

    cout<<"|   *:箱子的目标位置     |"<<endl;

     

    cout<<"----------------------------------"<<endl;

     

 }

 

 void xianshi(){

     

    int i,j;

     

    for(i=0;i<9;i++){

         

        for(j=0;j<9;j++){

             

            cout<<dt[i][j];

             

        }

         

        cout<<endl;

         

    }

     

 } 

 

 void find(){

     

    for(x=0;x<9;x++){

         

        for(y=0;y<9;y++){

             

            if(dt[x][y]=='r'||dt[x][y]=='R'){

                 

                return;

                 

            }

             

        }

         

    }

     

 }

 

 void yidong(int x1, int y1, int x2, int y2) {

     

    

    

    if (dt[x][y] == 'r') {

         

        

        

        if (dt[x1][y1] == 'O') {

             

            

            

            if (dt[x2][y2] == ' ') {

                 

                

                

                dt[x][y] = ' ';

                 

                

                

                dt[x1][y1] = 'r';

                 

                

                

                dt[x2][y2] = 'O';

                 

                

                

            }

             

            

            

            if (dt[x2][y2] == '*') {

                 

                

                

                dt[x][y] = ' ';

                 

                

                

                dt[x1][y1] = 'r';

                 

                

                

                dt[x2][y2] = '@';

                 

                

                

            }

             

            

            

        }

         

        

        

        if (dt[x1][y1] == '@') {

             

            

            

            if (dt[x2][y2] == ' ') {

                 

                

                

                dt[x][y] = ' ';

                 

                

                

                dt[x1][y1] = 'R';

                 

                

                

                dt[x2][y2] = 'O';

                 

                

                

                

                

                

                

            }

             

            

            

            if (dt[x2][y2] == '*') {

                 

                

                

                dt[x][y] = ' ';

                 

                

                

                dt[x1][y1] = 'R';

                 

                

                

                dt[x2][y2] = '@';

                 

                

                

            }

             

            

            

        }

         

        

        

        if (dt[x1][y1] == ' ') {

             

            

            

            dt[x][y] = ' ';

             

            

            

            dt[x1][y1] = 'r';

             

            

            

        }

         

        

        

        if (dt[x1][y1] == '*') {

             

            

            

            dt[x][y] = ' ';

             

            

            

            dt[x1][y1] = 'R';

             

            

            

        }

         

        

        

    }

     

    

    

    if (dt[x][y] == 'R') {

         

        

        

        if (dt[x1][y1] == 'O') {

             

            

            

            if (dt[x2][y2] == ' ') {

                 

                

                

                dt[x][y] = '*';

                 

                

                

                dt[x1][y1] = 'r';

                 

                

                

                dt[x2][y2] = 'O';

                 

                

                

            }

             

            

            

            if (dt[x2][y2] == '*') {

                 

                

                

                dt[x][y] = '*';

                 

                

                

                dt[x1][y1] = 'r';

                 

                

                

                dt[x2][y2] = '@';

                 

                

                

            }

             

            

            

        }

         

        

        

        if (dt[x1][y1] == '@') {

             

            

            

            if (dt[x2][y2] == ' ') {

                 

                

                

                dt[x][y] = '*';

                 

                

                

                dt[x1][y1] = 'R';

                 

                

                

                dt[x2][y2] = 'O';

                 

                

                

                

                

                

                

            }

             

            

            

            if (dt[x2][y2] == '*') {

                 

                

                

                dt[x][y] = '*';

                 

                

                

                dt[x1][y1] = 'R';

                 

                

                

                dt[x2][y2] = '@';

                 

                

                

            }

             

            

            

        }

         

        

        

        if (dt[x1][y1] == ' ') {

             

            

            

            dt[x][y] = '*';

             

            

            

            dt[x1][y1] = 'r';

             

            

            

        }

         

        

        

        if (dt[x1][y1] == '*') {

             

            

            

            dt[x][y] = '*';

             

            

            

            dt[x1][y1] = 'R';

             

            

            

        }

         

        

        

    }

     

    

    

 }

 

 int main(){

     

    char fangxiang;

     

    shuoming();

     

    xianshi();

     

    while(1){

         

        find();

         

        fangxiang=getch();

         

        switch(fangxiang){

             

        case 72:

             

        case 'W':

             

        case 'w':

             

            yidong(x-1,y,x-2,y);

             

            break;

             

        case 80:

             

        case 'S':

             

        case 's':

             

            yidong(x+1,y,x+2,y);

             

            break;

             

        case 75:

             

        case 'A':

             

        case 'a':

             

            yidong(x,y-1,x,y-2);

             

            break;

             

        case 77:

             

        case 'D':

             

        case 'd':

             

            yidong(x,y+1,x,y+2);

             

            break;

             

        }

         

        system("cls");

         

        shuoming();

         

        xianshi();

         

    }

     

    

    

    

    

    return 0;

     

 }

​

这段代码是一个推箱子游戏的实现。游戏中有一个地图,地图上有墙壁、人、箱子和目标位置。玩家通过键盘输入WASD或方向键来控制人物的移动,目标是将所有的箱子推到相应的目标位置上。

代码中的dt数组表示地图,每个位置上的字符表示对应的元素,如#表示墙壁,r表示人,O表示箱子,*表示目标位置。函数shuoming用来输出游戏说明,xianshi用来输出地图,find用来找到人物的位置,yidong用来处理人物移动的逻辑。

在主函数中,通过一个循环不断接受玩家的输入并更新地图。每次更新后,清空屏幕并输出游戏说明和地图。这样就实现了一个简单的推箱子游戏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/442975.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

星闪联盟和宝尊助力平台合作战略伙伴,为老百姓接力,传递这份大爱

星闪联盟和宝尊助力平台合作战略伙伴,为老百姓接力,传递这份大爱传承下去。 星闪联盟是致力于全球化的产业联盟,目标是推动新一代无线短距通信技术SparkLink的创新和产业生态,承载智能汽车、智能家居、智能终端和智能制造等快速发展的新场景应用,满足极致性能需求。2020年9月2…

基于Java的社区买菜系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.1.1 数据中心模块2.1.2 菜品分类模块2.1.3 菜品档案模块2.1.4 菜品订单模块2.1.5 菜品收藏模块2.1.6 收货地址模块 2.2 可行性分析2.3 用例分析2.4 实体类设计2.4.1 菜品分类模块2.4.2 菜品档案模块2.4.3…

20240308-2-校招前端面试常见问题-网络及浏览器

校招前端面试常见问题【4】——网络及浏览器 1、网络相关 Q&#xff1a;请简述一下 HTTP 协议&#xff0c;以及 HTTP1.0/1.1/2.0/3.0 的区别&#xff1f; HTTP 协议&#xff1a;超文本传输协议&#xff0c;使用 TCP/IP 协议传输数据。是一个应用层的协议。 HTTP1.0&#xff…

三甲医院体检科PEIS系统全套源码,可实现健康体检、职业病体检、从业人员体检、妇女儿童体检、外检服务等全方位体检服务

大型体检中心、三甲医院体检科的PEIS系统源码&#xff0c;体检信息系统源码 一套应用于大型体检中心、三甲医院体检科的PEIS系统源码&#xff0c;C#语言开发实现全流程管理。系统从检前&#xff0c;检中&#xff0c;检后整个业务流程提供标准化以及精细化的解决方案。 实现体检…

NTFS安全权限

NTFS是新技术文件系统&#xff08;New Technology File System&#xff09;的缩写&#xff0c;是一种用于Windows操作系统的文件系统。NTFS提供了高级的功能和性能&#xff0c;包括文件和目录的权限控制、加密、压缩以及日志等。它被广泛应用于Windows NT、Windows 2000、Windo…

算法的时间复杂度和空间复杂度(数据结构)

本博客讲解算法的时间复杂度和空间复杂度的来源及定义&#xff0c;时间复杂度的表示及练习。空间复杂度的计算会在后续博客讲解 算法的复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏&#xff0c;一般是从时…

比特币普通地址、隔离见证(兼容)、隔离见证(原生)、Taproot 地址傻傻分不清楚

我们在使用比特币钱包的时候&#xff0c;可以看到各种地址类型&#xff1a;普通地址、隔离见证&#xff08;兼容&#xff09;、隔离见证&#xff08;原生&#xff09;、Taproot 地址。 看得我们一脸懵逼&#xff0c;为什么会有这么多种类型的地址&#xff1f; 它们之间都有什么…

Jenkins集成SonarQube

文章目录 SonarQube端开启权限验证生成Jenkins登录的token Jenkins端安装SonarQube Scanner插件配置SonarQube凭证配置Jenkins的Sonar Qube信息配置SonarQube Scanner 配置项目的SonarScannerJAVA项目C#项目 效果 SonarQube端 开启权限验证 生成Jenkins登录的token 生成后记得…

MySQL通过SQL语句进行递归查询

这里主要是针对于MySQL8.0以下版本&#xff0c;因为MySQL8.0版本出来了一个WITH RECURSIVE函数专门用来进行递归查询的 先看下表格数据&#xff0c;就是很普通的树结构数据&#xff0c;通过parentId关联上下级关系 下面我们先根据上级节点id递归获取所有的下级节点数据&#x…

手机APP测试——如何进行安装、卸载、运行?

手机APP测试——主要针对的是安卓( Android )和苹果IOS两大主流操作系统,主要考虑的就是功能性、兼容性、稳定性、易用性、性能等测试&#xff0c;今天先来讲讲如何进行安装、卸载、运行的内容。 一、App安装 1、点击运行APP安装包,检测安装包是否正常; . 2、进入[安装向导]…

关于Python读取Excel表格中的内容

1、准备 首先准备好Excel表&#xff0c;并向里面填充好内容 2、相关算法 import pandas as pd# file_path rE:\data.xlsx # r对路径进行转义&#xff0c;windows需要 file_path rdata.xlsx# 这行代码括号里的head0&#xff0c;表示excel文件中第一行是表头&#xff0c;…

Independent Variable Dependent Variable

自变量&#xff08;Independent Variable&#xff09; -----------> 因变量&#xff08;Dependent Variable&#xff09; 数据 ----------------------------------------------结果&#xff0c;报告等等

python+requests+pytest+allure自动化测试框架

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、核心库 requests request请求 openpyxl excel文件操作 log…

Spring官网中查看MongoDB的API文档的详细步骤

目录 Spring官网中查看MongoDB的API文档的详细步骤1、进入 Spring 官网2、选择 Mongodb的文档介绍3、点击API文档4、进入文档查询页面 Spring官网中查看MongoDB的API文档的详细步骤 1、进入 Spring 官网 首先进入Spring的官网&#xff0c;然后点击【Spring Data】 2、选择 Mon…

Redis 架构深入:主从复制、哨兵到集群

大家好&#xff0c;我是小康&#xff0c;今天我们来聊下 Redis 的几种架构模式&#xff0c;包括主从复制、哨兵和集群模式。 前言&#xff1a; 设想一下&#xff0c;你的咖啡馆在城市中太受欢迎&#xff0c;导致每天都人满为患。为了缓解这种压力&#xff0c;你决定在其他地方…

春招秋招,网申在线测评是以什么作为通过标准?

网申是以什么作为通过标准的&#xff1f; 这个要根据测评内容来区分&#xff0c;通常来测评会包含&#xff0c;三个部分&#xff1a;认知能力测试&#xff0c;职业性格测试&#xff0c;心理健康测试。 1、认知能力测试这个是有分数的&#xff0c;高分优先&#xff0c;很明显…

云服务器实例重启后,各个微服务的接口(涉及mysql操作的)都用不了了

问题描述&#xff1a; 云服务器被黑客植入挖矿。重启云服务器实例后得到解决&#xff0c;接着把docker&#xff08;zookeeper、redis啥的&#xff09;还有后端jar包啥的都重启了&#xff0c;然后发现后端接口访问不了&#xff0c;只有不涉及数据库操作的接口正常访问&#xff…

阿里云服务器地域所在城市对照表,北京杭州深圳广州上海

2024年最新阿里云服务器地域分布表&#xff0c;地域指数据中心所在的地理区域&#xff0c;通常按照数据中心所在的城市划分&#xff0c;例如华北2&#xff08;北京&#xff09;地域表示数据中心所在的城市是北京。阿里云地域分为四部分即中国、亚太其他国家、欧洲与美洲和中东&…

js对象 静态方法和实例方法

求下面代码的输出结果&#xff1a; 首先先分析一下上面各函数&#xff1a; Person.say function(){console.log("a")} 第一个say()方法是定义在Person函数身上的&#xff0c;我们如果想使用这个方法&#xff0c;可以通过Person().say()来调用 this.say function()…

Python数据分析实验一:Python数据采集与存储

目录 一、实验目的与要求二、实验过程三、主要程序清单和运行结果1、爬取 “中国南海网” 站点上的相关信息2、爬取天气网站上的北京的历史天气信息 四、程序运行结果五、实验体会 一、实验目的与要求 1、目的&#xff1a; 理解抓取网页数据的一般处理过程&#xff1b;熟悉应用…