当前位置: 首页 > news >正文

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.lryc.cn/news/177781.html

相关文章:

  • 需求堆积,如何排序产品优先极
  • 计算机视觉 回头重新理解图像中的矩
  • MapStruct应用实战及BeanUtils性能比较
  • ISP技术概述
  • CSDN: ABTest流量分层分桶机制
  • 【小余送书第一期】《数据要素安全流通》参与活动,即有机会中奖哦!!
  • 蓝牙核心规范(V5.4)10.7-BLE 入门笔记之L2CAP
  • VUE之正则表达式全集整理
  • Python 中的字符串基础与应用
  • C++:如何实现数组元素逆置?多种方法
  • php框架thinkPHP6的安装教程
  • PTA程序辅助实验平台——2023年软件设计综合实践_3(分支与循环)
  • 【C语言数据结构】线性表-链式存储-单链表
  • tp8 Editor.md
  • LM小型可编程控制器软件(基于CoDeSys)笔记三十一:保持变量和非保持变量
  • 「C++之STL」关于在模拟实现STL容器中的深浅拷贝问题
  • 文件内容显示
  • Milvus+Attu
  • LeetCode算法二叉树—226. 翻转二叉树
  • AI项目十:Swin Transformer目标检测环境搭建
  • 【IPC 通信】信号处理接口 Signal API(5)
  • Arduino PLC IDE
  • 记录使用iText7查找PDF内容关键字坐标,加盖电子签名、印章
  • Java8实战-总结37
  • 【超详细】前段开发之详细的Vue3入门教程,特别适合小白系统学习,入门到熟练使用Vue看这一篇就够了!
  • 【深度学习】ONNX模型多线程快速部署【基础】
  • Python 同、异步HTTP客户端封装:性能与简洁性的较量
  • 无代码赋能数字化,云表搭桥铺路链接“数据孤岛”
  • 无需公网IP,实现公网SSH远程登录MacOS【内网穿透】
  • 网络爬虫学习笔记 1 HTTP基本原理