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~

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值