c++自制一个小小的加减乘除游戏。

本文介绍了一个使用C++编写的控制台应用程序,包含用户登录、注册功能以及一个基于随机数学题目的游戏环节,旨在教授小学生基础运算。
摘要由CSDN通过智能技术生成
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
#define colour(a) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a)
char user[1000],password[1000];
int flag=0;
void title()
{
	colour(3);
	cout<<"********************************"<<endl<<"**";
	colour(4);
	cout<<" 欢迎来到小学生加减乘除游戏 ";
	colour(3);
	cout<<"**"<<endl<<"********************************"<<endl;
	colour(4);
	cout<<"  请选择1(进入游戏)2(退出游戏)"<<endl;
	while(1){
		int n;
		cin>>n;
		if(n==1)
		break;
		else if(n==2)
		{
			flag=1;	
			break;
		}
		else
		cout<<"选择错误"<<endl;
	}
	
}
void regist()
{

	char a[1000],b[1000];
	while(1){
		cout<<"请选择1(登录自己账号)2(注册账号)3(退出游戏)"<<endl;
		int n;
		cin>>n;
		if(n==1)
		{
			cout<<"请输入用户名:";
			cin>>a;
			cout<<"请输入密码:";
			cin>>b;
			if(strcmp(a,user)!=0||strcmp(b,password)!=0) 
			cout<<"输入用户/密码错误!"<<endl<<"请重新输入"<<endl;
			else
			break;
			Sleep(1200);
			system("cls");
		}
		else if(n==2)
		{
			cout<<"请输入注册用户名:";
			cin>>user;
			cout<<"请输入注册密码:";
			cin>>password;
			cout<<"注册成功!"<<endl;
			Sleep(1200);
			system("cls");
		}
		else if(n==3)
		{
			flag=1;
			break;
		}
		else
		cout<<"选择错误!"<<endl;
	}
}
void game()
{
	while(1){
	int k;
	cout<<"输入1退出游戏,输入其他代表继续游戏"<<endl;
	cin>>k;
	if(k==1) break;
	int n,ans=0;
	colour(5);
	cout<<"请选择你要挑战的题数:";
	cin>>n;
	system("cls");
	cout<<endl<<"游戏马上开始"<<endl;
	Sleep(1200);
	while(n--){
	char equation[100];
	int f1,f2,f3,f4,f5;
	double result,youresult;
	f1=rand()%4,f2=rand()%4,f3=rand()%10,f4=rand()%10,f5=rand()%10;
	equation[1]=f3+48,equation[3]=f4+48,equation[5]=f5+48;
	if(f1==0)
	equation[2]='+';
	else if(f1==1)
	equation[2]='-';
	else if(f1==2)
	equation[2]='*';
	else 
	equation[2]='/';
	
	if(f2==0)
	equation[4]='+';
	else if(f2==1)
	equation[4]='-';
	else if(f2==2)
	equation[4]='*';
	else 
	equation[4]='/';
	
	if(equation[2]=='/'&&equation[3]==48) equation[3]++;
	if(equation[4]=='/'&&equation[5]==48) equation[5]++;
	if((equation[2]=='+'||equation[2]=='-')&&(equation[4]=='*'||equation[4]=='/'))
	{
		double k1;
		if(equation[4]=='*')
		{
			k1=(double)(equation[3]-48)*(equation[5]-48);
			if(equation[2]=='+')
			result=(equation[1]-48)+k1;
			else
			result=(equation[1]-48)-k1;
		}
		else
		{
			k1=(double)(equation[3]-48)/(equation[5]-48);
			if(equation[2]=='+')
			result=(equation[1]-48)+k1;
			else
			result=(equation[1]-48)-k1;
		}
	}
	else if((equation[2]=='*'||equation[2]=='/')&&(equation[4]=='+'||equation[4]=='-'))
	{
		double k1;
		if(equation[2]=='*')
		{
			k1=(double)(equation[1]-48)*(equation[3]-48);
			if(equation[4]=='+')
			result=(equation[5]-48)+k1;
			else
			result=k1-(equation[5]-48);
		}
		else
		{
			k1=(double)(equation[1]-48)/(equation[3]-48);
			if(equation[4]=='+')
			result=(equation[5]-48)+k1;
			else
			result=k1-(equation[5]-48);
		}
	}
	else if((equation[2]=='+'||equation[2]=='-')&&(equation[4]=='+'||equation[4]=='-'))
	{
	    double k1;
	    if(equation[2]=='+')
	        k1=(equation[1]-48)+(equation[3]-48);
	    else
	        k1=(equation[1]-48)-(equation[3]-48);
	        
	    if(equation[4]=='+')
	        result=k1+(equation[5]-48);
	    else
	        result=k1-(equation[5]-48);    
	}
	else if((equation[2]=='*'||equation[2]=='/')&&(equation[4]=='*'||equation[4]=='/'))
	{
	    double k1;
	    if(equation[2]=='*')
	        k1=(double)(equation[1]-48)*(equation[3]-48);
	    else
	        k1=(double)(equation[1]-48)/(equation[3]-48);
	        
	    if(equation[4]=='*')
	        result=k1*(equation[5]-48);
	    else
	        result=k1/(equation[5]-48);    
	}
	int p=(int)result*100;
	result=(double)p/100;
	for(int i=1;i<=5;i++){
		cout<<equation[i]<<" ";
	}
	cout<<" = ?"<<endl;
	cout<<"请输入你的答案,结果最多保留两位小数:";
	cin>>youresult;
	if(youresult==result)
	cout<<"正确"<<endl,ans++;
	else
	{
		cout<<"答案错误!"<<endl;
		cout<<"正确答案是:"<<result<<endl; 
	}
	 Sleep(1000);
	 system("cls");
	}
	cout<<"你最后答对题目数:"<<ans<<endl;
}
}
int main()
{
	srand((unsigned int)time(NULL));
	title();
	if(flag) return 0;
	system("cls");
	regist();
	if(flag) return 0;
	system("cls");
	game(); 
	return 0;
}

刚学c,代码不成熟请见谅。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值