在平台上有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++练习时长两年半的新手