4.多文件与菜单设计

两个出圈游戏的游戏菜单设计:

------------------------------------------------------

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";
}








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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值