带你学会C++文字页面类项目——3.答题器制作

目录

🔮前言

📕大体框架

📗所有string制作

💴1.question

💵2.ans

💶3.encourage

📘3s跳转制作

📙宝箱页制作

📔综合制作

🧳总结


🔮前言

        往期链接:2.引子与首页部分制作

        上一期,我们学习了引子与首页部分的制作。本次我带大家来认识答题器基本制作。

📕大体框架

        在制作答题器时,我们大体思路为:

string question={"...",...};//题目字符串
string ans="ABCD...";//答案字符串
string encourage={"...",...};//系统鼓励字符串,可有可无

void questions(){
    1.页面颜色,标题等;
    for(int i=1;i<题目数;i++){
        输入;
        判断,score++;
        其他;
    }
    2.宝箱页跳转与否
}

        也就是先进行题目与答案的整合,包括系统提示(待会会讲)。这样代码可读性更高。

📗所有string制作

💴1.question

        这里指题目部分。我们可以加上需要(1.  2.等),但最好不用加,在for循环内再加。这样题目次序就没有限制。我们一般会多用\n\n空行分隔,做的要清晰一点。比如:

        这里,我给出范例:

string question2[6]={"由于重金属矿物的不科学开采和利用,没有造成了什么现象?\n\nA.金属元素侵入土壤\n\nB.土质结构改变\n\nC.增加泥土含金量,造福当地村民\n\nD.影响农作物生长","如果泥砂涌入大海,有可能发生什么?\n\nA.危及海洋生物链\n\nB.引发洪灾\n\nC.海水淹没陆地\n\nD.填海造地后多植树就会对环境好","生态文明是指什么?\n\nA.人类遵循社会主义,共产主义与环境保护三者精神成果的总和\n\nB.人类遵循人、自然、社会和谐发展这一客观规律而取得的物质与精神成果的总和\n\nC.人们拥有保护环境的习惯\n\nD.建设崇明东滩湿地","从哪三大效益的需要来看,山区的自然地貌决定了最适宜发展的就是林业?\n\nA.经商,旅游业,经济\n\nB.环境,风气,态度\n\nC.民主,富强,智慧\n\nD.经济、社会、生态","植树造林应遵循什么?\n\nA.雨水多,土地肥沃\n\nB.天时、地利、人和\n\nC.心情好就行\n\nD.与树交流感情"};

💵2.ans

        ans指回答结果。对于一题给一个大写字母(小写也不是不行,就是后面需要改变处理方式)

        他只用一个string就可以完成。例如:

string ans="CDAAB";

💶3.encourage

        系统提示。指作对几道题,就给不同的鼓励。直接给到:

string encourage[30]={"一往无前,路漫漫其修远兮!恭喜您答对1题!","众望攸归,曾无与二!且喜青云足下生!恭喜您答对2题!","韦编三绝,观隅反三,书中自有颜如玉!恭喜您答对3题!","精诚所至,金石为开。名扬四海,指日可待!恭喜您答对4题!","学富五车,梅花香自苦寒来!恭喜您答对5题!","四清六活,天生我材必有用!恭喜您答对6题!","七步成诗,我辈岂是蓬蒿人!恭喜您答对7题!","八斗之才,指示青云借羽翰!恭喜您答对8题!","声闻九皋,卓尔超群,九万抟扶排羽翼!恭喜您答对9题!","十年寒窗逢佳日,且喜青云足下生!恭喜您答对10题!","金榜高悬姓字真,分明折得一枝春!恭喜您答对11题!","海阔凭鱼跃,天高任鸟飞!恭喜您答对12题!","千淘万漉虽辛苦,吹尽狂沙始到金!恭喜您答对13题!","三万里河东入海,五千仞岳上摩天!恭喜您答对14题!","不畏浮云遮望眼,自缘身在最高层!恭喜您答对15题!","循序而渐进,熟读且精思。恭喜您答对16题!","春风得意马蹄疾,一日看尽长安花!恭喜您答对17题","操千曲而后晓声,观千剑而后识器!恭喜您答对18题!","少年莫坠青云志,敢许天下第一流!恭喜您答对19题!","一万年来谁著史,八千里外觅诸侯!恭喜您,答对,20题!!!"}; 

        是不是很有文学气息?其是这是现在希望学的系统提示,作者借鉴模仿。

📘3s跳转制作

        一些3s跳转,往往是大家在一些小游戏内可以普遍看到的。对于C++的3s跳转,我们宜可轻松完成。

        这里用到了退格键\b的用法,有不清楚的可以看我的往期文章:

        往期文章:详解那些C++中特殊的转义字符(\b, \r, \f 等)

        先看一看普通跳转:

cout<<"\n\n\t3s后跳转...";
Sleep(1000);
cout<<"\b\b\b\b\b\b\b\b\b\b\b2s后跳转...";
Sleep(1000);
cout<<"\b\b\b\b\b\b\b\b\b\b\b1s后跳转...";
Sleep(1000);

        我们还可以改成跳转首页,跳转至下一题。但记住,中文字符占两个位,需要两个\b符!!! 

        其他没什么好说的,我们继续。

📙宝箱页制作

        我们先学习如何做宝箱。宝箱主要用颜文字:

   /###((\o/))####/ |
  /_____//^\\____/# |
 |       #       |# |
 |  超   #   宝  |# |
 |  级   #   箱  |#/
 |_______#____ __|/
                     恭喜你全做对了,点击x键领取宝箱!)

        我们需要先输出宝箱图案,在进行getch()=='x'与否进行判断。用户点击x键,进行宝箱领取,金币添加。

        为了保证金币数与返回到原页面,我们还需要给定参数n代表金币数且字符w代表原页面。这里原页面的函数根据自己的要求所定。

        所以代码为:

void chest(int n,char w){
	rgb_set(255,97,0,189,252,201);
	system("cls");
	system("title 开宝箱");
	cout<<"\t\t\t\t";
	alert("宝箱\n\n");
	rgb_set(255,153,18,189,252,201);
	cout<<"\t\t\t     ◎金币:"<<corn<<"\n";
	rgb_set(255,97,0,189,252,201);
	Slert("   /###((\\o/))####/ |\n  /_____//^\\\\____/# |\n |       #       |# |\n |  超   #   宝  |# |\n |  级   #   箱  |#/\n |_______#____ __|/\n                     恭喜你全做对了,点击x键领取宝箱!)");
	while(1){
		switch(getch()){
			case 'x':{
				system("cls");
				cout<<"\t\t\t\t";
				alert("宝箱\n\n");
				rgb_set(255,153,18,189,252,201);
				cout<<"\t\t\t     ◎金币:"<<corn<<"\n";
				corn+=n;
				rgb_set(255,97,0,189,252,201);
				if(n<10){
					Slert("\\   恭喜您获得了    /\n \\   	  "); 
					cout<<n;
					Slert("        /\n  \\      枚       /\n   \\     ◎      /\n    \\           /\n\n\n"); 
				}else{
					Slert("\\   恭喜您获得了    /\n \\   	 "); 
					cout<<n;
					Slert("        /\n  \\      枚       /\n   \\     ◎      /\n    \\           /\n\n\n"); 
				} 
				
				rgb_set(0,97,255,189,252,201);
				cout<<"\n\n\t3s后返回...";
				Sleep(1000);
				cout<<"\b\b\b\b\b\b\b\b\b\b\b2s后返回...";
				Sleep(1000);
				cout<<"\b\b\b\b\b\b\b\b\b\b\b1s后返回...";
				Sleep(1000); 
				if(w=='1')
					page1_environment_protect();
				else if(w=='2')
					page2_make_changes();
				else if(w=='3')
					page3_new_materials();
				else
					homepage(); 
				break;
			}
			case 'X':{
				system("cls");
				cout<<"\t\t\t\t";
				alert("宝箱\n\n");
				rgb_set(255,153,18,189,252,201);
				cout<<"\t\t\t     ◎金币:"<<corn<<"\n";
				corn+=n;
				rgb_set(255,97,0,189,252,201);
				if(n<10){
					Slert("\\   恭喜您获得了    /\n \\   	  "); 
					cout<<n;
					Slert("        /\n  \\      枚       /\n   \\     ◎      /\n    \\           /\n\n\n"); 
				}else{
					Slert("\\   恭喜您获得了    /\n \\   	 "); 
					cout<<n;
					Slert("        /\n  \\      枚       /\n   \\     ◎      /\n    \\           /\n\n\n"); 
				} 
				
				rgb_set(0,97,255,189,252,201);
				cout<<"\n\n\t3s后返回...";
				Sleep(1000);
				cout<<"\b\b\b\b\b\b\b\b\b\b\b2s后返回...";
				Sleep(1000);
				cout<<"\b\b\b\b\b\b\b\b\b\b\b1s后返回...";
				Sleep(1000);
				if(w=='1')
					page1_environment_protect();
				else if(w=='2')
					page2_make_changes();
				else if(w=='3')
					page3_new_materials();
				else
					homepage();
				break;
			}
		}
	}
}

📔综合制作

        接着,我们来完成答题部分制作。

        直接上代码:

void questions(){
	rgb_set(0,0,0,189,252,201);
	system("cls");
	system("title 趣味答题");
	cout<<"\t\t\t\t";
	Slert("趣味答题\n\n");
	rgb_set(255,153,18,189,252,201);
	cout<<"\t\t\t     ◎金币:"<<corn<<"\n";
	rgb_set(48,128,20,189,252,201);
	int score=0;
	char answ; 
	for(int i=1;i<=5;i++){
		cout<<i<<'.'; 
		Slert(question[i-1]);
		Slert("\n\n请输入您的答案:_____\b\b\b\b\b");
		cin>>answ;
		
		if(answ==ans[i-1]||answ==ans[i-1]+32){
			corn++;
			rgb_set(0,0,0,189,252,201);
			system("cls");
			cout<<"\t\t\t\t";
			cout<<"趣味答题\n\n";
			rgb_set(255,153,18,189,252,201);
			cout<<"\t\t\t     ◎金币:"<<corn<<"\n";
			rgb_set(0,50,240,189,252,201);
			Slert("\t系统提示:");
			Slert(encourage[score++]);
		}else{
			rgb_set(0,0,0,189,252,201);
			system("cls");
			cout<<"\t\t\t\t";
			cout<<"趣味答题\n\n";
			rgb_set(255,153,18,189,252,201);
			cout<<"\t\t\t     ◎金币:"<<corn<<"\n";
			rgb_set(0,50,240,189,252,201);
			Slert("\t系统提示:信心来自于实力,实力来自于勤奋。继续加油!");
		}
		rgb_set(255,0,0,189,252,201);
		if(i!=5){
			cout<<"\n\n\t3s后跳转到下一题...";
			Sleep(1000);
			cout<<"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b2s后跳转到下一题...";
			Sleep(1000);
			cout<<"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b1s后跳转到下一题...";
			Sleep(1000);
		}else{
			cout<<"\n\n\t3s后跳转...";
			Sleep(1000);
			cout<<"\b\b\b\b\b\b\b\b\b\b\b2s后跳转...";
			Sleep(1000);
			cout<<"\b\b\b\b\b\b\b\b\b\b\b1s后跳转...";
			Sleep(1000);
		}
		rgb_set(0,0,0,189,252,201);
		system("cls");
		cout<<"\t\t\t\t";
		cout<<"趣味答题\n\n";
		rgb_set(255,153,18,189,252,201);
		cout<<"\t\t\t     ◎金币:"<<corn<<"\n";
		rgb_set(48,128,20,189,252,201);
	}
	if(score==5){
		chest(5,'1');
	}
	alert("\n\t恭喜您完成答题,点击R返回。");
	while(1){
		switch(getch()){
			case 'r':
				原函数; 
				break;
			case 'R':
				原函数;
				break;
		}	
	}
} 

        做出来效果十分的不错。大家如果不想做大的项目,只想做一个答题器,可以对此代码进行删改。

🧳总结

        本期我带大家学了:

        答题器中的string,3s跳转,宝箱页,答题器制作。

  

        下次我们进行综合完善环节,非常精彩,敬请期待。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值