推房子游戏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用来处理人物移动的逻辑。

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

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

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

相关文章

JAVA后端开发面试基础知识(六)——Redis

1. 内存淘汰策略 noeviction&#xff1a;当内存不足以容纳新写入数据时&#xff0c;新写入操作会报错allkeys-lru&#xff1a;当内存不足以容纳新写入数据时&#xff0c;在键空间中&#xff0c;移除近少使用的key。(这个是最常用的)allkeys-random&#xff1a;当内存不足以容纳…

c语言在线聊天室

c语言基于tcp和多线程的在线聊天室(c语言通讯系统)功能需求 1.实现多线程 2.构建socke套接字实现一对一通信 3.实现多个电脑的通信 4.数据传输加密和解密 5.多人实时聊天 6.具备群聊和私聊的功能 实现原理: 服务端公网Ip暴露,客户端端口随机分配,通过服务端公网IP连接,服务端…

【开源】SpringBoot框架开发免税店商城管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.2 研究方法 三、系统展示四、核心代码4.1 查询免税种类4.2 查询物品档案4.3 新增顾客4.4 新增消费记录4.5 审核免税 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的免税店商城管理系…

【文本编辑】Typora v1.8.6 绿色版

下载地址 Typora v1.8.6 绿色版 简介 Typora 是一款简洁、直观的跨平台 Markdown 编辑器&#xff0c;旨在提供优雅的写作体验。与传统的 Markdown 编辑器不同&#xff0c;Typora 提供所见即所得的编辑界面&#xff0c;使用户可以即时预览 Markdown 文档的渲染效果&#xff0…

7. 阅读魔法书

题目&#xff1a;7.阅读魔法书 - 蓝桥云课 (lanqiao.cn) 代码&#xff1a; #include<iostream> #include<stdio.h> #include<algorithm> using namespace std; int main() {string str;cin>>str;int n,ans0;cin>>n;while(n--){string substr;ci…

prometheus 原理(架构,promql表达式,描点原理)

大家好&#xff0c;我是蓝胖子&#xff0c;提到监控指标&#xff0c;不得不说prometheus&#xff0c;今天这篇文章我会对prometheus 的架构设计&#xff0c;promql表达式原理和监控图表的绘图原理进行详细的解释。来让大家对prometheus的理解更加深刻。 架构设计 先来看看&am…

性能测试干2年,还不会这个技术点?

nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具&#xff0c;记录的信息比较全面&#xff0c;结合nmon_analyzer工具产生数据文件与图形化结果。 nmon可监控的数据类型 内存使用情况、磁盘适配器、文件系统中的可用空间、CPU使用率等等数据信息 特点 ①占用…

java入门 类型学习

文章目录 一、比较float型与double型二、Java与C语言的不同三、float变量的声明四、字符串与字符类型五、算术混合运算的精度 一、比较float型与double型 float x 0.4f; double y 0.4;请问各位是不是感觉这两者好像是一样大的吧&#xff1f; 其实不然 因为&#xff1a;实际…

用logrote和split分割nohup.out日志

背景&#xff1a;用nohup运行jar包时候&#xff0c;会产生大量的日志文件&#xff0c;影响磁盘存储&#xff0c;生产环境大概1天有30个g 解决方案&#xff1a; 1、用split分割日志&#xff0c;代码在下面&#xff08;可以先测试一下&#xff09;&#xff0c;然后加入到定时任务…

Java零基础-数组的访问和遍历

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

LeetCode2834. Find the Minimum Possible Sum of a Beautiful Array

文章目录 一、题目二、题解 一、题目 You are given positive integers n and target. An array nums is beautiful if it meets the following conditions: nums.length n. nums consists of pairwise distinct positive integers. There doesn’t exist two distinct ind…

使用CSS制作动态的环形图/饼图

使用纯 CSS Animation conic-gradient 实现一个环形图。 饼图的实现思路和环形图一样&#xff0c;去掉中间的圆形遮盖 after 伪类元素即可。 一、构建基础样式 构建圆形节点和中间的遮盖元素。 <style>body {background-color: rgb(130, 226, 255);}.circle {top: 16…

持续更新 | 与您分享 Flutter 2024 年路线图

作者 / Michael Thomsen Flutter 是一个拥有繁荣社区的开源项目&#xff0c;我们致力于确保我们的计划公开透明&#xff0c;并将毫无隐瞒地分享从问题到设计规范的所有内容。我们了解到许多开发者对 Flutter 的功能路线图很感兴趣。我们往往会在一年中不断更改并调整这些计划&a…

python3.9 处理excel来实现类似excel中的vlookup功能

#本次工作中需要处理两个excel中的数据&#xff0c;使用vlookup查询后显示N/A然后就选择了python# import openpyxl# excel表格的绝对路径 path r"C:\Users\Administrator\Desktop\device.xlsx"# 打开表格对象 workbook openpyxl.load_workbook(path) # 打印Excel表…

PHP语言常见面试题:什么是PHP中的函数?如何定义和调用一个函数?

在PHP中&#xff0c;函数是一组可以重复使用的代码块&#xff0c;用于执行特定的任务。函数可以接收输入&#xff08;参数&#xff09;&#xff0c;执行一系列操作&#xff0c;并可能返回输出结果。通过使用函数&#xff0c;你可以将代码组织成可重用的模块&#xff0c;提高代码…

Clock Verification IP

Clock Verification IP IP 参数及接口 IP 例化界面 相关函数 start_clock //产生时钟 <hierarchy_path>.IF.start_clockstop_clock //停止时钟 <hierarchy_path>.IF.stop_clockset_initial_value //设置时钟初始值为 0 <hierarchy_path>IF.set_initia…

LeetCode 2386.找出数组的第 K 大和:逆向思维(小根堆)

【LetMeFly】2386.找出数组的第 K 大和&#xff1a;逆向思维&#xff08;小根堆&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/find-the-k-sum-of-an-array/ 给你一个整数数组 nums 和一个 正 整数 k 。你可以选择数组的任一 子序列 并且对其全部元素求…

Android性能优化 - ANR的分析和解决

一、ANR概念 1.定义 “Application Not Responding”的缩写&#xff0c;即“应用程序无响应”。如果你应用程序在UI线程被阻塞太长时间&#xff0c;就会出现ANR。 2.类型 ① KeyDispatchTimeout&#xff08;常见&#xff09; input事件在5S内没有处理完成发生了ANR。logca…

Python和Google Colab进行卫星图像二维小波变化和机器学习

2D 小波分解是图像处理中的一种流行技术,使用不同的滤波器将图像分解为不同的频率分量(“近似”和“细节”系数)。该技术对于各种图像处理任务特别有用,例如压缩、去噪、特征提取和边缘检测。 在本文中,我们将演示如何在 Google Colab 中使用 Python 下载高分辨率样本卫星…

划拳(c++题解)

题目描述 小王和小明在吃饭的时候玩起了划拳游戏。 游戏规则是&#xff0c;每一轮两个人同时说出一个数&#xff08;只能是 中的一个&#xff09;&#xff0c;若两人说出的数一样&#xff0c;则两人均不计分&#xff0c;否则说出数字更大的人获得两人说出的数差值这么多的分…