推房子游戏c++

news2024/12/25 8:53:15

 

这段代码是一个推箱子游戏的实现。游戏中有一个地图,地图上有墙壁、人、箱子和目标位置。玩家通过键盘输入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用来处理人物移动的逻辑。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享2024年在家轻松兼职赚钱的5个副业

今天在网上看到这么一句话&#xff0c;真的让我深有感触&#xff1a;“职场人一定要有居安思危的意识&#xff0c;创业的人一定要三思而后行”。在这个瞬息万变的时代&#xff0c;连被视为铁饭碗的公务员、教师等体制内工作都不能保证一辈子的稳定。发展副业&#xff0c;似乎成…

Deepl翻译相关介绍

DeepL是一种机器翻译软件&#xff0c;它在2017年首次发布。该软件利用了神经网络和深度学习技术&#xff0c;以提供更准确和自然的翻译结果。DeepL的翻译质量被广泛认为是当前机器翻译技术中最佳的之一。 官网&#xff1a;DeepL翻译&#xff1a;全世界最准确的翻译 DeepL具有许…

伊理威科技:新手开抖店的教程

在数字浪潮中&#xff0c;抖音小店如星火燎原&#xff0c;吸引无数创业者。你是否也心潮澎湃&#xff0c;想要一试身手?别急&#xff0c;让我们一步步揭开开店的神秘面纱。 注册流程。想象一下&#xff0c;你只需在抖音平台上点击“我要开店”&#xff0c;按提示填写相关信息&…

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…

二进制模二除法

例&#xff1a;1100100100 对 1011做模二除法 ① 第一位商 除数 1011 是一个四位二进制数&#xff0c;因此先拿出被除数的前四位(从高位开始取) 11001100 就是本次的被除数&#xff0c;取其首位数 1 作为第一位商然后对 1100 和 1011 做异或运算&#xff0c;得出结果 0111 ②…

HNU-算法设计与分析-甘晴void学习感悟

前言 算法设计与分析&#xff0c;仅就课程而言&#xff0c;似乎是数据结构与算法分析的延续 教材使用&#xff1a; 课程 关于课程&#xff0c;橙学长讲的非常清晰&#xff0c;我深以为然。 HNUCS-大三课程概览-CSDN博客文章浏览阅读1.3k次&#xff0c;点赞5次&#xff0c;收…

【视频图像取证篇】Impress模糊图像增强技术之颜色滤波器场景实例教程(蘇小沐)

【视频图像取证篇】Impress模糊图像增强技术之颜色滤波器场景实例教程&#xff08;蘇小沐&#xff09; Impress模糊图像增强技术之颜色滤波器场景实例教程—【蘇小沐】 1、实验环境 系统环境Impress&#xff0c;[v8.2.02]Windows 11 专业版&#xff0c;[23H2&#xff08;226…

B端系统优化,可不是换个颜色和图标,看看与大厂系统的差距。

Hi&#xff0c;我是贝格前端工场&#xff0c;优化升级各类管理系统的界面和体验&#xff0c;是我们核心业务之一&#xff0c;欢迎老铁们评论点赞互动&#xff0c;有需求可以私信我们 一、不要被流于表面的需求描述迷惑。 很多人找我们优化系统界面&#xff0c;对需求总是轻描淡…

win11修改主机mac地址

很多时候&#xff0c;为了限制恶意的蹭流浪&#xff0c;除了分配固定的ip地址外&#xff0c;还限制mac地址。只有mac与ip一致&#xff0c;才能上网冲浪 网络适配器中修改 搜索“控制面板”打开 控制面板 > 网络和Internet > 网络和共享中心 >查看网络状态和任务>…

代码随想录 回溯算法-排序

目录 46.全排序 47.全排列|| 332.重新安排行程 46.全排序 46. 全排列 中等 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,…

【NR技术】 3GPP支持无人机的关键技术以及场景

1 背景 人们对使用蜂窝连接来支持无人机系统(UAS)的兴趣浓厚&#xff0c;3GPP生态系统为UAS的运行提供了极好的好处。无处不在的覆盖范围、高可靠性和QoS、强大的安全性和无缝移动性是支持UAS指挥和控制功能的关键因素。与此同时&#xff0c;监管机构正在调查安全和性能标准以及…

讲讲 SaaS 平台的多租户设计

本篇就来讲讲 SaaS 平台的多租户设计。 以“钉钉”为例看实际的多租户场景 在讲设计之前&#xff0c;我们先以“钉钉”为例&#xff0c;来看看一个 SaaS 平台是如何运作的。相信大部分B 端产品经理都体验过钉钉&#xff0c;我们分两个维度来讲钉钉的租户注册到使用的流程。一…

mysql数据库(下)

目录 约束 约束的概念和分类 1、约束的概念&#xff1a; 2、约束的分类 1、主键约束 2、默认约束 3、非空约束 4、唯一约束 5、外键约束 约束 约束的概念和分类 1、约束的概念&#xff1a; 约束时作用于表中列上的规则&#xff0c;用于限制加入表的数据约束的存在保证…

代码随想录算法训练营第day40|343. 整数拆分 、 96.不同的二叉搜索树

a.343. 整数拆分 题目链接 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: …

csgo搬砖核心步骤,月入1000-10000你也可以的!

近年网络游戏产业的爆炸式增长&#xff0c;虚拟物品的交易需求也越来越大&#xff0c;为了满足虚拟物品的交易需求&#xff0c;网络游戏交易平台开始兴起和发展。网游交易平台的交易项目包括帐号交易、游戏币交易、装备交易这几种主要交易项目&#xff0c;其交易模式可分为C2C模…

FPGA IBUFG

IBUFG和IBUFGDS的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接&#xff0c;与普通IO和其它内部CLB等没有物理连接。 所以&#xff0c;IBUFG输入的不能直接接另外信号。 GTH transceiver primitives are called GTHE3_COMMON and GTHE3_CHANNEL in UltraScale FPGAs, an…

大数据技术学习笔记(五)—— MapReduce(1)

目录 1 MapReduce 概述1.1 MapReduce 定义1.2 MapReduce 优缺点1.3 MapReduce 核心思想1.4 MapReduce 进程1.5 Hadoop 序列化类型1.6 MapReduce 编程规范1.7 WordCount 案例实操1.7.1 案例需求1.7.2 环境准备1.7.3 编写程序1.7.4 测试 2 MapReduce 序列化2.1 序列化概述2.2 自定…

2023最新群智能优化算法:巨型犰狳优化算法(Giant Armadillo Optimization,GAO)求解23个基准函数(提供MATLAB代码)

一、巨型犰狳优化算法 巨型犰狳优化算法&#xff08;Giant Armadillo Optimization&#xff0c;GAO&#xff09;由Omar Alsayyed等人于2023年提出&#xff0c;该算法模仿了巨型犰狳在野外的自然行为。GAO设计的基本灵感来自巨型犰狳向猎物位置移动和挖掘白蚁丘的狩猎策略。GAO…

2.4_1 死锁的概念

文章目录 2.4_1 死锁的概念&#xff08;一&#xff09;什么是死锁&#xff08;二&#xff09;死锁、饥饿、死循环的区别&#xff08;三&#xff09;死锁产生的必要条件&#xff08;四&#xff09;什么时候会发生死锁&#xff08;五&#xff09;死锁的处理策略 总结 2.4_1 死锁的…

Python笔记|基础算数运算+数字类型(1)

重新整理记录一下python的基础知识 基础运算符 、-、*、/ &#xff1b;括号 ()用来分组。 >>>2 2 4 >>>50 - 5*6 20 >>>(50 - 5*6) / 4 5.0 >>>8 / 5 1.6向下取整除法&#xff1a;向下舍入到最接近的整数的数学除法。运算符是 //。比如1…