两个出圈游戏的游戏菜单设计:
------------------------------------------------------
game.h
----------------------------------------------------
#if !defined(H_GAME_H)
#define H_GAME_H
#include<iostream>
#include<vector>
using namespace std;
class Seqlist{
int num;
char name[10];
public:
int Getnum();
void Dispname();
char *Getname();
void Setnum(int);
void Setname(char b[]);
};
void handle_menu(void);
int menu_select();
void game1();
void game2();
void cg1();
void cg2();
void Joseph(Seqlist *p,Seqlist *p1);
void Joseph(vector<Seqlist>&,vector<Seqlist>&);
#endif
---------------------------------------------------------
Seqlist.cpp
---------------------------------------------------------
#include"game.h"
int Seqlist::Getnum()
{return num;}
void Seqlist::Dispname()
{cout<<name;}
char *Seqlist::Getname()
{return name;}
void Seqlist::Setnum(int a)
{num=a;}
void Seqlist::Setname(char b[])
{strcpy(name,b);}
-----------------------------------------------------
select.cpp
-----------------------------------------------------
#include"game.h"
int main()
{
handle_menu();
return 0;
}
void handle_menu(void)
{
for(;;)
{
switch(menu_select())
{
case 1:
game1();
break;
case 2:
game2();
break;
case 3:
cg1();
break;
case 4:
cg2();
break;
case 5:
cout<<"\t再见!\n";
return;
}
}
}
int menu_select()
{
char s[2];
int cn;
cout<<"\t1.出圈游戏之一\n";
cout<<"\t2.出圈游戏之二\n";
cout<<"\t3.输出游戏1的结果\n";
cout<<"\t4.输出游戏2的结果\n";
cout<<"\t5.退出程序\n";
cout<<"\t选择1-5:";
for(;;)
{
gets(s);
cn=atoi(s);
if(cn<1||cn>5)
cout<<"输入错误,重选1-5:";
else
break;
}
return cn;
}
-----------------------------------------------
game1.cpp
------------------------------------------------
#include"game.h"
int length=0;
Seqlist *pt;
void Joseph(Seqlist *p,Seqlist *p1,int length)
{
int m;
cout<<"请输入间隔数m(m<=20):";
cin>>m;
while(m>20)
{
cout<<"太大,请重新输入间隔数m(m<=20)";
cin>>m;
}
cout<<"请准备输入游戏者名字"<<endl;
getchar();
char s[10];
for(int i=0;i<length;i++)
{
cout<<"第"<<i+1<<"个人的名字";
gets(s);
(p+i)->Setname(s);
(p+i)->Setnum(i+1);
}
i=-1;
int j,k,num=0;
for(k=1;k<=length;k++)
{
j=0;
while(j<m)
{
i++;
if(i==length)
i=0;
if((p+i)->Getnum()!=0) j++;
}
if(k==length) break;
(p+i)->Dispname();
(p1+num)->Setname((p+i)->Getname());
(p1+num)->Setnum((p+i)->Getnum());
num++;
cout<<",";
(p+i)->Setnum(0);
}
(p+i)->Dispname();
(p1+num)->Setname((p+i)->Getname());
(p1+num)->Setnum((p+i)->Getnum());
cout<<endl;
delete []p;
}
void game1()
{
cout<<"请输入准备参加游戏的人数:";
cin>>length;
Seqlist *p=new Seqlist[length];
Seqlist *p1=new Seqlist[length];
Joseph(p,p1,length);
pt=p1;
}
void cg1()
{
cout<<"序号\t"<<"名字"<<endl;
for(int i=0;i<length;i++)
{
cout<<(pt+i)->Getnum()<<"\t"<<(pt+i)->Getname()<<endl;
}
cout<<endl;
}
--------------------------------------------------------
game2.cpp
--------------------------------------------------------
#include"game.h"
vector<Seqlist>d;
void game2()
{
int length=0;
cout<<"请输入准备参加游戏的人数:";
cin>>length;
vector<Seqlist>c(length);
Joseph(c,d);
}
void Joseph(vector<Seqlist>&c,vector<Seqlist>&d)
{
int m;
cout<<"请输入间隔数m(m<=20):";
cin>>m;
while(m>20)
{
cout<<"太大,请重新输入间隔数m(m<=20):";
cin>>m;
}
cout<<"请准备输入游戏者名字"<<endl;
getchar();
char s[10];
for(int i=0;i<c.size();i++)
{
cout<<"第"<<i+1<<"个人的名字:";
gets(s);
c[i].Setname(s);
c[i].Setnum(i+1);
}
i=-1;
int j,k;
vector<Seqlist>::iterator p;
p=c.begin();
int length=c.size();
for(k=i;k<=length;k++)
{
j=0;
while(j<m)
{
i++;
if(i==c.size())
i=0;
j++;
}
if(k==length) break;
c[i].Dispname();
cout<<",";
d.push_back(c[i]);
c.erase(p+i);
--i;
}
c[i].Dispname();
d.push_back(c[i]);
cout<<endl;
}
void cg2()
{
cout<<"序号\t"<<"名字"<<endl;
for(int i=0;i<d.size();i++)
{
cout<<d[i].Getnum()<<"\t"<<d[i].Getname()<<"\n";
}
cout<<"\n";
}