c++迷宫小游戏

一、总结

一句话总结:

显示:根据map数组输出图像
走动:修改map数组的值,每走一步重新刷新一下图像就好

1、如果走函数用z(),出现输入s会向下走多步的情况,原因是什么?

 向下走两层循环ij增加,而向下走i也是增加的,所以break跳出j后,照样找到i不误,所以会一直走到不能走为止

//走动函数 
void z(){char c=getch();//下 if(c=='s'){for(int i=0;i<10;i++){for(int j=0;j<10;j++){//找到人物所在的位置 if(map[i][j]==3&&map[i+1][j]!=1){map[i+1][j]=3;//下面的位置变成人物所在的位置 map[i][j]=0;//走过的地方变成0 break;}}}}//上 if(c=='w'){for(int i=0;i<10;i++){for(int j=0;j<10;j++){if(map[i][j]==3&&map[i-1][j]!=1){map[i-1][j]=3;map[i][j]=0;break;}}}}//左 if(c=='a'){for(int i=0;i<10;i++){for(int j=0;j<10;j++){if(map[i][j]==3&&map[i][j-1]!=1){map[i][j-1]=3;map[i][j]=0;break;}}}}//右 if(c=='d'){for(int i=0;i<10;i++){for(int j=0;j<10;j++){if(map[i][j]==3&&map[i][j+1]!=1){map[i][j+1]=3;map[i][j]=0;break;}}}}
}

二、内容在总结中

截图:

wsad分别对应上下左右

代码:


#include<cstdio>
#include<windows.h>
#include<conio.h>
int map[10][10]={{1,1,1,1,3,1,1,1,1,1},{1,0,0,0,0,0,0,1,1,1},{1,0,0,1,0,1,0,0,1,1},{1,1,0,1,1,0,0,1,1,1},{1,0,0,0,1,0,0,0,0,1},{1,1,0,0,1,1,0,1,0,1},{1,1,0,1,0,1,1,0,0,1},{1,0,0,0,1,1,1,1,0,1},{1,1,1,1,1,1,1,1,2,1}};
int pos_y=0;//人物的y坐标 
int pos_x=4;//人物的x坐标//打印地图 
void jzmap()
{for(int i=0;i<10;i++){for(int j=0;j<10;j++){if(map[i][j]==0) printf("  ");//可走的地方 if(map[i][j]==1) printf("■");//障碍 if(map[i][j]==2)printf("!!");//出口 if(map[i][j]==3)printf("* ");//人物所在的位置 }printf("\n");}
}
//走动函数2 
void z2(){char c=getch();//下 if(c=='s'){//找到人物所在的位置 if(map[pos_y][pos_x]==3&&map[pos_y+1][pos_x]!=1){map[pos_y+1][pos_x]=3;//下面的位置变成人物所在的位置 map[pos_y][pos_x]=0;//走过的地方变成0 pos_y++; }}//上 if(c=='w'){if(map[pos_y][pos_x]==3&&map[pos_y-1][pos_x]!=1){map[pos_y-1][pos_x]=3;map[pos_y][pos_x]=0;pos_y--;}}//左 if(c=='a'){if(map[pos_y][pos_x]==3&&map[pos_y][pos_x-1]!=1){map[pos_y][pos_x-1]=3;map[pos_y][pos_x]=0;pos_x--;}}//右 if(c=='d'){if(map[pos_y][pos_x]==3&&map[pos_y][pos_x+1]!=1){map[pos_y][pos_x+1]=3;map[pos_y][pos_x]=0;pos_x++;}}
} 
//走动函数 
void z(){char c=getch();int has_zou=0;//下 if(c=='s'){for(int i=0;i<10;i++){for(int j=0;j<10;j++){//找到人物所在的位置 if(map[i][j]==3&&map[i+1][j]!=1&&!has_zou){has_zou=1;map[i+1][j]=3;//下面的位置变成人物所在的位置 map[i][j]=0;//走过的地方变成0 break;}}}}//上 if(c=='w'){for(int i=0;i<10;i++){for(int j=0;j<10;j++){if(map[i][j]==3&&map[i-1][j]!=1&&!has_zou){has_zou=1;map[i-1][j]=3;map[i][j]=0;break;}}}}//左 if(c=='a'){for(int i=0;i<10;i++){for(int j=0;j<10;j++){if(map[i][j]==3&&map[i][j-1]!=1&&!has_zou){has_zou=1;map[i][j-1]=3;map[i][j]=0;break;}}}}//右 if(c=='d'){for(int i=0;i<10;i++){for(int j=0;j<10;j++){if(map[i][j]==3&&map[i][j+1]!=1&&!has_zou){has_zou=1;map[i][j+1]=3;map[i][j]=0;break;}}}}
}
void yx()
{jzmap();//重绘地图 //z();z2();//走操作 
}
//结束 
bool js()
{for(int i=0;i<10;i++){for(int j=0;j<10;j++){if(map[i][j]==map[9][8]){return 1;}else{return 0;}}}
}
int main()
{for(int i=0;i<100;i++){system("cls");yx();if(js()){system("cls");printf("game over!");return 0;}}    return 0;
}

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

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

相关文章

openlayers-18-聚合显示补充(切换聚合与非聚合状态)

最近有一些网友问我&#xff0c;聚合显示怎么实现聚合与不聚合之间的切换&#xff0c;有很多方法能够实现&#xff0c;下面是一个示例作为参考。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-…

LabVIEW开发低成本静脉监测和控制输液系统

LabVIEW开发低成本静脉监测和控制输液系统 信息技术的使用和进步彻底改变了现代医疗保健的面貌。医院、疗养院和其他姑息治疗院需要不同的人力资源&#xff0c;如医生、技术人员、护士和其他工作人员&#xff0c;他们共同提供最先进的医疗保健。COVID-19大流行表现出严重缺乏此…

【Linux学习】04Linux实用操作

Linux&#xff08;B站黑马&#xff09;学习笔记 01Linux初识与安装 02Linux基础命令 03Linux用户和权限 04Linux实用操作 文章目录 Linux&#xff08;B站黑马&#xff09;学习笔记前言04Linux实用操作各类小技巧&#xff08;快捷键&#xff09;ctrl c 强制停止ctrl d 退出或…

MySQL - group by分组查询 (查询操作 三)

功能介绍 group by: 对数据进行分组和聚合操作(可以操作单字段和多字段) having&#xff1a;过滤group by的结果&#xff0c;也就是在分组后添加筛选条件 基础语法 select 字段列表 from 表名 [ where 条件 ] group by 分组字段名 [ having ]; where 和 having的区…

ROS系统通过类定义实现数据处理并重新发布在另一话题

在实际应用中&#xff0c;经常需要在同一个节点内接受数据&#xff0c;在回调函数中将数据进行处理&#xff0c;再将新数据重新发布在另一个新话题上。 实现步骤&#xff1a; 1. 定义一个数据处理类SubscribeAndPublish&#xff0c;设置2个pub成员对象和1个sub成员对象为publ…

Mysql生产随笔

目录 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 1.2常见错误解决方案 2.关于时区 3.内存占用优化 记录一下生产过程中的一些场景和命令使用方法&#xff0c;不定期进行更新 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 sho…

安卓系列机型 框架LSP 安装步骤 支持多机型 LSP框架通用安装步骤【二】

​​​​​​安卓玩机教程---全机型安卓4----安卓12 框架xp edx lsp安装方法【一】 低版本可以参考上个博文了解相关安装方法。 LSP框架优点 简单来说装lsp框架的优点在于可以安装各种模块。包括 但不限于系统优化 加速 游戏开挂等等的模块。大致相当于电脑的扩展油猴 Lspos…

【Linux】线程安全

线程互斥互斥相关背景概念 互斥量mutex互斥量接口初始化互斥量函数销毁互斥量互斥量加锁互斥量解锁代码模拟 互斥量实现的逻辑常见锁的概念死锁什么叫做阻塞&#xff1f;产生死锁的四个必要条件如何避免死锁 Linux线程同步同步概念与竞态条件条件变量条件变量函数代码练习 条件…

HC32 IIC/I2C读写

IIC状态码 IIC 初始化 void iicInit(uint32_t speed) {stc_gpio_cfg_t stcGpioCfg;DDL_ZERO_STRUCT(stcGpioCfg);Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE); //开启GPIO时钟门控stcGpioCfg.enDir GpioDirOut; ///< 端口方向配置…

记录使用iText7查找PDF内容关键字坐标,加盖电子签名、印章

一、前言 项目以前签字都是由C端那边进行合成操作&#xff0c;最近项目要求把那块功能&#xff0c;由后端进行实现&#xff0c;其中包含坐标、关键字、任意位置进行签字操作&#xff0c;坐标是最容易实现的&#xff0c;曾经也写过类似的功能在&#xff08;添加图片印章到PDF&a…

MATLAB m文件格式化

记录一个网上查到的目前感觉挺好用的格式化方法。 原链接&#xff1a; https://cloud.tencent.com/developer/article/2058259 压缩包&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1ZpQ9qGLY7sjcvxzjMPAitw?pwd6666 提取码&#xff1a;6666 下载压缩包&#xf…

Python机器学习实战-特征重要性分析方法(5):递归特征消除(附源码和实现效果)

实现功能 递归地删除特征并查看它如何影响模型性能。删除时会导致更大下降的特征更重要。 实现代码 from sklearn.ensemble import RandomForestClassifier from sklearn.feature_selection import RFE import pandas as pd from sklearn.datasets import load_breast_cance…

C++刷题 全排列问题

C刷题 全排列问题 题目描述思路讲解代码展示 题目描述 思路讲解 代码展示 #include <iostream>using namespace std;const int maxn 11;//P为当前排列&#xff0c;hashTable记录整数x是否已经在P中 int n, P[maxn], hashTable[maxn] {false};//当前处理排列的第index号…

深入理解传输层协议:TCP与UDP的比较与应用

目录 前言什么是TCP/UDPTCP/UDP应用TCP和UDP的对比总结 前言 传输层是TCP/IP协议栈中的第四层&#xff0c;它为应用程序提供服务&#xff0c;定义了主机应用程序之间端到端的连通性。在本文章&#xff0c;我们将深入探讨传输层协议&#xff0c;特别是TCP和UDP协议的原理和区别…

ES查询数据的时报错:circuit_breaking_exception[[parent] Data too large

ES配置的官方网站&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/7.2/circuit-breaker.html 报错&#xff1a; circuit_breaking_exception[[parent] Data too large, data for [<transport_request>] would be [12318476937/11.2gb], which is…

提高网申通过率的秘籍,校园招聘之春招秋招都有效

提高网申通过率的秘籍&#xff01;校园招聘&#xff08;校招-春招-秋招&#xff09;都有效。 网申&#xff0c;指的是在网上申请招聘企业的岗位&#xff0c;每年春招秋招&#xff0c;都是毕业生们的重点大事&#xff0c;如何把握好机会&#xff0c;就在于各个环节的细节之处&…

rust所有权

一、堆和栈 栈和堆都是程序运行时使用的内存&#xff0c;但是它们的结构不同。 1.栈 栈&#xff0c;英文是stack。是内存的一段区域。 栈是后进先出形式的。就像薯片桶&#xff0c;先放进去的一片只能后拿出来。 栈上存储的数据大小必须是已知且固定的。也就是说如果一个变量…

巨人互动|Facebook海外户Facebook的特点优势

Facebook作为全球最大的社交媒体平台之一&#xff0c;同时也是最受欢迎的社交网站之一&#xff0c;Facebook具有许多独特的特点和优势。本文小编将说一些关于Facebook的特点及优势。 1、全球化 Facebook拥有数十亿的全球用户&#xff0c;覆盖了几乎所有国家和地区。这使得人们…

「C++之STL」关于在模拟实现STL容器中的深浅拷贝问题

文章目录 前言杨辉三角深浅拷贝问题模拟实现的vector对题目杨辉三角引发的程序崩溃原因解决办法 前言 在学习STL容器中,不仅需要学会容器的使用,同时也需要了解容器的大体框架以及各个函数的模拟实现才能更好的去了解这个容器; 杨辉三角 在LeetCode中有一道这样的题目,给定一…

【x265 源码分析系列】:概述

介绍 x265 也属于 VLC 的 project。 版本&#xff1a; x265-3.5&#xff08;TAG-208&#xff09; git&#xff1a; https://bitbucket.org/multicoreware/x265_git.git 编码特点&#xff1a; 研究了一段时间的 HEVC 编码标准&#xff0c;最近开始研究符合 HEVC 标准的开源…