猫史档案馆


C++如何做简单游戏(大佬勿入)

用户:AucunAucun查看:17 回复:22 评论:17 创建时间:2022-05-09T10:03:00


我们的头文件一定要有iostream和cstdio两个头文件,不然会报错哦!
今天我们来设置一个星号可以在一个井号方框里上下左右移动的简单游戏
1:绘制游戏地图(*为游戏角色),首先我们要定义一个char型的二维数组,如下:

char a[100][100]={
		"######",
		"#*   #",
		"#    #",
		"######",
	};

接着,我们要把它打出来,那么有些人肯定说用两个for循环,再cout<<a[i][j]对不对?,but,我们有一个函数:puts,它的头文件是cstdio,它的意思就是:打完一行换一行

for(int i=0;i<=10;i++)
		puts(a[i]);

上打出地图的代码:

#include <iostream>
#include <cstdio>
using namespace std;
int main(){
	char a[100][100]={
		"######",
		"#*   #",
		"#    #",
		"######",
	};
	for(int i=0;i<=10;i++)
		puts(a[i]);

移动角色,这下有人说一定要用什么高级的函数了吧?不!我们一点也不需要这些!
我们移动角色的原理:每输出一个移动键就重绘一下画面,是不是听起来简单多了?那么,就开始欢乐的敲代码时间吧!
首先,我们定义一个记录角色坐标的横坐标x,纵坐标y

int x=1,y=1;

我们要定义一个char变量,然后电脑会判断你按的是什么键,然后绘出什么样的图,在这里,我们w上,s下,a左,d右,但是,如何让框上不显示并且不按回车你打入的按键呢?这个时候我们就有需要一个简单函数——getch了

变量名=_getch();

有一个问题来了:怎么实现移动?
很简单,我上一段左移代码,你就基本懂了!

if(ch=='a'){
	if(a[x][y-1]!='#'){
		a[x][y]=' ';
		y--;
		a[x][y]='*';
	}
}

我们只要调用system,再打个括号,输入特定的代码,即可达到清除之前画面的效果,还要记住,他有一个头文件:windows.h,看代码:

system("cls");

再用之前的方法绘出画面

for(int i=0;i<=10;i++)
		puts(a[i]);

先把目前的代码放出来

#include <iostream>
#include <cstdio>
#include <conio.h>
#include <windows.h>
using namespace std;
int main(){
	char a[100][100]={
		"######",
		"#*   #",
		"#    #",
		"######",
	};
	for(int i=0;i<=10;i++)
		puts(a[i]);
	char ch;
	int x=1,y=1;
	ch=_getch();
	if(ch=='a'){
		if(a[x][y-1]!='#'){
			a[x][y]=' ';
			y--;
			a[x][y]='*';
		}
	}
	if(ch=='s'){
		if(a[x+1][y]!='#'){
			a[x][y]=' ';
			x++;
			a[x][y]='*';
		}
	}
	if(ch=='d'){
		if(a[x][y+1]!='#'){
			a[x][y]=' ';
			y++;
			a[x][y]='*';
		}
	}
	if(ch=='w'){
		if(a[x-1][y]!='#'){
			a[x][y]=' ';
			x--;
			a[x][y]='*';
		}
	}
	system("cls");
	for(int i=0;i<=10;i++)
		puts(a[i]);
}

运行后,我们发现之能移动一次就停了,所以要加上喵循环:while(1)
然后,你可以在代码前面再打一个system(“title 移动小游戏”);
会有惊喜哦!
最后,打上retrun 0;小游戏就完成了!(p≧w≦q)
最后,放上全代码:

#include <iostream>
#include <cstdio>
#include <conio.h>
#include <windows.h>
using namespace std;
int main(){
	system("title 移动小游戏");
	char a[100][100]={
		"######",
		"#*   #",
		"#    #",
		"######",
	};
	for(int i=0;i<=10;i++)
		puts(a[i]);
	char ch;
	int x=1,y=1;
	while(1){
		ch=_getch();
		if(ch=='a'){
			if(a[x][y-1]!='#'){
				a[x][y]=' ';
				y--;
				a[x][y]='*';
			}
		}
		if(ch=='s'){
			if(a[x+1][y]!='#'){
				a[x][y]=' ';
				x++;
				a[x][y]='*';
			}
		}
		if(ch=='d'){
			if(a[x][y+1]!='#'){
				a[x][y]=' ';
				y++;
				a[x][y]='*';
			}
		}
		if(ch=='w'){
			if(a[x-1][y]!='#'){
				a[x][y]=' ';
				x--;
				a[x][y]='*';
			}
		}
		system("cls");
		for(int i=0;i<=10;i++)
			puts(a[i]);
	}
	return 0;
}

是不是觉得编游戏没那么难了?希望对你有用哦

 

 

 

 


回复

上一页1 页 / 共 1下一页
yee089yee089

嗯我学会了_getch()()()()

点赞0


评论


我是菜鸟啊我是菜鸟啊

不错imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E5%8A%A0%E6%B2%B9.gif"alt="emotion_编程猫_加油"

点赞0


评论


我是菜鸟啊我是菜鸟啊

应该可以上首页imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E7%82%B9%E8%B5%9E.gif"alt="emotion_编程猫_点赞"

点赞0


评论


AucunAucun

https://shequ.codemao.cn/community/458813

点赞0


评论


毁灭者明世隐毁灭者明世隐

哇塞(这就是成c++?)

点赞0


评论


治愈绾兮治愈绾兮

众所周知,万能头文件是必备的()而你却要一个个导入()

点赞1


评论


张允旭张允旭

az,输出他用cout<<他不香吗?

输入用cin>>他不香吗?

(毕竟不是竞赛)

点赞1


评论


小鹿UUyM小鹿UUyM

好简单啊title不就是标题吗,然后来个清屏,再来个输出emotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_dogeemotion_doge

点赞2


评论


10cKYouse1f10cKYouse1f

很棒啊,加油,我刚开始的时候也没做到这种程度呢

点赞0


评论


用户_869149用户_869149


要顶
必须顶
不得不顶
用尽全力顶
再加上千斤顶
总之把它顶到顶
接着使出葵花宝顶
就算顶到史前也要顶
老子看了会用道德经顶
孔子亲自拜你为师天天顶
秦始皇站在阿房宫上使劲顶
汉高祖挥师杀向东罗马为你顶
吕布抛弃了貂禅而选择了帮你顶
张三丰见了后用太极拳九式全力顶
左冷禅召开武林盟主大会商讨如何顶
西门吹雪从此学会了最强一招剑神一顶
龙剑飞的儒来神掌最后一式改为万佛朝顶
陆小凤从此再也不管闲事了而专门来为你顶
四大名捕四面出击看天下还有没有人敢不在顶
顶到阎罗王说我制造噪音我刁根烟看看他继续顶
顶到火山喷发太平洋海啸我还要继续往喵里顶
顶到益阳地震山崩地裂地下水泛滥我还要顶
顶到地下水喷发造成洪灾损失惨重我也顶
要是你觉得敢兴趣你也可以过来一起顶
要是你看我不爽我没办法还要继续顶
要是 C T敢过来阻止我就更加要顶
要是别人见了骂我傻我还是要顶
要是踩到我脚喵我也继续顶
要是地面凹了我不管继续顶
要是天真塌下来了继续顶
就算天塌下来我都要顶
就算鸡店倒闭也要顶
就算鞋子烂也要顶
我用尽全力去顶
我非常用力顶
我很用力顶
我用力顶
我再顶
顶顶

点赞0


评论


用户_869149用户_869149

我只能说您太nb,我太屑()

点赞0


评论


PAQ_LeoPAQ_Leo

加入C风格的字符是因为减少时间,作者,另外这个2维数组可以加大点,给充足

点赞0


评论


judgment20judgment20

求看作品:https://shequ.codemao.cn/work/146346973

点赞0


评论


Eternal_BlueEternal_Blue

还有一点,C语言的窗口大小有限,搞不好会超出窗口范围,以及有时候会卡住(电脑性能不好说),可以尝试用绘制图形的方法改进一下

点赞0


评论


AucunAucun

ddd

点赞0


评论


mhdLing314mhdLing314

system函数在iostream里已经包含了

点赞0


评论


MC斩天MC斩天

原来胡堂主还会c++()

点赞0


评论


红眼DDB红眼DDB

谁挖的纹啊!算了我也来挖纹()

点赞0


评论


fssly_123fssly_123

教我c++!!!!

点赞0


评论


一只小温迪一只小温迪

别想投胎呦(bushi

点赞0


评论


AucunAucun

ddd

点赞0


评论


隐凤之龙隐凤之龙

韩国

 

点赞0


评论