文字版推箱子游戏

本文介绍了如何创建一个10*10的字符界面推箱子游戏。通过键盘控制移动,利用asdw代表四个方向,q键退出。文章讨论了边界处理、障碍物设定以及用结构体管理坐标和物体行为,提高代码可读性和程序逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


看起来是这样的

创建框架,输出一个10*10带边界的字符界面

#include <cstdio>
#include <iostream>
using namespace std;
char mp[101][101] = {
	"************"
	"*o         *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"************"
};	//*代表边界 
int main(){
	//输出整个界面 
	for(int i = 0; i <= 11; i++){
		for(int j = 0; j <= 11; j++)
			cout << mp[i][j];
		cout << endl;
	}
	
	return 0;
}

让界面动起来,asdw代表4个方向,q退出

当按下按键的时候:1清屏,2修改(o移动),3重画

#include <cstdio>
#include <iostream>
#include <conio.h> 
using namespace std;
char mp[101][101] = {
	"************"
	"*o         *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"************"
};	//*代表边界 
int x = 1, y = 1; //o的默认坐标1,1 
int main(){
	char key;
	//程序主体是一个循环 
	do{ 
		system("cls");	//清屏 
		mp[x][y] = ' ';	//原o位置清空 
		if(key == 'a')	y--;	//左 
		if(key == 's')	x++;	//下 
		if(key == 'd')	y++;	//右 
		if(key == 'w')	x--;	//上 
		mp[x][y] = 'o';	//新o位置画o 
		//重画 
		for(int i = 0; i <= 11; i++){
			for(int j = 0; j <= 11; j++)
				cout << mp[i][j];
			cout << endl;
		}
		key = getch();	//a s d w代表四个方向,q退出
	}while(key != 'q'); //q代表退出 
	
	return 0;
}

虽然动起来,单遇到#边界时会把边界“吃掉”

判断是否边界,或者下个位置是否能走,引入下个位置的坐标nx,ny

#include <cstdio>
#include <iostream>
#include <conio.h> 
using namespace std;
char mp[101][101] = {
	"************"
	"*o         *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"************"
};	//*代表边界 
int x = 1, y = 1; //o的默认坐标1,1 
int nx, ny;	//o的下一个位置预判 
int main(){
	char key;
	//程序主体是一个循环 
	do{ 
		system("cls");	//清屏 
		//求下一个位置 
		nx = x; ny = y; 
		if(key &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值