C++自制程序《三阶魔方》V1.0

Hello,大家好!我是派蒙,最近我在学习三阶魔方,我用DEV C++自制了一个关于三阶魔方的程序,其中包括了我的另一个程序:三阶魔方随机打乱公式生成器(详见我的文章:《三阶魔方随机打乱公式生成器V1.0(C++)》)。那么下面就将源代码分享给大家。

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int a[1001]; 
int main(){
	string gn;
	int b=30;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x02);
	while(b--){
		cout<<"=";
		Sleep(80);
	} 
	cout<<"三";
	Sleep(100);
	cout<<"阶";
	Sleep(100);
	cout<<"魔";
	Sleep(100);
	cout<<"方";
	Sleep(100);
	b=30;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x02);
	while(b--){
		cout<<"=";
		Sleep(80);
	} 
	//     ==============================三阶魔方==============================
	
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0F);
	cout<<endl<<endl;
	Sleep(500);
	cout<<"                             by 原神派蒙\n"<<endl;
	Sleep(500);
	cout<<"                            欢迎使用本程序!"<<endl;
	Sleep(1000);
	system("cls");
	while(1){//=========================================================================================
		cout<<"==============================三阶魔方=============================="<<endl;
	cout<<"请选择您要使用的功能:"<<endl; 
	cout<<"(输入对应中文即可)"<<endl;
	cout<<"公式\n随机打乱\n"<<endl;
	cin>>gn;
	system("cls");
	if(gn=="公式"){
		cout<<"==============================三阶魔方=============================="<<endl;
		cout<<"请选择章节:"<<endl;
		cout<<"(输入中文即可)"<<endl;
		cout<<"1.黄白小花\n2.底部十字\n3.还原底面\n4.还原侧面棱块\n5.顶部十字\n6.还原顶面\n7.做出四面凹字\n8.六面还原"<<endl;
		cin>>gn;
		system("cls");
		if(gn=="黄白小花"){
			cout<<"==============================三阶魔方=============================="<<endl;
			cout<<"章节1:黄白小花"<<endl;
			cout<<"暂无教程。"<<endl;
			cout<<"3秒后退出。" <<endl;
			Sleep(3000);
		}
		if(gn=="底部十字"){
			cout<<"==============================三阶魔方=============================="<<endl;
			cout<<"章节2:底部十字"<<endl;
			cout<<"暂无教程。"<<endl;
			cout<<"3秒后退出。" <<endl;
			Sleep(3000);
		}
		if(gn=="还原底面"){
			cout<<"==============================三阶魔方=============================="<<endl;
			cout<<"章节3:还原底面"<<endl;
			cout<<"找到一个带白颜色的角块,将其置于此棱块另外两个颜色所对应的中心块中间"<<endl;
			cout<<"的上方,并做公式:勾 上 回 下  做多次,直到复原该角块。";
			cout<<"(按任意键退出)"<<endl;
			cin>>gn;
		}
		if(gn=="还原侧面棱块"){
			cout<<"==============================三阶魔方=============================="<<endl;
			cout<<"章节4:还原侧面棱块"<<endl;
			cout<<"找到一个不带黄色的棱块,将它下方的颜色与对应的中心块对齐,若该棱块另"<<endl;
			cout<<"的一颜色在右边,做公式:勾 上 回 下 将魔方整体往左转一面,继续做公式:"<<endl;
			cout<<"回 顶 勾 底  做一次即可。"<<endl;
			cout<<"若另一颜色在左边,做公式:回 顶 勾 底 将魔方整体往右转一面,继续:"<<endl;
			cout<<"勾 上 回 下 一次即可。\n";
			cout<<"(按任意键退出)"<<endl;
			cin>>gn;
		}
		if(gn=="顶部十字"){
			cout<<"==============================三阶魔方=============================="<<endl;
			cout<<"章节5:顶部十字"<<endl;
			cout<<"情况一:直角"<<endl;
			cout<<"将黄色构造成的直角开口对着自己的左前方,做公式上 勾 下 回 两遍"<<endl;
			cout<<"情况二:直线"<<endl;
			cout<<"将直线横着(水平)对着自己做公式:上 勾 下 回 一遍"<<endl;
			cout<<"情况三:中心点"<<endl;
			cout<<"先做公式:上 勾 下 回,接下来按照情况一操作"<<endl;
			cout<<"(按任意键退出)"<<endl;
			cin>>gn;
		}
		if(gn=="还原顶面"){
			cout<<"==============================三阶魔方=============================="<<endl;
			cout<<"章节6:还原顶面"<<endl;
			cout<<"做公式上 回 回 下 回 上 回 下 做多次,直到还原"<<endl;
			cout<<"(按任意键退出)"<<endl;
			cin>>gn;
		}
		if(gn=="做出四面凹字"){
			cout<<"==============================三阶魔方=============================="<<endl;
			cout<<"章节7:做出四面凹字"<<endl;
			cout<<"观察侧面最上面一层是否有两个颜色一样的角块在同一面,若有,将此面对准"<<endl;
			cout<<"自己的右手,做公式:上 勾 下 回 下 顺 上 上 回 下 回 上 勾 下 提;"<<endl;
			cout<<"若没有,做公式:顺 上 回 下 回 上 勾 下 提 上 勾 下 回 下 顺 上 提。"<<endl;
			cout<<"(按任意键退出)"<<endl;
			cin>>gn;
		}
		if(gn=="六面还原"){
			cout<<"==============================三阶魔方=============================="<<endl;
			cout<<"章节8:六面还原"<<endl;
			cout<<"观察侧面,若四面皆为凹字,直接做公式:上 回 上 勾 上 勾 上 回 下 回 "<<endl;
			cout<<"下 下 此时若并未还原且只有三面凹字,将侧面还原的那一面朝后,做公式:"<<endl;
			cout<<"上 回 上 勾 上 勾 上 回 下 回 下 下 "<<endl;
			cout<<"若本身就只有三面凹字,将侧面还原的那一面朝后,做公式:上 回 上 勾 上"<<endl;
			cout<<"勾 上 回 下 回 下 下 "<<endl; 
			cout<<"(按任意键退出)"<<endl;
			cin>>gn;
		}
	}else if(gn=="随机打乱"){//------------------------------------------------------------------------------------- 
		char n;
	while(1){
		int b,k,cnt=0;
		cout<<"==============================三阶魔方=============================="<<endl;
		cout<<"请输入想要的次数:"<<endl;
		cout<<"(推荐选择较大次数)"<<endl;
		cin>>b;
		cout<<"正在生成中......"<<endl;
		Sleep(1000);
		system("cls");
	
		for(int i=1;i<=b;i++){
			cout<<"==============================三阶魔方=============================="<<endl;
			cout<<"生成:"<<i<<"步  剩余:"<<b-i<<endl<<endl;
			k=rand()%8;
			a[i]=k;
			if(k==0){
				cout<<"上 ";
			}
			if(k==1){
				cout<<"下 ";
			}
			if(k==2){
				cout<<"顶 ";
			}
			if(k==3){
				cout<<"底 ";
			}
			if(k==4){
				cout<<"勾 ";
			}
			if(k==5){
				cout<<"回 ";
			}
			if(k==6){
				cout<<"顺 ";
			}
			if(k==7){
				cout<<"提 ";
			}
			if(k==8){
				cout<<"随机换一面 ";
			}
			Sleep(1000); 
			system("cls");
		}
	cout<<"==============================三阶魔方=============================="<<endl;
	cout<<"生成完成!"<<endl;
	cout<<b<<"步"<<endl;
	cout<<"步骤如下:"<<endl; 
	for(int i=1;i<=b;i++){
		if(a[i]==0){
			cout<<"上 ";
		}
		if(a[i]==1){
			cout<<"下 ";
		}
		if(a[i]==2){
			cout<<"顶 ";
		}
		if(a[i]==3){
			cout<<"底 ";
		}
		if(a[i]==4){
			cout<<"勾 ";
		}
		if(a[i]==5){
			cout<<"回 ";
		}
		if(a[i]==6){
			cout<<"顺 ";
		}
		if(a[i]==7){
			cout<<"提 ";
		}
		if(k==7){
			cout<<endl<<"换面 "<<endl;
		}
	} 
	cout<<endl<<"继续生成(输入A)"<<endl;
	cout<<"退出(输入B)"<<endl;
	cin>>n; 
	if(n=='B'||n=='b'){
		cout<<"欢迎下次使用!";
		break; 
	}
	system("cls");
	}
	}
	system("cls");
	}
	
}

效果图:

当然,我肯定不会止步于此,后期将会添加其他功能,当然也会发表在CSDN上。

--------------------------------------------------------------------------------------------------------

(转载请标明原作者)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值