c++教你一步步做推箱子(附源码)

c++:推箱子游戏 游戏 阅读详情

最近在c++中用最基础的方法作出了推箱子,效果比想象中的好的多,还不闪屏,不明白为什么网上好多人的推箱子代码都几百行几百行的。

教程开始!

第一步,先录入头文件:

#include<iostream>
#include<cstring>
#include<windows.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>

第二步,制作地图(目前只有第一关,以后会努力更完的!请催更。):

char a[10][10]={{"  ###   "}, 
				{"  #6#   "},
				{"  #0####"},
				{"### o06#"},
				{"#60  ###"},
				{"####0#  "},
				{"   #6#  "},
				{"   ###  "}};

第三步:创建人物移动:

void move(){
	int x,y,p,q;
	x=3;
	y=4;
	p=5;
	q=10;
	char ch;
	print();
	while(1) {
		ch=getch();
		if(ch=='s') {
			if(a[x+1][y]!='#'&&a[x+1][y]=='0')
			{
				a[x+2][y]='0';
				a[x][y]=' ';
				a[x+1][y]='o';
			}
			if(a[x+1][y]!='#') {
			a[x][y]=' ';
				x++;
				a[x][y]='o';
				system("cls");
				print();

			}
		}
		if(ch=='w') {
			if(a[x-1][y]!='#'&&a[x-1][y]=='0')
			{
				a[x-2][y]='0';
				a[x][y]=' ';
				a[x-1][y]='o';
			}
			if(a[x-1][y]!='#') {
				a[x][y]=' ';
				x--;
				a[x][y]='o';
				system("cls");
				print();
			}
		}
		if(ch=='a') {
			if(a[x][y-1]!='#'&&a[x][y-1]=='0')
			{
				a[x][y-2]='0';
				a[x][y]=' ';
				a[x][y-1]='o';
			}
			if(a[x][y-1]!='#') {
				a[x][y]=' ';
				y--;
				a[x][y]='o';
				system("cls");
				print();
			}
		}
		if(ch=='d') {
			if(a[x][y+1]!='#'&&a[x][y+1]=='0')
			{
				a[x][y+2]='0';
				a[x][y]=' ';
				a[x][y+1]='o';
			}
			if(a[x][y+1]!='#') {
				a[x][y]=' ';
				y++;
				a[x][y]='o';
				system("cls");
				print();
			}
			
		}
		if(a[1][3]=='0'&&a[6][4]=='0'&&a[4][1]=='0'&&a[3][6]=='0')
			{
				system("cls");
				cout<<"You're Win";
				break; 
			}
			if(ch=='q')
			{
				system("cls");
				welcome();
			}/*
		if(x==p&&y==q) {
			system("cls");
			cout<<"You're Win";
			return 0;
			
			char a[10][10]={{"########"}, 
				{"### ####"},
				{"###0####"},
				{"### o0 #"},
				{"# 0  ###"},
				{"####0###"},
				{"#### ###"},
				{"########"}};
		}*/
	}

} 

第四步,创建开始界面:

void welcome(){
	int a;
	system("cls");
	cout<<"\n\n推箱子小游戏"<<endl<<endl;
	cout<<"  0  |----|       1.开始游戏"<<endl;
    cout<<"(||) |0000|       2.游戏规则"<<endl;
    cout<<"╝╚ |0000|"<<endl; 
    cin>>a;
	 if(a==1)
	 {
	 	system("cls");
	 	move();
	  } 
	  else if(a==2)
	  {
	  	system("cls"); 
	  	cout<<"推箱子规则:"<<endl;
	  	cout<<"通过w、s、a、d来进行控制小人移动,已达到将所有箱子(0)\d推入传送点(6)的目的。"<<endl;
	  	cout<<"在游戏中可以按q来返回主界面。。。";
		cout<<"按1以返回。。。";
		cin>>a;
		if(a==1)
		{
			welcome();
		 } 
	  }

第五步,输出地图:

void print() {
	for(int i=0; i<10; i++) {
		puts(a[i]);
	}
}

最后一步,主函数调用自定义函数:

int main() {
	MessageBox(0, "欢迎来到推箱子小游戏\n\n制作:火龙果殿下", "系统", MB_OK);
	welcome();
	return 0;
}

 完整代码:

#include<iostream>
#include<cstring>
#include<windows.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
using namespace std;
/*
char m[7][12]= {{"###########"},
	{"#o   #  ###"},
	{"# ## ##   #"},
	{"#  #    # #"},
	{"# #### ## #"},
	{"#       #  "},
	{"###########"}
};*/
char a[10][10]={{"  ###   "}, 
				{"  #6#   "},
				{"  #0####"},
				{"### o06#"},
				{"#60  ###"},
				{"####0#  "},
				{"   #6#  "},
				{"   ###  "}};
void move();
void welcome(){
	int a;
	system("cls");
	cout<<"\n\n推箱子小游戏"<<endl<<endl;
	cout<<"  0  |----|       1.开始游戏"<<endl;
    cout<<"(||) |0000|       2.游戏规则"<<endl;
    cout<<"╝╚ |0000|"<<endl; 
    cin>>a;
	 if(a==1)
	 {
	 	system("cls");
	 	move();
	  } 
	  else if(a==2)
	  {
	  	system("cls"); 
	  	cout<<"推箱子规则:"<<endl;
	  	cout<<"通过w、s、a、d来进行控制小人移动,已达到将所有箱子(0)\d推入传送点(6)的目的。"<<endl;
	  	cout<<"在游戏中可以按q来返回主界面。。。";
		cout<<"按1以返回。。。";
		cin>>a;
		if(a==1)
		{
			welcome();
		 } 
	  }
}
void print() {
	for(int i=0; i<10; i++) {
		puts(a[i]);
	}
}
void move(){
	int x,y,p,q;
	x=3;
	y=4;
	p=5;
	q=10;
	char ch;
	print();
	while(1) {
		ch=getch();
		if(ch=='s') {
			if(a[x+1][y]!='#'&&a[x+1][y]=='0')
			{
				a[x+2][y]='0';
				a[x][y]=' ';
				a[x+1][y]='o';
			}
			if(a[x+1][y]!='#') {
			a[x][y]=' ';
				x++;
				a[x][y]='o';
				system("cls");
				print();

			}
		}
		if(ch=='w') {
			if(a[x-1][y]!='#'&&a[x-1][y]=='0')
			{
				a[x-2][y]='0';
				a[x][y]=' ';
				a[x-1][y]='o';
			}
			if(a[x-1][y]!='#') {
				a[x][y]=' ';
				x--;
				a[x][y]='o';
				system("cls");
				print();
			}
		}
		if(ch=='a') {
			if(a[x][y-1]!='#'&&a[x][y-1]=='0')
			{
				a[x][y-2]='0';
				a[x][y]=' ';
				a[x][y-1]='o';
			}
			if(a[x][y-1]!='#') {
				a[x][y]=' ';
				y--;
				a[x][y]='o';
				system("cls");
				print();
			}
		}
		if(ch=='d') {
			if(a[x][y+1]!='#'&&a[x][y+1]=='0')
			{
				a[x][y+2]='0';
				a[x][y]=' ';
				a[x][y+1]='o';
			}
			if(a[x][y+1]!='#') {
				a[x][y]=' ';
				y++;
				a[x][y]='o';
				system("cls");
				print();
			}
			
		}
		if(a[1][3]=='0'&&a[6][4]=='0'&&a[4][1]=='0'&&a[3][6]=='0')
			{
				system("cls");
				cout<<"You're Win";
				break; 
			}
			if(ch=='q')
			{
				system("cls");
				welcome();
			}/*
		if(x==p&&y==q) {
			system("cls");
			cout<<"You're Win";
			return 0;
			
			char a[10][10]={{"########"}, 
				{"### ####"},
				{"###0####"},
				{"### o0 #"},
				{"# 0  ###"},
				{"####0###"},
				{"#### ###"},
				{"########"}};
		}*/
	}

} 
int main() {
	MessageBox(0, "欢迎来到推箱子小游戏\n\n制作:火龙果殿下", "系统", MB_OK);
	welcome();
	return 0;
}

本篇就到这里啦,如果大家还想学其他的小游戏的话,请在评论区里留言,火龙果会努力编程的!

886~

C语言实现推箱子小游戏 推箱子小游戏,c语言 函数,循环,分支结构,小游戏设计 阅读详情

相关推荐

C++推箱子游戏(可以撤回)

C++推箱子小游戏制作 期末了,需要交一个C++大作业,就准备了一下写了一个推箱子小游戏,内容借鉴于网友, 不过进行了一些修改添加了一些新的内容,下面放出源码和效果. ![游戏界面,第一关(一共5关)](https://img-blog.csdnimg.cn/20190102191916853.png) ![第二关](https://img-blog.csdnimg.cn/20190102191...

sexyback_的博客 7068

【C++开发实例】如何使用C++做个简单的推箱子

今天向大家介绍一下如何使用C++来写一个推箱子游戏的代码 首先要做出推箱子,我们先要明确它的思路是什么: 如图,在一个推箱子游戏中,我们首先要有一个二维的地图,并在地图中加入障碍物,箱子,小人,还有箱子需要到达的指定地点。当然,简单的把这几个人因素呈现出来是很简单的,如下面的代码: #include<iostream> using namespace std; int main() { cout<<"\n\n"; cout<<" ###

qq_51000584的博客 1万+

c/c++推箱子游戏开发基础入门(附全部源码)

今天是礼拜天,礼拜天还回公司做游戏开发项目也就只有我们了,太苦逼了,好了,废话不多说,今天要分享的是一个基础版的推箱子小游戏,我后面的文章也会从c++游戏开发从基础到入门的顺序依次更新(整套源码在最底下) 游戏运行截图如下:(主要功能:移动箱子到目的地,移动到目的地以后,显示不同的效果,然后,推完箱子以后,切换关卡,到下一关) 注意 因为这里用到了贴图技术,要使用graphic.h这个函数,不安装的话是不能在vs里面显示图案的,所以要安装Easy x 这个图形库,下载地址http://www.easyx.c

cocos游戏开发大雄 4692

【C++小游戏】推箱子代码

使用C++实现推箱子

xinchendahai123的博客 8068

c++推箱子小游戏源码

c++推箱子小游戏源码 由于本人才疏学浅特意附上一份控制台小游戏,欢迎前来讨论. 目前目标点也是不可以移动上去的. 废话不多说了,直接上源码 #include<iostream> using namespace std; //地图数据 int map[10][10] = { {1,1,1,1,1,1,1,1,1,1}, {1,0,0,0,0,1,0,0,0,1}, {1,0,0,4,0,1,0,3,0,1}, {1,0,2,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,

qq_38178626的博客 524

【课程设计】 推箱子游戏(源码 + 详解)

【课程设计】 推箱子游戏(源码 + 详解) 简介:优快云博客专家,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

Muti-Agent 1万+

程序员带你回味童年,一起用C语言做一个“推箱子”玩!【文末源码】

这篇文章是用C语言做了一个推箱子小游戏,实现起来比较简单,和大家一起回味一下童年捧着按键机玩推箱子的日子!文末附带万字源码! 目录 一、写在前面 二、设计思路 1.主界面函数介绍 2.选择界面函数 3.选择函数 4.游戏步骤重播函数 5.键盘键位设置函数 6.游戏界面函数 7.向左函数 8.向右函数 9.向下函数 10.向上函数 11.通关函数 12.最佳记录函数 13.入队列函数 14.出队列函数 三、最后总结 四、完整源码 Hello,你好呀,我是灰小猿!一个.

累计发表博客60余万字,优快云 博客专家、Java 领域优质创作者、华为云享专家、阿里云专家博主。专注分享 Java 优质文章,毕设实战项目开发,全网粉丝10W+ 9074

C++推箱子游戏源代码

C++推箱子完整代码,包含背景音乐播放,退步,跳过本关,更换背景颜色等多种功能,下载绝不会后悔。

【C++游戏开发-01】推箱子

推箱子为本系列的第一篇,我个人认为这是游戏开发中最基础最简单的部分,所以放在开篇,程序有些入门适合初学者阅读。对于程序方面如果大家有更好的方案欢迎在评论区留言。那么首先为大家介绍一下推箱子的游戏规则:如上图所示,为某一关推箱子的地图画面;其中黄色的圆点为目标点,带有叉的方块是箱子,玩家通过方向键控制小人移动,在移动过程中如果遇到箱子可以推动箱子,但不能拉。如下情况则不可以推动箱子:1.箱子遇到墙壁;2.两个箱子重叠(推动两个箱子);

qq_51000584的博客 3152

C++推箱子游戏最全源代码

C++推箱子游戏最全源代码,游戏开发初学者必备可以进行扩展

C++ 推箱子(源码)

写的时候还只学到了数组,所以推箱子只会涉及到数组和函数 程序实现了:基本推箱子的功能之外还实现了重玩,计步,有效撤回(撞墙的步数不计在内)

C++推箱子小游戏(源码)

功能尚为完善。。。 // ConsoleApplication2.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<iostream> #include<windows.h> #define KEY_DOWN(vk_code) GetAsyncKeyState(vk_code) & 0x8000 ? 1 : ...

weixin_43689161的博客 5472

用C++实现推箱子

本文实例为大家分享了C++实现推箱子游戏的具体代码,供大家参考,具体内容如下 // 1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include <stdio>//■ #include <cstdlib> #include <conio> using std::cout; const int row = 12; const int col = 13; int x = 1; int y = 11; int map[row][col] = { {2,2,2,2,2,2,2,2,2,2,2,2,2}, {2

c语言做推箱子(附源码)

要是想要源代码下面又可以自取,要是自己想做的话,建议找个教程视频,我就是在b站搜c语言推箱子找的视频,没必要看文字去做这个东西。

hjc的博客 1048

OpenClaw 快速安装与本地应用实战 —— 每一步都有截图加详细说明,本地AI助手,让打工人也有下属

《OpenClaw 2026开源智能体框架10分钟快速部署指南》摘要:本文提供OpenClaw最新版全平台部署方案,重点解决三大核心问题:1)环境配置优化,通过一键脚本实现3-8分钟快速安装(含国内镜像加速方案);2)初始化配置详解,包含大模型绑定(智普AI/本地模型)与5个高频技能安装;3)实战演示文件自动整理任务。同时总结6类常见故障解决方案,涵盖权限、端口占用等典型问题,确保用户从安装到首个自动化任务落地全程无障碍。特别强调Windows需管理员权限、禁用中文路径等关键注意事项,实现"安装即

weixin_43538316的博客 809

SAP数据导入工具(LSMW) 超级详细教程(批量导入内部订单)

用户提了个需求,让我批量导入内部订单几百个内部订单。我本打算用写段ABAP 代码来调用 BAPI (BAPI_INTERNALORDER_CREATE)就可以了。但想到我很久没有用过LSMW 了,都快要忘记了。于是我采用LSMW的方式,完成了任务。并把过程记录下来,形成教程方便我以后回头查看,分享出来也希望对大家有帮助。

IT小职员 2万+

C++ 新手推箱子

原创 努力学习C++中 心血来潮,觉得自己需要一个博客,于是翻到自己做的第一个项目–推箱子,之后会将自己的学习之路都放上来 之前写的时候还只学到了数组,所以推箱子只会涉及到数组和函数 程序实现了:基本推箱子的功能之外还实现了重玩,计步,有效撤回(撞墙的步数不计在内) 由于写的比较粗略,代码较长,下面只放上核心代码 void MoveLogic(int a, int b) { ...

兰图的博客 2173

海思3516DV300智能算法实现

海思3516DV300智能算法实现

xiaoning132的专栏 936

C/C++项目开发:推箱子游戏,全源码细致解析

hello,各位小伙伴们大家好! 许久没写C语言的小游戏了,今天闲来无事,动起手来。过程还是蛮顺利的,代码也比较简单。今天给大家分享一下~

致力于C语言C++知识分享! 4944

【微服务】SpringBoot 对接飞书审批流程使用详解

SpringBoot 对接飞书审批流程使用详解

congge_study的博客 3771

8、对比 LightGBM、XGBoost 和深度学习

本文对比了LightGBM、XGBoost和深度学习模型(特别是TabTransformer)在处理表格数据时的性能差异。从模型复杂度、数据准备、训练时间、准确性和适用场景等方面进行分析,重点探讨了三者在人口普查收入预测任务中的表现。文章详细介绍了XGBoost与LightGBM的核心特性与区别,深入讲解了TabTransformer的架构与实现,并涵盖了分类特征编码、缺失值处理和类别不平衡等关键数据预处理技术,为选择合适的表格数据建模方法提供了实践指导。

julia4scientist的博客 120

【C++开发实例】C++推箱子的后续(颜色和字符读取)

上次的推箱子教程后,有小伙伴说希望发添加颜色的代码,那么今天小编就来说一说颜色和一些其他知识: 关于读取字符 1.getchar() 上次说到需要输入按键“w,a,s,d”来使小人移动,但还不能每次输入后都按一下回车。那么今天又是讲干货的一天: 若要读取字符,我们可以: char a; cin>>a; 或是c语言的: char a; scanf("%c",&a); 但其实我们还可以用其他方法: char a; a=getchar(); a=getchar();与scanf("%c"

qq_51000584的博客 2917

软件需求规格说明书(SRS)深入解析

摘要: SRS(软件需求规格说明书)是定义系统功能、性能与接口的核心文档,为开发、测试、项目管理提供依据。标准结构包括引言、总体描述、功能/非功能需求、接口等模块。撰写需确保清晰、可验证、无歧义,避免模糊术语。示例展示学生注册模块的需求写法,强调性能与安全性要求。推荐使用Confluence、StarUML等工具辅助编写,交付时需包含主文档、原型图及需求跟踪矩阵。SRS应兼具技术性与管理性,作为沟通桥梁和验收标准。

moton2017的博客 2931

C++实现推箱子游戏

C++实现推箱子游戏 设计地图 使用二维数组搭建地图, 其中0为虚空、1为墙壁、2为玩家、3为箱子、4为目标点。 int map[HEIGHT][WIDTH] = { {1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 4, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 3, 0, 3, 4, 1}, {1, 4, 0, 3, 2, 0, 0, 1}, {1, 0, 0, 0, 3, 0, 0, 1}, {1, 0, 0

Randdy的博客 1128

【FPGA教程案例89】编译码2——使用vivado核实现RS信道编译码

RS编码,又称里所码,即Reed-solomon codes,是一种前向纠错的信道编码,对由校正过采样数据所产生的多项式有效。当接收器正确的收到足够的点后,它就可以恢复原来的多项式,即使接收到的多项式上有很多点被噪声干扰失真。

FPGA/MATLAB学习教程/源码/项目合作开发 3542

安装openclaw时出现npm error code ENOENT npm error syscall spawn git报错的解决方案

本文主要介绍了安装openclaw时出现npm error code ENOENT npm error syscall spawn git报错的解决方案,希望能对使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 12万+
上一篇: 火龙果的NOIP日记(5):scanf语句的妙用
下一篇: dfs易错点
火龙果king
博客等级 码龄5年 89粉丝 32原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值