⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tritou.txt

📁 一个游戏程序,本程序模拟儿童的石头、剪子、布游戏.有一定的说明。很不错
💻 TXT
字号:
//********************************************************************
//赛赛赛游戏程序
//本程序模拟儿童的石头、剪子、布游戏
//********************************************************************
#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
char *PlayType[]={"石头","剪子","布"};
struct player{              //玩家结构
    char name[20];
    int point;
};
player pA;
int play[10][2];
bool newplayer,newplay;


void Begin();      
int listmenu();       //显示主菜单
void playmain();      //游戏控制
void NewPlay();       //新一局游戏
void endProcess();     //游戏结束处理
void listwins();      //列出本局出手情况
void stat_sort();     //统计各种出手次数并排序
void listplayers();    //列出各玩家成绩


int main()
{Begin();     //输入玩家名字
int winsNum=0;   //玩家一局胜数
int gameNumber=0;//游戏次数
ifstream fileA; //游戏玩家成绩文件
fileA.open("filea.txt");//打开玩家成绩文件
if(!fileA)
{cout<<"* * 不能打开玩家成绩文件(读 filea.dat) * * \n";
return 1;
}
player pB;
pA.point=-1;
int tmp;
newplayer=true;
while(!fileA.eof())
{fileA>>pB.name;fileA>>tmp;
if(strcmp(pA.name,pB.name)==0)// 老玩家
{pA.point=tmp;
newplayer=false;
break;
}
}
if(newplayer)//新玩家
{pA.point=0;}
fileA.close();
newplay=false;
playmain();
return 0;
}
//********************************************************************
void Begin()
{cout<<"\n\n\n\n\t欢迎与我赛赛赛!"
<<"\n\n\t输入你的姓名:";
cin>>pA.name;
}
//********************************************************************
int listmenu()//显示主菜单
{int s;
do{system("cls");
cout<<"\n\n\t         赛赛赛游戏菜单\n"
<<"\t********************************************************\n"
<<"\t                1.开始新局\n"
<<"\t                2.统计列表\n"
<<"\t                3.成绩清零\n"
<<"\t                4.退    出\n"
<<"\t*********************************************************\n"
<<"\t      请选择:";
cin>>s;
}while(s<1||s>4);
return s;
}
//*******************************************************************
void playmain()           //游戏处理
{int sel;char se;
while(1)
{sel=listmenu();          //显示主菜单并选择
switch(sel)
{case 1:NewPlay();break;
case 2:
    cerr<<"\n\n\n\t*************************************************\n"
        <<"\t*    1.列出本局出手情况         *\n"
        <<"\t*    2.统计各种出手次数并排序   *\n"
        <<"\t*    3.列出各玩家成绩           *\n"
        <<"\t******************************************************\n"
        
        <<"\t   请选择:";
    se=getche();
    switch(se)
    {case '1':listwins();break;
    case '2':stat_sort();break;
    case '3':listplayers();break;
}
break;
case 3:pA.point=0;break;
case 4:endProcess();return;
}
}
}
//********************************************************************
void NewPlay()
{int i,wins1=0,wins2=0;//wins1-玩家取胜次数,wins2-机方取胜次数
char ch;
srand(time(NULL));
for(i=0;i<10;i++)
play[i][0]=play[i][1]=0;
system("cls");
for(i=0;i<10;i++)
{cerr<<"\n第 "<<i<<"次出手:";
play[i][0]=1+rand()%3;
do{ch=getch();play[i][1]=ch-'0';
}while(play[i][1]<1||play[i][1]>3);
cerr<<"我出:"<<PlayType[play[i][0]-1]
<<"  你出:"<<PlayType[play[i][1]-1];
if((play[i][1]==1&&play[i][0]==2)
   ||(play[i][1]==2&&play[i][0]==3)
   ||(play[i][1]==3&&play[i][0]==1))
{wins1++;cerr<<"真棒!";}
else
if((play[i][0]==1&&play[i][1]==2)
   ||(play[i][0]==2&&play[i][1]==3)
   ||(play[i][0]==3&&play[i][1]==1))
{wins2++;cerr<<"真笨!";}
else cerr<<"平手!";
}
if(wins1>wins2)
{pA.point+=10;
cerr<<"\n祝贺你本局赢了!";
}
else
cerr<<"\n你要努力呦!";
cerr<<"\t按下任意键继续...";
getch();
newplay=true;
}
//********************************************************************
void endProcess()
{fstream fileB;//打开玩家成绩文件
if(newplayer)
{fileB.open("filea.txt",ios::out|ios::app);
            if(!fileB)
{cout <<"* * 不能打开玩家成绩文件(写 filea.dat) * * \n";
            return;
            }
            fileB<<setiosflags(ios::left)<<setw(20)<<pA.name
                <<setw(10)<<pA.point<<endl;
}
else
{fileB.open("filea.txt",ios::out|ios::in);
if(!fileB)
{cout<<"**不能打开玩家成绩文件(改filea.dat)**\n";
return;
}
            player pt;char tp[30];
            while(!fileB.eof())
            {fileB>>pt.name;fileB.getline(tp,30);
            if(strcmp(pA.name,pt.name)==0)//老玩家
            {fileB.seekp(-32,ios::cur);
            fileB<<setiosflags(ios::left)<<setw(20)<<pA.name
                <<setw(10)<<pA.point<<endl;
            break;
            }
            }
}
fileB.close();
cout<<"\n\n\n\t欢迎再跟我玩儿! \n"
<<"\n\n\t       再见!  \n";
}
//**********************************************************
void listwins()//列出本局出手情况
{if(!newplay)return;
int i;
cout<<"\n  计算机  "<<setw(10)<<pA.name<<endl;
for(i=0;i<10;i++)
cout<<setw(7)<<PlayType[play[i][0]-1]
<<setw(10)<<PlayType[play[i][1]-1]<<endl;
cerr<<"按下任意键继续...";
getch();
}
//**********************************************************
void stat_sort()//统计各种出手次数并排序
{if(!newplay)return;
int comp[3][2],playman[3][2],i,j,t;
cout<<"\n    计算机    "<<setw(14)<<pA.name<<endl;
for(i=0;i<3;i++)
{comp[i][0]=playman[i][0]=i+1;
comp[i][1]=playman[i][1]=0;
}
for(i=0;i<10;i++)//统计各种出手次数
{comp[play[i][0]-1][1]++;playman[play[i][1]-1][1]++;}
for(i=0;i<3;i++)
{for(j=i+1;j<3;j++)
{if(comp[i][1]<comp[j][1])
{t=comp[i][1];comp[i][1]=comp[j][1];comp[j][1]=t;
t=comp[i][0];comp[i][0]=comp[j][0];comp[j][0]=t;
}
if(playman[i][1]<playman[j][1])
{
    t=playman[i][1];playman[i][1]=playman[j][1];playman[j][1]=t;
    t=playman[i][0];playman[i][0]=playman[j][0];playman[j][0]=t;
}
}
cout<<setw(7)<<PlayType[comp[i][0]-1]<<":"<<setw(3)<<comp[i][1]
<<setw(14)<<PlayType[playman[i][0]-1]<<":"
<<setw(3)<<playman[i][1]<<endl;
}
cerr<<"按下任意键继续...";
getch();
}
//**********************************************************
void listplayers() //列出各玩家成绩
{
    ifstream fileC;//游戏玩家成绩文件
    fileC.open("filea.txt");//打开玩家成绩文件
    if(!fileC)
    {cout<<"** 不能打开玩家成绩文件(读filea.dat)**\n";
    return;
    }
    char tp[20];
    player pC;
    cerr<<"\n\t玩家         成绩\n";
    while(!fileC.eof())
    {fileC>>pC.name;fileC>>pC.point;fileC.getline(tp,20);
    cout<<setw(14)<<pC.name<<setw(8)<<pC.point<<endl;
    }
    fileC.close();
    cerr<<"按下任意键继续...";
    getch();
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -