9.【C++迷宫小游戏以及密码加密和删除操作】

C++小游戏基本思路:

首先我们要知道图像的画册是要通过数组来实现的,因为我们目前不做3D开发,所以我们进行二维数组即可运行,首先我们在画图之前先自己画一个唯一的出口,接下来便可以画一个或则多个迷惑的出口,从而达到视觉迷惑的行为。然后我们要设置四个回调函数,目的是为了控制我们程序角色的移动。然后进行#include<conio.h>的头文件作用是为了使用_getch()函数,然后我们会得到一个指令,得到指令之后然后进行switch()判断,判断到哪一种类型没然后我们就进行相关的移动,然后进行清屏再输入.

C++迷宫小游戏代码展示:

在这里插入图片描述

#include <iostream>
#include <stdlib.h>      //system函数
#include <conio.h>        //getch()函数
using namespace std;
int x = 1, y = 1;
char map[25][61] =
{
	"000000000000000000000000000000000000000000000000000000000000",
	"0!000000         0000000000000000000000000000000000000000000",
	"0 000000 0000000 0000000000000000000         000000000000000",
	"0 000000 0000000               00000 0000000 000000000000000",
	"0 000000 0000000 0000000000000 00000 0000000         0000000",
	"0        0000000 0000000000000       00000000000000000000000",
	"0000000000000000 000000000000000000000000000000000          ",      //出口
	"000              0000000           000000000000000 000000000",
	"000 000000000000 0000000 000000000 000000000000000 000000000",
	"000 00           0000000 0         00000000        000000000",
	"000 00 00000000000000000 0 0000000 00000000 0000000000000000",
	"000 00 00000000000       0 0000000 00000000 0000 00000000000",
	"000 00 00000000000 0000000 0000000          0000 00000000000",
	"000 00 00000000000 000000  00000000 000000000000 00000000000",
	"00  00             000000 000000000 000000000000 00000000000",
	"000000 00000000000 000000 000000000 000000000000 000000    0",
	"00     00000000000                    0000000000 000000 0000",
	"00 000000000000000 0000000 0000000000 0000000000 000000 0000",
	"00 000000          0000000 0000000000 0000000000 000000 0000",
	"00 000000 0000000000000000 0000000000 0000000000        0000",
	"00 000000 0000000000000000 0000000000 0000000000 00000000000",
	"00 000000 000000           0000000000 0000000000 00000000000",
	"00        00000000 0000000 0000000000            00000000000",
	"000000000000000000 0000000          000000000000000000000000",
	"000000000000000000000000000000000000000000000000000000000000",
	
};
void key_w()
{
	if (map[x - 1][y] != '0')          //判断是否与上方相撞
	{
		map[x][y] = ' ';              
		x--;                           //进行位移准备
		map[x][y] = '!';               //  开始位移       
	}
}
void key_s()
{
	if (map[x + 1][y] != '0')
	{
		map[x][y] = ' ';
		x++;
		map[x][y] = '!';
	}
}
void key_a()
{
	if (map[x][y - 1] != '0')
	{
		map[x][y] = ' ';
		y--;
		map[x][y] = '!';
	}
}
void key_d()
{
	if (map[x][y + 1] != '0')
	{
		map[x][y] = ' ';
		y++;
		map[x][y] = '!';
	}
}

int main()
{
	cout << "**********************欢迎来到迷宫大挑战**********************" << endl<<endl<<endl<<endl;
	cout << "W----上移" << "        " << "S----下移" << "       " << "A----左移" << "     " << "D---右移" << endl<<endl<<endl<<endl;
	int p = 6, q = 60;
	char ch;
	for (int i = 0; i < 25; i++)
	{
		for (int j = 0; j < 60; j++)
		{
			cout << map[i][j];
		}
		cout << endl;
	}
	while (x != p || y != q)    //不能是&&,因为while遇到true的时候,会出去
	{
		ch = _getch();          //获取您输入的第一个字符,在c是getch()**加粗样式**
		switch (ch)
		{
		case 's':key_s(); break;
		case 'w':key_w(); break;
		case 'a':key_a(); break;
		case 'd':key_d(); break;
		default:
			cout << "您的指令会出现错误!" << endl;
		}
		system("cls");      //清屏

		for (int i = 0; i < 25; i++)       //目的是得出改变后的图像
		{
			for (int j = 0; j < 60; j++)
			{
				cout << map[i][j];
			}
			cout << endl;
		}
	}
	cout << "恭喜您冲关成功!" << endl;
	system("pasue");            //目的是锁屏
	return 0;

}

C++迷宫实体效果展示:

在这里插入图片描述

在这里插入图片描述

如果我讲的不够详细,您可以私信我。我会进一步向您阐述!

【关于getchar()的小专题】

在这里插入图片描述

getchar()会的到你手动输入的一个字符,然后把这个字符放到一个缓冲区,直到你按下换行键,才会进行操作.

#include <iostream>
using namespace std;
int main()
{
	long nc;
	nc = 0;
	while (getchar() != '\n')    //getchar()得到一个字符并放在缓冲区,当按下回车键时才会运行
	{
		++nc;
		cout << "仨孩子" << endl;
	}
	cout << " " << nc << endl;

}

效果展示:

在这里插入图片描述

【输入密码加密系统】

在这里插入图片描述

1.基本思路和解析:

首先我们要知道c中有一个转义字符‘\b’,它是用来表示后退一步的。当后退一步的时候光标会移动到前一位数字的下面,当你输入一个数字便会覆盖你后退的那个数字(这个能够理解接下来的代码就没有问题了)

2.代码展示:

#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
int main()
{
	char s[100];
	string s1 = "*";
	char c;
	int i = 0;
	cout << "请输入您的密码:" << endl;
	while (1)
	{
		c = _getch();
		if (c == '\r')break;   //按下enter就会退出

		if (c == '\b')   //按下backspace键就会删除
		{
			if (i > 0)        //目的是删除储存进来的那个数组元素
			{	
				i--;
			}
			printf("\b");  //回退一格光标
			printf(" ");	//打印一个空格把要删除的字符覆盖了
			printf("\b");	//再回退一格光标来掩饰掉打印的空格
			continue;      //不能省略,一旦省略就会出现删除不动的错误.
		}
		s[i++] = c;
		cout << "*";

	}
	cout << "您输入的密码是:" ;
	for (int j = 0; j < i; j++)
	{
		cout << s[j];
	}
}

密码加密删除效果

在这里插入图片描述

制作不易,谢谢支持!!!!

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉士先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值