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

c++推箱子小游戏

上代码:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>int  map[2][7][8] =
{//0:空的 1:■ :墙//3:☆ 4:★  //目的地和箱子//5:※		  //人//7:⊙		  //目的(3)和箱子(4)在一起//8:※		  //人(5)和目的(3)在一起//为让多种情况使用一种算法{1, 1, 1, 1, 1, 1, 1, 1,1, 0, 0, 0, 0, 0, 0, 1,1, 3, 1, 0, 1, 1, 3, 1,1, 4, 0, 0, 4, 0, 3, 1,1, 0, 1, 0, 1, 1, 4, 1,1, 0, 0, 5, 0, 0, 0, 1,1, 1, 1, 1, 1, 1, 1, 1},{1, 1, 1, 1, 1, 1, 1, 1,1, 0, 0, 0, 0, 0, 0, 1,1, 3, 1, 0, 1, 1, 3, 1,1, 3, 4, 5, 4, 0, 3, 1,1, 4, 1, 0, 1, 1, 4, 1,1, 0, 0, 0, 0, 0, 0, 1,1, 1, 1, 1, 1, 1, 1, 1}
};
int cas = 0;	//为0表示第一关
//记录每一关的箱子数 或者是项目和目的在一起的总数
int boxSum[2] = {3,4};
//地图绘图
void drawMap()
{for (int i = 0; i < 7; i++){for (int j = 0; j < 8; j++){if (j == 0)printf("\t\t");switch (map[cas][i][j]){//	//0:空的 1:■ :墙case 0:printf("  ");break;case 1:printf("■");break;//3:☆ 4:★  //目的地和箱子case 3:printf("☆");break;case 4:printf("★");break;//5:※		  //人case 5:case 8:printf("※");break;case 7:printf("⊙");break;//7:⊙		  //目的(3)和箱子(4)在一起//8:※		  //人(5)和目的(3)在一起}}printf("\n");}
}
//按键处理
void keyDown()
{//分析按键过程//定位人在哪里//人有两种情况:第一个是:人,第二个:人站在目的上int i, j;for (i = 0; i < 7; i++){for (j = 0; j < 8; j++){if (map[cas][i][j] == 5 || map[cas][i][j] == 8){break;}}if (map[cas][i][j] == 5 || map[cas][i][j] == 8){break;}}char ch = _getch();	//看不见的字符输入,+头文件 conio.hswitch (ch){//72 80   75 77case 'w':case 'W':case 72://下一个地方等于空地或者是目的 能走if (map[cas][i - 1][j] == 0 || map[cas][i - 1][j] == 3){//3+5=8 :表示目的和人在一起//新地方(map[i-1][j])人(5)来了map[cas][i - 1][j] += 5;//老地方(map[i][j])人(5)走了map[cas][i][j] -= 5;}//如果下一个是箱子,要进一步判断能走//注意点:箱子两种状态:箱子,箱子和目的在一起else if (map[cas][i - 1][j] == 4 || map[cas][i - 1][j] == 7){//做箱子的下一个地方判断能不能走if (map[cas][i - 2][j] == 0 || map[cas][i - 2][j] == 3){//新的地方箱子来了map[cas][i - 2][j] += 4;//箱子的位置:箱子(-4)走了 人来(+5)map[cas][i - 1][j] += 1;//原来的地方人走了map[cas][i][j] -= 5;}}break;case 's':case 'S':case 80://下一个地方等于空地或者是目的 能走if (map[cas][i + 1][j] == 0 || map[cas][i + 1][j] == 3){//3+5=8 :表示目的和人在一起//新地方(map[i-1][j])人(5)来了map[cas][i + 1][j] += 5;//老地方(map[i][j])人(5)走了map[cas][i][j] -= 5;}else if (map[cas][i + 1][j] == 4 || map[cas][i + 1][j] == 7){//做箱子的下一个地方判断能不能走if (map[cas][i + 2][j] == 0 || map[cas][i + 2][j] == 3){//新的地方箱子来了map[cas][i + 2][j] += 4;//箱子的位置:箱子(-4)走了 人来(+5)map[cas][i + 1][j] += 1;//原来的地方人走了map[cas][i][j] -= 5;}}break;case 'a':case 'A':case 75://下一个地方等于空地或者是目的 能走if (map[cas][i][j - 1] == 0 || map[cas][i][j - 1] == 3){//3+5=8 :表示目的和人在一起//新地方(map[i-1][j])人(5)来了map[cas][i][j - 1] = map[cas][i][j - 1] + 5;//老地方(map[i][j])人(5)走了map[cas][i][j] = map[cas][i][j] - 5;//j+=5  j=j+5}else if (map[cas][i][j - 1] == 4 || map[cas][i][j - 1] == 7){//做箱子的下一个地方判断能不能走if (map[cas][i][j - 2] == 0 || map[cas][i][j - 2] == 3){//新的地方箱子来了map[cas][i][j - 2] += 4;//箱子的位置:箱子(-4)走了 人来(+5)map[cas][i][j - 1] += 1;//原来的地方人走了map[cas][i][j] -= 5;}}break;case 'D':case 'd':case 77://下一个地方等于空地或者是目的 能走if (map[cas][i][j + 1] == 0 || map[cas][i][j + 1] == 3){//3+5=8 :表示目的和人在一起//新地方(map[i-1][j])人(5)来了map[cas][i][j + 1] += 5;//老地方(map[i][j])人(5)走了map[cas][i][j] -= 5;}//下一个地方是箱子,判断箱子的下一个地方是不是目的和空地else if (map[cas][i][j + 1] == 4 || map[cas][i][j + 1] == 7){//做箱子的下一个地方判断能不能走if (map[cas][i][j + 2] == 0 || map[cas][i][j + 2] == 3){//新的地方箱子来了map[cas][i][j + 2] += 4;//箱子的位置:箱子(-4)走了 人来(+5)map[cas][i][j + 1] += 1;//原来的地方人走了map[cas][i][j] -= 5;}}break;}
}
//胜负判断
//用什么判断胜负: 箱子到达目的的个数
int gameOver()
{int count = 0;//所有的地方找一遍for (int i = 0; i < 7; i++){for (int j = 0; j < 8; j++){if (map[cas][i][j] == 7)count++;}}return count;
}
//箱子数是零的时候也是胜利
int gameOver2()
{int count = 3;//所有的地方找一遍for (int i = 0; i < 7; i++){for (int j = 0; j < 8; j++){if (map[cas][i][j] == 3)count--;}}return count;
}int main()
{while (1){printf("\n\t用方向键或w a s d键移动※推动★进入☆\n",cas+1);printf("\n\t\t 共两关 第 %d 关\n",cas+1);drawMap();if (gameOver() == boxSum[cas]){cas++;if (cas == 2)break;elseprintf("\n\t\t 该关 OK!按任一键进继续\n");	}keyDown();system("cls");}printf("游戏结束!");printf("\n");system("pause");return 0;
}

由于写游戏时间较长,更新较慢,请大佬们理解一下

相关文章:

c++推箱子小游戏

上代码: #include <stdio.h> #include <stdlib.h> #include <conio.h>int map[2][7][8] {//0:空的 1:■ :墙//3&#xff1a;☆ 4&#xff1a;★ //目的地和箱子//5&#xff1a;※ //人//7:⊙ //目的(3)和箱子(4)在一起//8&#xff1a;※ //人(5…...

SpringMVC:从入门到精通

一、SpringMVC是什么 SpringMVC是Spring提供的一个强大而灵活的web框架&#xff0c;借助于注解&#xff0c;Spring MVC提供了几乎是POJO的开发模式【POJO是指简单Java对象&#xff08;Plain Old Java Objects、pure old java object 或者 plain ordinary java object&#xff0…...

jmeter 数据库连接配置 JDBC Connection Configuration

jmeter 从数据库获取变量信息 官方文档参考&#xff1a; [jmeter安装路径]/printable_docs/usermanual/component_reference.html#JDBC_Connection_Configuration 引入数据库连接&#xff1a; 将MySQLjar包存放至jemter指定目录&#xff08;/apache-jmeter-3.3/lib&#xff09…...

TVC广告片制作成本多少

电视是广告传播的主要媒介之一&#xff0c;具有广泛的受众群体和较高的覆盖率。通过在电视上播放广告片&#xff0c;企业可以将产品或者服务的信息传达给大量潜在客户&#xff0c;提高知名度和曝光度。接下来由深圳TVC广告片制作公司老友记小编从以下几个方面浅析制作一条TVC广…...

【Express.js】代码规范

代码规范 编程规范&#xff0c;对于一个优秀的项目是不可或缺的&#xff0c;有了良好的代码规范&#xff0c;有益于项目的维护与拓展。 命名规范 命名的第一要义是明了&#xff0c;要让阅读者看到命名就能大概猜测出其意义或用处。 以用户身份&#xff08;userRole&#xff…...

Vue2+Vue3基础入门到实战项目(前接六 副线一)—— 面经 项目

day1 接口文档地址&#xff1a;https://www.apifox.cn/apidoc/project-934563/api-20384515 一、项目功能演示 1.目标 启动准备好的代码&#xff0c;演示移动端面经内容&#xff0c;明确功能模块 2.项目收获 二、项目创建目录初始化 vue-cli 建项目 1.安装脚手架 (已安装…...

QT tcpserver

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 服务端有QTcpServer库&#xff0c;封装了监听操作server new QTcpServer();// 直接监听&#xff0c;内部根…...

Android adb shell svc 知识详解

adb shell svc 详解 文章目录 adb shell svc 详解一、svc 常用命令&#xff1a; 二、svc 命令和使用示例&#xff1a;查看系统是否安装了svc1、svc2、svc help3、svc power svc wifi has been migrated to WifiShellCommand,simply perform translation to cmd wifi set-wifi-e…...

Debian12系统下LAMP环境中Nubuilder4.5的安装

一、环境搭建 按照官方的说法&#xff0c;Apache2和Nginx都可以的&#xff0c;实际上&#xff0c;你最好直接按照 Mariadb\Apache2\Php8.2 这个顺序&#xff0c;搭建LAMP环境较好。不然各种调试&#xff0c;还不一定能够成功。 相关搭建方法&#xff0c;属于一般操作&#xf…...

百度超级链BaaS服务平台调研

目录 一、菜单功能1.1、在线版1.2、服务版 二、其他说明2.1、服务平台的部署方式2.2、混合部署 百度超级链XuperChain管理平台文档地址&#xff1a;https://xuper.baidu.com/n/doc#/c8737c7b/1_0_0/c8737c7b 一、菜单功能 1.1、在线版 在线版功能稍多。 菜单子菜单/功能点子…...

计算机网络之TCP/IP协议第二篇:OSI参考模型详解

文章目录 写给自己的话 一:协议分层与OSI参考模型 二:通过对话理解分层 三:OSI参考模型...

Linux内核分析与应用2-内存寻址

本系列是对 陈莉君 老师 Linux 内核分析与应用[1] 的学习与记录。讲的非常之好&#xff0c;推荐观看 留此记录&#xff0c;蜻蜓点水,可作抛砖引玉 2.1 内存寻址 数据连续存储和选择读取思想,是目前我们使用的几乎所有机器运行背后的灵魂 计算机体系结构中的核心问题之一,就是如…...

苍穹外卖 day12 Echats 营业台数据可视化整合

苍穹外卖-day12 课程内容 工作台Apache POI导出运营数据Excel报表 功能实现&#xff1a;工作台、数据导出 工作台效果图&#xff1a; 数据导出效果图&#xff1a; 在数据统计页面点击数据导出&#xff1a;生成Excel报表 1. 工作台 1.1 需求分析和设计 1.1.1 产品原型 工作台是系…...

代码随想录算法训练营day45|70. 爬楼梯(进阶版)|322. 零钱兑换|279.完全平方数

70. 爬楼梯(进阶版) 一步一个台阶&#xff0c;两个台阶&#xff0c;三个台阶&#xff0c;…&#xff0c;直到 m个台阶。问有多少种不同的方法可以爬到楼顶呢&#xff1f; 1阶&#xff0c;2阶&#xff0c;… m阶就是物品&#xff0c;楼顶就是背包。 每一阶可以重复使用&#…...

数据结构和算法(3):列表

列表是一种线性数据结构&#xff0c;它允许在其中存储多个元素&#xff0c;并且可以动态地添加或删除元素。 循秩访问 可通过重载下标操作符&#xff0c;实现寻秩访问 template <typename T> // assert: 0 < r < size T List<T>::operator[](Rank r) cons…...

使用playright自动下载vscode已安装插件

import os import re import subprocess import traceback from playwright.sync_api import Playwright, sync_playwright, expect# 执行CMD命令 cmd_command "code --list-extensions" # 获取已安装扩展列表 process subprocess.Popen(cmd_command, stdoutsubpr…...

单片机语言实例:2、点亮数码管的多种方法

一、共阳数码管静态显示 程序实例1&#xff1a; #include<reg52.h> //包含头文件&#xff0c;一般情况不需要改动&#xff0c; //头文件包含特殊功能寄存器的定义void main (void) {P10xc0; //二进制 为 1100 0000 参考数码管排列&#xff0c;//可以得出0对应的段点…...

C#学习 - 初识类与名称空间

类&#xff08;class&#xff09;& 名称空间&#xff08;namespace&#xff09; 类是最基础的 C# 类型&#xff0c;是一个数据结构&#xff0c;是构成程序的主体 名称空间以树型结构组织类 using System; //前面的using就是引用名称空间 //相当于C语言的 #include <..…...

Python爬取电影信息:Ajax介绍、爬取案例实战 + MongoDB存储

Ajax介绍 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种用于在Web应用程序中实现异步通信的技术。它允许在不刷新整个网页的情况下&#xff0c;通过在后台与服务器进行数据交换&#xff0c;实时更新网页的一部分。Ajax的主要特点包括&#xff1a; 异步通…...

JavaScript的面向对象

一、认识对象 1.概述 对象&#xff08;object&#xff09;是 JavaScript 语言的核心概念&#xff0c;也是最重要的数据类型。 什么是对象&#xff1f;简单说&#xff0c;对象就是一组“键值对”&#xff08;key-value&#xff09;的集合&#xff0c;是一种无序的复合数据集合…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...