博饼升级版(c++)

在平台上有c++的博饼程序模版,这是改进版,感谢 @hzw4050

接下来是代码:

头文件与宏定义:
include<bits/stdc++.h>//头文件 
#include<windows.h>
#define JNTM(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
#define DISABLE_QUICK_EDIT_MODE 0x01
#define DISABLE_INSERT_MODE 0x02
#define DISABLE_MOUSE_INPUT 0x03
#define DISABLE_ALL (DISABLE_QUICK_EDIT_MODE | DISABLE_INSERT_MODE | DISABLE_MOUSE_INPUT)
using namespace std;
筛子的各部分:
void za12(int i)//筛子的各部分 
{
	
	cout<<"┃      ┃";
}
void za3(int i)
{
	cout<<"┃  ●  ┃";
}
void za456(int i)
{

	
	cout<<"┃ ●● ┃";
	
	
}
void zb15(int i)
{
	cout<<"┃  ●  ┃";
}
void zb34(int i)
{
	cout<<"┃      ┃";
}
void zb26(int i)
{
	cout<<"┃ ●● ┃";
}
void zc12(int i)
{
	cout<<"┃      ┃";
}
void zc3456(int i)
{
	cout<<"┃ ●● ┃";
}
输出部分:
void p(int b)//等待 
{
	
	Sleep(b);
	
}
void nody(char *a,int i)//没有换行的输出 
{
	while(1)
	{
		if(*a==' ')
		{
			cout<<" ";
			*a++;
			continue;
		}
		if(*a!=0)
		{
			printf("%c",*a++);
		}
		else
		{
			break;
			
		}
		p(i);
		
	}
}
void dy(char *a,int i)//换行的输出 
{
	while(1)
	{
		if(*a==' ')
		{
			cout<<" ";
			*a++;
			continue;
		}
		if(*a!=0)
		{
			printf("%c",*a++);
		}
		else
		{
			break;
			
		}
		p(i);
		
	}
	cout<<endl;
}
没大用的开头:
void G(int i)//标注一下,模仿同学@cmh20120102 陈眀瀚 
{
	dy("       GGGGGG         出          品品品    ",10);
	dy("      GG          出  出  出      品  品    ",10);
	dy("     GG   GGG     出出出出出      品品品    ",10);
	dy("     GG    GG         出       品品品品品品",10);
	dy("      GG   GG     出  出  出   品  品品  品",10);
	dy("       GGGGGG     出出出出出   品品品品品品",10);
	dy("                  必属精品!",200);
	system("cls");
}
一个不知道怎么用的函数:
 借鉴@L('ω')┘脏脏包└('ω')?  
​
​
/* 
void book()//感觉没大用 @L('ω')┘脏脏包└('ω')? 
{
	HANDLE hStdin=GetStdHandle(STD_INPUT_HANDLE);
	DWORD mode;
	GetConsoleMode(hStdin,&mode);
	mode&=~ENABLE_QUICK_EDIT_MODE;
	mode&=~ENABLE_INSERT_MODE;
	mode&=~ENABLE_MOUSE_INPUT;
	SetConsoleMode(hStdin,mode);
}
*/
游戏规则:
int main()//开始了 
{
	int jl=-1;
	int sj=0;
	
	int a1,a2,a3,a4,a5,a6,SB;
	
	system("color f");
	/*
	0=black  8=gray
	1=blue   9=light blue
	2=green  a=light green
	3=aqua   b=light aqua
	4=red    c=light red
	5=purple d=light purple
	6=yellow e=light yellow
	7=white  f=bright white
	?=all
	*/
	G(1);//logo
	int til;
	int s1[7]; 
	dy("博饼规则如下:",10);//规则 
	dy("4 ? ? ? ? ?--一秀(秀才)",30);
	dy("4 4 ? ? ? ?--二举(举人)",30);
	dy("# # # # ? ?--四进(进士)#表示除4之外的数",30);
	dy("4 4 4 ? ? ?--三红(探花)",30);
	dy("1 2 3 4 5 6--对堂(榜眼)",30);
	dy("4 4 4 4 ? ?--四点红(状元)",30);
	dy("# # # # # ?--五子登科(状元)#表示除4之外的数",30);
	dy("4 4 4 4 4 ?--五红(状元)",30);
	dy("# # # # # #--黑六勃(状元)#表示除1和4之外的数",30);
	dy("1 1 1 1 1 1--遍地锦(状元)",30);
	dy("4 4 4 4 4 4--六杯红(状元)",30);
	dy("4 4 4 4 1 1--插金花(状元)",30);
	dy("称号:",30);
	dy("4 1 1 1 5 4--恶臭能手#仅需三个1、两个4和一个5即可",30);
	dy("1 1 4 5 1 4--恶臭冠军#需按照顺序",30);
	while(!(JNTM(MOUSE_WHEELED)||JNTM(MOUSE_EVENT)||JNTM(MOUSE_MOVED)))//侦测鼠标点击 
	{
		Sleep(1);
	}
	system("cls");//清空屏幕     
摇骰子:
while(1)//精华部分 
	{
		sj++;
		nody("第",50);
		cout<<sj; 
		dy("回合",50);
		
		dy("你博到了......",100);
 
		srand((unsigned)time(NULL));//随机抽数 
		for(int j=1;j<=6;j++)
		{
		
			s1[j]=(rand()%6)+1;
			
		}
		cout<<"╭━━━╮╭━━━╮╭━━━╮╭━━━╮╭━━━╮╭━━━╮"<<endl;
		for(int i=1;i<=6;i++)
		{
			if(s1[i]==1)
			{
				za12(1);
			}
			if(s1[i]==2)
			{
				za12(1);
			}
			if(s1[i]==3)
			{
				za3(1);
			}
			if(s1[i]==4)
			{
				za456(1);
			}
			if(s1[i]==5)
			{
				za456(1);
			}
			if(s1[i]==6)
			{
				za456(1);
			}
		}
		cout<<endl;
		for(int i=1;i<=6;i++)
		{
			if(s1[i]==1)
			{
				zb15(1);
			}
			if(s1[i]==2)
			{
				zb26(1);
			}
			if(s1[i]==3)
			{
				zb34(1);
			}
			if(s1[i]==4)
			{
				zb34(1);
			}
			if(s1[i]==5)
			{
				zb15(1);
			}
			if(s1[i]==6)
			{
				zb26(1);
			}
		}
		cout<<endl;
		for(int i=1;i<=6;i++)
		{
			if(s1[i]==1)
			{
				zc12(1);
			}
			if(s1[i]==2)
			{
				zc12(1);
			}
			if(s1[i]==3)
			{
				zc3456(1);
			}
			if(s1[i]==4)
			{
				zc3456(1);
			}
			if(s1[i]==5)
			{
				zc3456(1);
			}
			if(s1[i]==6)
			{
				zc3456(1);
			}
		}
		cout<<endl;
		cout<<"╰━━━╯╰━━━╯╰━━━╯╰━━━╯╰━━━╯╰━━━╯"<<endl;
		
		a1=0,a2=0,a3=0,a4=0,a5=0,a6=0;
		for(int i=1;i<=6;i++)
		{
			if(s1[i]==1)a1++;
			if(s1[i]==2)a2++;
			if(s1[i]==3)a3++;
			if(s1[i]==4)a4++;
			if(s1[i]==5)a5++;
			if(s1[i]==6)a6++;
		}
判断+输出:
if(s1[0]==1&&s1[1]==1&&s1[2]==4&&s1[3]==5&&s1[4]==1&&s1[5]==4)//开始判断 
		{
			system("color 6");
			dy("太臭了!恭喜你获得称号'恶臭冠军'",50);
			Sleep(5000); 
			system("color f");
			if(jl<14)
			{
				jl=14;
				SB=sj;
			} 
		}
		else if(a1==3&&a4==2&&a5==1)
		{
			system("color 6");
			dy("臭!恭喜你获得称号'恶臭能手'",50);
			Sleep(5000); 
			system("color f");
			if(jl<10)
			{
				jl=10;
				SB=sj;
			} 
		}
		else if(a1==2&&a4==4)
		{
			system("color c");
			dy("七星高照!恭喜你博到插金花(状元)",50);
			Sleep(5000); 
			system("color f");
			if(jl<13)
			{
				jl=13;
				SB=sj;
			} 
		}
		else if(a4==6)
		{
			system("color c");
			dy("吉祥如意!恭喜你博到六杯红(状元)",50);
			Sleep(5000); 
			system("color f");
			if(jl<12)
			{
				jl=12;
				SB=sj;
			} 
		}
		else if(a1==6)
		{
			system("color c");
			dy("前程似锦!恭喜你博到遍地锦(状元)",50); 
			Sleep(5000); 
			system("color f");
			if(jl<11)
			{
				jl=11;
				SB=sj;
			} 
		}
		else if(a2==6||a3==6||a5==6||a6==6)
		{
			system("color c");
			dy("六六大顺!恭喜你博到黑六勃(状元)",50);  
			Sleep(5000); 
			system("color f");
			if(jl<9)
			{
				jl=9;
				SB=sj;
			} 
		}
		else if(a4==5)
		{
			system("color c");
			dy("五福临门!恭喜你博到五点红(状元)",50);
			Sleep(5000); 
			system("color f"); 
			if(jl<8)
			{
				jl=8;
				SB=sj;
			} 
		}
		else if(a2==5||a3==5||a5==5||a6==5||a1==5)
		{
			system("color c");
			dy("学富五车!恭喜你博到五子登科(状元)",50); 
			Sleep(5000); 
			system("color f");
			if(jl<7)
			{
				jl=7;
				SB=sj;
			} 
		}
		else if(a4==4)
		{
			system("color c");
			dy("四方来财!恭喜你博到四点红(状元)",50);
			Sleep(5000);  
			system("color f");	
			if(jl<6)
			{
				jl=6;
				SB=sj;
			} 
		}
		else if(a1==1&&a2==1&&a3==1&&a4==1&&a5==1&&a6==1)
		{
			dy("运气爆棚!恭喜你博到对堂(榜眼)",50);
			if(jl<5)
			{
				jl=5;
				SB=sj;
			}  
		}
		else if(a4==3)
		{
			dy("恭喜你博到三红(探花)",50);
			if(jl<4)
			{
				jl=4;
				SB=sj;
			}   
		}
		else if(a2==4||a3==4||a5==4||a6==4||a1==4)
		{
			dy("恭喜你博到四进(进士)",50);
			if(jl<3)
			{
				jl=3;
				SB=sj;
			}  
		}
		else if(a4==2)
		{
			dy("恭喜你博到二举(举人)",50); 
			if(jl<2)
			{
				jl=2;
				SB=sj;
			}  
		}
		else if(a4==1)
		{
			dy("恭喜你博到一秀(秀才)",50);  
			if(jl<1)
			{
				jl=1;
				SB=sj;
			} 
		}
		else 
		{
			
			dy("很遗憾你没博到(落榜)",50); 
			if(jl<0)
			{
				jl=0;
				SB=sj;
			} 
			
		}
		//最高记录 
		if(jl==0)nody("最高:落榜",50);
		if(jl==1)nody("最高:秀才",50); 
		if(jl==2)nody("最高:举人",50);
		if(jl==3)nody("最高:进士",50);
		if(jl==4)nody("最高:探花",50);
		if(jl==5)nody("最高:榜眼",50);
		if(jl==6)nody("最高:四点红",50);
		if(jl==7)nody("最高:五子登科",50);
		if(jl==8)nody("最高:五点红",50);
		if(jl==9)nody("最高:黑六勃",50);
		if(jl==11)nody("最高:遍地锦",50);
		if(jl==12)nody("最高:六杯红",50);
		if(jl==13)nody("最高:插金花",50);
		if(jl==10)nody("最高:恶臭能手",50);
		if(jl==14)nody("最高:恶臭冠军",50);
		nody("(第",50);
		cout<<SB;
		nody("回合)",50);
		//cout<<jl;
循环往复:
while(!(JNTM(MOUSE_WHEELED)||JNTM(MOUSE_EVENT)||JNTM(MOUSE_MOVED)))//再次等待 
		{
			Sleep(1);
		}
	
		system("cls");//清屏 
	}

	return 0;
}

完整的代码:

#include<bits/stdc++.h>//头文件 
#include<windows.h>
#define JNTM(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
#define DISABLE_QUICK_EDIT_MODE 0x01
#define DISABLE_INSERT_MODE 0x02
#define DISABLE_MOUSE_INPUT 0x03
#define DISABLE_ALL (DISABLE_QUICK_EDIT_MODE | DISABLE_INSERT_MODE | DISABLE_MOUSE_INPUT)
using namespace std;
void za12(int i)//筛子的各部分 
{
	
	cout<<"┃      ┃";
}
void za3(int i)
{
	cout<<"┃  ●  ┃";
}
void za456(int i)
{

	
	cout<<"┃ ●● ┃";
	
	
}
void zb15(int i)
{
	cout<<"┃  ●  ┃";
}
void zb34(int i)
{
	cout<<"┃      ┃";
}
void zb26(int i)
{
	cout<<"┃ ●● ┃";
}
void zc12(int i)
{
	cout<<"┃      ┃";
}
void zc3456(int i)
{
	cout<<"┃ ●● ┃";
}

void p(int b)//等待 
{
	
	Sleep(b);
	
}
void nody(char *a,int i)//没有换行的输出 
{
	while(1)
	{
		if(*a==' ')
		{
			cout<<" ";
			*a++;
			continue;
		}
		if(*a!=0)
		{
			printf("%c",*a++);
		}
		else
		{
			break;
			
		}
		p(i);
		
	}
}
void dy(char *a,int i)//换行的输出 
{
	while(1)
	{
		if(*a==' ')
		{
			cout<<" ";
			*a++;
			continue;
		}
		if(*a!=0)
		{
			printf("%c",*a++);
		}
		else
		{
			break;
			
		}
		p(i);
		
	}
	cout<<endl;
}
void G(int i)//标注一下,模仿同学@cmh20120102 陈眀瀚 
{
	dy("       GGGGGG         出          品品品    ",10);
	dy("      GG          出  出  出      品  品    ",10);
	dy("     GG   GGG     出出出出出      品品品    ",10);
	dy("     GG    GG         出       品品品品品品",10);
	dy("      GG   GG     出  出  出   品  品品  品",10);
	dy("       GGGGGG     出出出出出   品品品品品品",10);
	dy("                  必属精品!",200);
	system("cls");
}
/* 
void book()//感觉没大用 @L('ω')┘脏脏包└('ω')? 
{
	HANDLE hStdin=GetStdHandle(STD_INPUT_HANDLE);
	DWORD mode;
	GetConsoleMode(hStdin,&mode);
	mode&=~ENABLE_QUICK_EDIT_MODE;
	mode&=~ENABLE_INSERT_MODE;
	mode&=~ENABLE_MOUSE_INPUT;
	SetConsoleMode(hStdin,mode);
}
*/
int main()//开始了 
{
	int jl=-1;
	int sj=0;
	
	int a1,a2,a3,a4,a5,a6,SB;
	
	system("color f");
	/*
	0=black  8=gray
	1=blue   9=light blue
	2=green  a=light green
	3=aqua   b=light aqua
	4=red    c=light red
	5=purple d=light purple
	6=yellow e=light yellow
	7=white  f=bright white
	?=all
	*/
	G(1);//logo
	int til;
	int s1[7]; 
	dy("博饼规则如下:",10);//规则 
	dy("4 ? ? ? ? ?--一秀(秀才)",30);
	dy("4 4 ? ? ? ?--二举(举人)",30);
	dy("# # # # ? ?--四进(进士)#表示除4之外的数",30);
	dy("4 4 4 ? ? ?--三红(探花)",30);
	dy("1 2 3 4 5 6--对堂(榜眼)",30);
	dy("4 4 4 4 ? ?--四点红(状元)",30);
	dy("# # # # # ?--五子登科(状元)#表示除4之外的数",30);
	dy("4 4 4 4 4 ?--五红(状元)",30);
	dy("# # # # # #--黑六勃(状元)#表示除1和4之外的数",30);
	dy("1 1 1 1 1 1--遍地锦(状元)",30);
	dy("4 4 4 4 4 4--六杯红(状元)",30);
	dy("4 4 4 4 1 1--插金花(状元)",30);
	dy("称号:",30);
	dy("4 1 1 1 5 4--恶臭能手#仅需三个1、两个4和一个5即可",30);
	dy("1 1 4 5 1 4--恶臭冠军#需按照顺序",30);
	while(!(JNTM(MOUSE_WHEELED)||JNTM(MOUSE_EVENT)||JNTM(MOUSE_MOVED)))//侦测鼠标点击 
	{
		Sleep(1);
	}
	system("cls");//清空屏幕                                   
	while(1)//精华部分 
	{
		sj++;
		nody("第",50);
		cout<<sj; 
		dy("回合",50);
		
		dy("你博到了......",100);
 
		srand((unsigned)time(NULL));//随机抽数 
		for(int j=1;j<=6;j++)
		{
		
			s1[j]=(rand()%6)+1;
			
		}
		cout<<"╭━━━╮╭━━━╮╭━━━╮╭━━━╮╭━━━╮╭━━━╮"<<endl;
		for(int i=1;i<=6;i++)
		{
			if(s1[i]==1)
			{
				za12(1);
			}
			if(s1[i]==2)
			{
				za12(1);
			}
			if(s1[i]==3)
			{
				za3(1);
			}
			if(s1[i]==4)
			{
				za456(1);
			}
			if(s1[i]==5)
			{
				za456(1);
			}
			if(s1[i]==6)
			{
				za456(1);
			}
		}
		cout<<endl;
		for(int i=1;i<=6;i++)
		{
			if(s1[i]==1)
			{
				zb15(1);
			}
			if(s1[i]==2)
			{
				zb26(1);
			}
			if(s1[i]==3)
			{
				zb34(1);
			}
			if(s1[i]==4)
			{
				zb34(1);
			}
			if(s1[i]==5)
			{
				zb15(1);
			}
			if(s1[i]==6)
			{
				zb26(1);
			}
		}
		cout<<endl;
		for(int i=1;i<=6;i++)
		{
			if(s1[i]==1)
			{
				zc12(1);
			}
			if(s1[i]==2)
			{
				zc12(1);
			}
			if(s1[i]==3)
			{
				zc3456(1);
			}
			if(s1[i]==4)
			{
				zc3456(1);
			}
			if(s1[i]==5)
			{
				zc3456(1);
			}
			if(s1[i]==6)
			{
				zc3456(1);
			}
		}
		cout<<endl;
		cout<<"╰━━━╯╰━━━╯╰━━━╯╰━━━╯╰━━━╯╰━━━╯"<<endl;
		
		a1=0,a2=0,a3=0,a4=0,a5=0,a6=0;
		for(int i=1;i<=6;i++)
		{
			if(s1[i]==1)a1++;
			if(s1[i]==2)a2++;
			if(s1[i]==3)a3++;
			if(s1[i]==4)a4++;
			if(s1[i]==5)a5++;
			if(s1[i]==6)a6++;
		}
		if(s1[0]==1&&s1[1]==1&&s1[2]==4&&s1[3]==5&&s1[4]==1&&s1[5]==4)//开始判断 
		{
			system("color 6");
			dy("太臭了!恭喜你获得称号'恶臭冠军'",50);
			Sleep(5000); 
			system("color f");
			if(jl<14)
			{
				jl=14;
				SB=sj;
			} 
		}
		else if(a1==3&&a4==2&&a5==1)
		{
			system("color 6");
			dy("臭!恭喜你获得称号'恶臭能手'",50);
			Sleep(5000); 
			system("color f");
			if(jl<10)
			{
				jl=10;
				SB=sj;
			} 
		}
		else if(a1==2&&a4==4)
		{
			system("color c");
			dy("七星高照!恭喜你博到插金花(状元)",50);
			Sleep(5000); 
			system("color f");
			if(jl<13)
			{
				jl=13;
				SB=sj;
			} 
		}
		else if(a4==6)
		{
			system("color c");
			dy("吉祥如意!恭喜你博到六杯红(状元)",50);
			Sleep(5000); 
			system("color f");
			if(jl<12)
			{
				jl=12;
				SB=sj;
			} 
		}
		else if(a1==6)
		{
			system("color c");
			dy("前程似锦!恭喜你博到遍地锦(状元)",50); 
			Sleep(5000); 
			system("color f");
			if(jl<11)
			{
				jl=11;
				SB=sj;
			} 
		}
		else if(a2==6||a3==6||a5==6||a6==6)
		{
			system("color c");
			dy("六六大顺!恭喜你博到黑六勃(状元)",50);  
			Sleep(5000); 
			system("color f");
			if(jl<9)
			{
				jl=9;
				SB=sj;
			} 
		}
		else if(a4==5)
		{
			system("color c");
			dy("五福临门!恭喜你博到五点红(状元)",50);
			Sleep(5000); 
			system("color f"); 
			if(jl<8)
			{
				jl=8;
				SB=sj;
			} 
		}
		else if(a2==5||a3==5||a5==5||a6==5||a1==5)
		{
			system("color c");
			dy("学富五车!恭喜你博到五子登科(状元)",50); 
			Sleep(5000); 
			system("color f");
			if(jl<7)
			{
				jl=7;
				SB=sj;
			} 
		}
		else if(a4==4)
		{
			system("color c");
			dy("四方来财!恭喜你博到四点红(状元)",50);
			Sleep(5000);  
			system("color f");	
			if(jl<6)
			{
				jl=6;
				SB=sj;
			} 
		}
		else if(a1==1&&a2==1&&a3==1&&a4==1&&a5==1&&a6==1)
		{
			dy("运气爆棚!恭喜你博到对堂(榜眼)",50);
			if(jl<5)
			{
				jl=5;
				SB=sj;
			}  
		}
		else if(a4==3)
		{
			dy("恭喜你博到三红(探花)",50);
			if(jl<4)
			{
				jl=4;
				SB=sj;
			}   
		}
		else if(a2==4||a3==4||a5==4||a6==4||a1==4)
		{
			dy("恭喜你博到四进(进士)",50);
			if(jl<3)
			{
				jl=3;
				SB=sj;
			}  
		}
		else if(a4==2)
		{
			dy("恭喜你博到二举(举人)",50); 
			if(jl<2)
			{
				jl=2;
				SB=sj;
			}  
		}
		else if(a4==1)
		{
			dy("恭喜你博到一秀(秀才)",50);  
			if(jl<1)
			{
				jl=1;
				SB=sj;
			} 
		}
		else 
		{
			
			dy("很遗憾你没博到(落榜)",50); 
			if(jl<0)
			{
				jl=0;
				SB=sj;
			} 
			
		}
		//最高记录 
		if(jl==0)nody("最高:落榜",50);
		if(jl==1)nody("最高:秀才",50); 
		if(jl==2)nody("最高:举人",50);
		if(jl==3)nody("最高:进士",50);
		if(jl==4)nody("最高:探花",50);
		if(jl==5)nody("最高:榜眼",50);
		if(jl==6)nody("最高:四点红",50);
		if(jl==7)nody("最高:五子登科",50);
		if(jl==8)nody("最高:五点红",50);
		if(jl==9)nody("最高:黑六勃",50);
		if(jl==11)nody("最高:遍地锦",50);
		if(jl==12)nody("最高:六杯红",50);
		if(jl==13)nody("最高:插金花",50);
		if(jl==10)nody("最高:恶臭能手",50);
		if(jl==14)nody("最高:恶臭冠军",50);
		nody("(第",50);
		cout<<SB;
		nody("回合)",50);
		//cout<<jl;
		while(!(JNTM(MOUSE_WHEELED)||JNTM(MOUSE_EVENT)||JNTM(MOUSE_MOVED)))//再次等待 
		{
			Sleep(1);
		}
	
		system("cls");//清屏 
	}

	return 0;
}

新手编程,如有bug请多多包涵,我会尽快修复

我是c++练习时长两年半的新手

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值