我是靠谱客的博主 甜甜招牌,最近开发中收集的这篇文章主要介绍利用c++写一个简单的推箱子小游戏,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

效果图

相信各位都肯定完整这种推箱子的小游戏。游戏玩法很简单,那就是一个人把所有的箱子推动到对应的位置那就可以赢了。

那么我们接下来看看这个推箱子的游戏改怎么写

char map[10][10]=
	{
		{'#','#','#','#','#','#','#','#','#','#'},
		{'#','#','#','#',' ',' ','!',' ',' ','#'},
		{'#',' ',' ',' ',' ','o',' ',' ',' ','#'},
		{'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
		{'#','#',' ','#','#','#',' ','#','#','#'},
		{'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
		{'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
		{'#','#',' ','#',' ','#','#','#','#','#'},
		{'#','#',' ',' ',' ',' ',' ','x','#','#'},
		{'#','#','#','#','#','#','#','#','#','#'}
	};
	void DrawMap(){
		for(int i=0;i<=9;i++){
			for(int j=0;j<=9;j++){
				cout<<map[i][j];
			}
			cout<<endl;
		}
	}

首先先画出地图,这里面的#是墙壁,x是终点,o是推动的箱子,然后!是人,空的字符就是通道。别看界面比较简陋,我们学的是算法,只要思想学会了,随便移植到哪个有界面的程序都是可以的。

                int r,l;              //人的下标 
		for(int i=0;i<=9;i++){
			for(int j=0;j<=9;j++){
				if(map[i][j]=='!'){
					r=i;          //r,l相当于地图的宽度和长度 
					l=j;
				}
			} 
		}

在一开始我们需要遍历,并且获取人的坐标。

cout<<"please enter w(up) s(down) a(left) b(right)"<<endl;
		char ch;
		cin>>ch; 
		if(ch=='w'||ch=='W'){         
			if(map[r-1][l]==' '){   //若往上走没有障碍物 
				map[r][l]==' ';      
				map[r-1][l]='!';    //走上去    
			}
			if(map[r-1][l]=='o'){    //若上面有箱子 
				if(map[r-2][l]==' '||map[r-2][l]=='x'){    //因为要推着箱子走,所以要确保上面的上面还可以走或者到达终点 
					map[r-2][l]='o';
					map[r-1][l]='!';
					map[r][l]=' '; 
				} 
			}
		}
		if(ch=='s'||ch=='S'){
			if(map[r+1][l]==' '){
				map[r][l]=' ';
				map[r+1][l]='!';
			}
			if(map[r+1][l]=='o'){
				if(map[r+2][l]==' '||map[r+2][l]=='x'){
					map[r+2][l]='o';
					map[r+1][l]='!';
					map[r][l]=' ';
				}
			}
		}
		if(ch=='a'||ch=='A'){
			if(map[r][l-1]=' '){
				map[r][l]=' ';
				map[r][l-1]='!';
			}
			if(map[r][l-1]=='o'){
				if(map[r][l-2]==' '||map[r][l-2]=='x'){
					map[r][l-2]='o';
					map[r][l-1]='!';
					map[r][l]=' ';
				}
			}
		}
		if(ch=='d'||ch=='D'){
			if(map[r][l+1]==' '){
				map[r][l+1]='!';
				map[r][l]=' ';
			}
			if(map[r][l+1]=='o'){
				if(map[r][l+2]==' '||map[r][l+2]=='x'){
				map[r][l+2]='o';
				map[r][l+1]='!';
				map[r][l]=' ';
			}
				
			}
			
		}

这里就是进行wsad的上下左右操作。然后操作时候需要判空,判断人是否可以走动。如果是墙壁就不能走动。如果是箱子,那还有判断箱子的前一格是否可以走动,可以的话就直接推箱子了。

总的来说这种游戏并不算太难。如果是多个关卡的话,可以选择加一个关卡地图配置文件。然后让游戏策划进行配置。设计游戏的地图才是这游戏的难点所在。

总结

到此这篇关于利用c++写一个简单的推箱子小游戏的文章就介绍到这了,更多相关c++写推箱子小游戏内容请搜索靠谱客以前的文章或继续浏览下面的相关文章希望大家以后多多支持靠谱客!

最后

以上就是甜甜招牌为你收集整理的利用c++写一个简单的推箱子小游戏的全部内容,希望文章能够帮你解决利用c++写一个简单的推箱子小游戏所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(93)

评论列表共有 0 条评论

立即
投稿
返回
顶部