C++程序不会写 求大神 10
【课题内容和要求】这是一个简单的智力游戏,游戏者每次只能猜一个字母,如果游戏者猜的字母在单词中,单词中所有的该字母将被视为已猜出,例如:如果原单词是apple,游戏者猜出...
【课题内容和要求】
这是一个简单的智力游戏,游戏者每次只能猜一个字母,如果游戏者猜的字母在单词中,单词中所有的该字母将被视为已猜出,例如:如果原单词是apple,游戏者猜出了p,则程序应显示当前猜出的残缺单词为-pp--;设置选择时间限制或猜错次数限制,超过限制则游戏失败。
1-5个字母为初级;5-9个字母为中级;10个字母以上为高级,猜错次数限制自定。
1.设计游戏者信息格式,记录用户名、成绩,并保存,下次开始时可选择用户继续游戏,用户信息存放
2.在user.txt中。建立积分排行榜,保留不同级别前五名的成绩。
3.根据单词长度设置不同级别的游戏。
4.游戏过程中,猜错的字母将被记录下来,每次猜测后,游戏应显示出当前猜出的残缺单词,以及当前猜错的所有字母,和剩下的机会。
5.提供相应安全机制,保证程序的健壮性,如选择单词长度时,应避免非数字字符 展开
这是一个简单的智力游戏,游戏者每次只能猜一个字母,如果游戏者猜的字母在单词中,单词中所有的该字母将被视为已猜出,例如:如果原单词是apple,游戏者猜出了p,则程序应显示当前猜出的残缺单词为-pp--;设置选择时间限制或猜错次数限制,超过限制则游戏失败。
1-5个字母为初级;5-9个字母为中级;10个字母以上为高级,猜错次数限制自定。
1.设计游戏者信息格式,记录用户名、成绩,并保存,下次开始时可选择用户继续游戏,用户信息存放
2.在user.txt中。建立积分排行榜,保留不同级别前五名的成绩。
3.根据单词长度设置不同级别的游戏。
4.游戏过程中,猜错的字母将被记录下来,每次猜测后,游戏应显示出当前猜出的残缺单词,以及当前猜错的所有字母,和剩下的机会。
5.提供相应安全机制,保证程序的健壮性,如选择单词长度时,应避免非数字字符 展开
3个回答
展开全部
#include<vector>
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string>
#include<fstream>
#include<time.h>
#include<stdlib.h>
#include<cctype>
#include<set>
#include<windows.h>
#define DEBUG
using namespace std;
#define WORD_COUNT 30//单词字母长度
class Users
{
string name;
public:
int score;
Users()
{
name="unknow";
score=0;
}
void Getmessage()
{
cout<<"请输入您的名字:"<<endl;
cin>>name;
cin.get();
cout<<"输入完毕!"<<endl;
}
string getname()
{
return name;
}
};
//时间类
class Time
{
clock_t start;
clock_t end;
public:
Time()
{
start=clock();
}
int Timeused()
{
end=clock();
return (end-start)/CLOCKS_PER_SEC;
}
};
void help()
{
cout<<"说明:\n 这是一个简单的智力游戏:猜数字。您每次只能猜一个字母,"<<endl;
cout<<"如果您猜的字母在单词中,则单词中所有的该字母将被视为已猜出"<<endl;
cout<<"例如:如果原单词是apple,您猜出了p,则程序应显示当前猜出的"<<endl;
cout<<"残缺单词为-pp--,选择时间超过规定限制(难度等级x10(s))或猜错"<<endl;
cout<<"5次以上,则游戏失败。"<<endl<<endl;
cout<<"PS:1-5个字母为初级;\n5-9个字母为中级;\n10个字母以上为高级,猜错次数限制自定。"<<endl<<endl;
}
void menu()
{
system("cls");
cout<<"----------------------------------------------------"<<endl;
cout<<"欢迎使用猜单词系统!"<<endl<<endl;
cout<<"目录:"<<endl;
cout<<"\t1.新游戏"<<endl;
cout<<"\t2.排行"<<endl;
cout<<"\t3.设置"<<endl;
cout<<"\t4.帮助"<<endl;
cout<<"\t5.向单词库里添加单词"<<endl;
cout<<"\t6.查看单词库"<<endl;
cout<<"\t0.退出"<<endl;
cout<<"----------------------------------------------------"<<endl;
cout<<"请输入你的选择:"<<endl;
}
//重要!核心部分
void newgame(fstream &f2,vector<Users> &user,int i,int key)
{
system("cls");
//玩家资料输入:
cout<<"第"<<i+1<<"个玩家:"<<endl;
user[i].Getmessage();
cout<<endl;
system("pause");
inx:
system("cls");
cin.clear();
cin.sync();
string s1;//s1
string s2;//s2
int usedtime=0;
char option;//判断
int num=0;//表示单词字母数
vector<string>str(WORD_COUNT);//文件中最多最多放个单词
char ch;//用户输入的字母
switch(key)
{
case 1:
{
cout<<"初级模式:请输入您想猜单词的字母数(1-5)"<<endl;
cin>>num;
if(!isdigit(num)&&(num<1||num>5))
{
cout<<"输入单词数目错误!请重新输入"<<endl;
system("pause");
goto inx;
}
}
break;
case 2:
{
cout<<"中级模式:请输入您想猜单词的字母数(5-10)"<<endl;
cin>>num;
if(!isdigit(num)&&(num<=5||num>=10))
{
cout<<"输入单词数目错误!请重新输入"<<endl;
system("pause");
goto inx;
}
}
break;
case 3:
{
cout<<"高级模式:请输入您想猜单词的字母数(>=10)"<<endl;
cin>>num;
if(!isdigit(num)&&(num<=10))
{
cout<<"输入单词数目错误!请重新输入"<<endl;
system("pause");
goto inx;
}
}
break;
}//清空输入流
f2.seekg(0);
for(int j=0;j<WORD_COUNT;j++)
{
getline(f2,str[j]);
//cout<<str[j]<<endl;
}
for(int j=0;j<WORD_COUNT;j++)
{
if(str[j].size()==num)
{
s1=str[j];
break;
}
}
//cout<<s1<<endl;
for(int k=0;k<s1.size();k++)
{
s2+='-';
}
system("pause");
/*注意!这里是核心的核心!*/
Time time;//开始计时
for(;;)
{
int count=0;//计数
iny:
cin.clear();
cin.sync();
system("cls");
cout<<"请输入字母!(输入‘$’可显示原单词一秒钟!)"<<endl;
cin>>ch;
if(ch=='$')
{
cout<<s1<<endl;
Sleep(1000);
goto iny;
}
int count2=0;
for(int k=0;k<s1.size();k++)
{
if(s1[k]==ch)
{
s2[k]=ch;
}
}
for(int k=0;k<s2.size();k++)
{
if(s2[k]==ch)
{
cout<<"字母输入正确!"<<endl;
cout<<"显示猜出的单词:"<<s2<<endl;
cout<<"请继续猜测剩余的单词字母!"<<endl;
user[i].score++;
break;
}
else
{
count2++;
}
}
if(count2==s2.size())
{
cout<<"字母输入错误!请继续输入!"<<endl;
user[i].score--;
system("pause");
goto iny;
}
for(int k=0;k<s2.size();k++)
{
if(s2[k]!='-')
{
count++;
}
}
if(count==s2.size())
{
break;
}
if(usedtime>20*key)
{
cout<<"超时!!"<<endl;
user[i].score--;
break;
}
system("pause");
}
system("cls");
usedtime=time.Timeused();//计算时间
cout<<"游戏结束!共用时"<<usedtime<<"秒"<<endl;
if(usedtime>10*key)
{
cout<<"但是用时太长!差评!"<<endl;
user[i].score--;
}
system("pause");
system("cls");
cout<<"是否继续游戏?‘Y’or‘N’"<<endl;
cin.get();
option=cin.get();
if(option=='Y'||option=='y')
{
goto inx;
}
system("pause");
}
void bubble_sort(vector<Users>&user,int n)//冒泡排序算法,n为数组a的元素个数
{
int i,j;
for(j=0;j<n-1;j++)
{
for(i=0;i<n-1-j;i++)
{
if(user[i].score<user[i+1].score)//数组元素大小按升序排列
{
swap(user[i],user[i+1]);
}
}
}
}
void two(fstream &f1,vector<Users>user,int tot)
{
for(string str;getline(f1,str);)//getline()逐行读取文本
{
cout<<str<<endl;
}
}
int main()
{
vector<Users>user(10);
int key=1;//游戏难度
int size=0;
//主要部分
int op;
do
{
menu();
cin>>op;
switch(op)
{
case 1:
{
system("cls");
cout<<"注意!未修改难度前,新游戏难度默认为初级。如要修改难度请返回主菜单!"<<endl;
system("pause");
system("cls");
int n;//玩家人数
cout<<"请输入玩家人数:"<<endl;
cin>>n;
size=n;
user.resize(n);
fstream f1("C:\\Users\\cimo\\Desktop\\user.txt",ios::out);
f1<<"玩家:"<<endl;
for(int i=0;i<n;i++)
{
fstream f2("C:\\Users\\cimo\\Desktop\\单词库.txt");
newgame(f2,user,i,key);
f2.close();
}
bubble_sort(user,size);
for(int i=0;i<size;i++)
{
f1<<"\t第"<<i+1<<"名:"<<user[i].getname()<<",分数为:"<<user[i].score<<"分"<<endl;
}
f1.close();
}
break;
case 2:
{
system("cls");
fstream f1("C:\\Users\\cimo\\Desktop\\user.txt");
two(f1,user,size);
f1.close();
system("pause");
}
break;
case 3:
{
system("cls");
cout<<"1.初级模式\n2.中极模式\n3.高级模式"<<endl;
cout<<"请输入你的选择:";
cin>>key;
cout<<"难度修改成功!"<<endl;
system("pause");
}
break;
case 4:
system("cls");
help();
system("pause");
break;
case 5:
{
for(;;)
{
system("cls");
char a;
string word;
fstream f2("C:\\Users\\cimo\\Desktop\\单词库.txt",ios::app|ios::out);
cout<<"请输入你想添加的单词:"<<endl;
cin>>word;
cin.get();
f2<<"\n"<<word;
cout<<"添加成功!"<<endl;
cout<<"是否继续添加?(‘Y’或‘N’)"<<endl;
a=cin.get();
if(a=='N'||a=='n')
{
break;
}
f2.close();
}
break;
}
case 6:
{
system("cls");
cout<<"显示已经按字母表排序的单词库:"<<endl;
vector<string>a;
char line[256];
fstream fin("C:\\Users\\cimo\\Desktop\\单词库.txt", ios::in);
while(fin.getline(line,256,'\n'))
{
a.push_back(line);
}
sort(a.begin(),a.end());
fin.close();
fstream fout("C:\\Users\\cimo\\Desktop\\单词库2.txt", ios::trunc | ios::out);
vector<string>::iterator unque_iter = unique(a.begin(), a.end());
a.erase(unque_iter, a.end());
for(vector<string>::iterator it = a.begin(); it!= a.end(); it++)
{
fout<<*it<<endl;
cout<<*it<<endl;
}
fout.close();
cout<<endl;
system("pause");
break;
}
case 0:
{
cout<<"谢谢使用!"<<endl;
break;
}
default:break;
}
}while(op);
return 0;
}
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string>
#include<fstream>
#include<time.h>
#include<stdlib.h>
#include<cctype>
#include<set>
#include<windows.h>
#define DEBUG
using namespace std;
#define WORD_COUNT 30//单词字母长度
class Users
{
string name;
public:
int score;
Users()
{
name="unknow";
score=0;
}
void Getmessage()
{
cout<<"请输入您的名字:"<<endl;
cin>>name;
cin.get();
cout<<"输入完毕!"<<endl;
}
string getname()
{
return name;
}
};
//时间类
class Time
{
clock_t start;
clock_t end;
public:
Time()
{
start=clock();
}
int Timeused()
{
end=clock();
return (end-start)/CLOCKS_PER_SEC;
}
};
void help()
{
cout<<"说明:\n 这是一个简单的智力游戏:猜数字。您每次只能猜一个字母,"<<endl;
cout<<"如果您猜的字母在单词中,则单词中所有的该字母将被视为已猜出"<<endl;
cout<<"例如:如果原单词是apple,您猜出了p,则程序应显示当前猜出的"<<endl;
cout<<"残缺单词为-pp--,选择时间超过规定限制(难度等级x10(s))或猜错"<<endl;
cout<<"5次以上,则游戏失败。"<<endl<<endl;
cout<<"PS:1-5个字母为初级;\n5-9个字母为中级;\n10个字母以上为高级,猜错次数限制自定。"<<endl<<endl;
}
void menu()
{
system("cls");
cout<<"----------------------------------------------------"<<endl;
cout<<"欢迎使用猜单词系统!"<<endl<<endl;
cout<<"目录:"<<endl;
cout<<"\t1.新游戏"<<endl;
cout<<"\t2.排行"<<endl;
cout<<"\t3.设置"<<endl;
cout<<"\t4.帮助"<<endl;
cout<<"\t5.向单词库里添加单词"<<endl;
cout<<"\t6.查看单词库"<<endl;
cout<<"\t0.退出"<<endl;
cout<<"----------------------------------------------------"<<endl;
cout<<"请输入你的选择:"<<endl;
}
//重要!核心部分
void newgame(fstream &f2,vector<Users> &user,int i,int key)
{
system("cls");
//玩家资料输入:
cout<<"第"<<i+1<<"个玩家:"<<endl;
user[i].Getmessage();
cout<<endl;
system("pause");
inx:
system("cls");
cin.clear();
cin.sync();
string s1;//s1
string s2;//s2
int usedtime=0;
char option;//判断
int num=0;//表示单词字母数
vector<string>str(WORD_COUNT);//文件中最多最多放个单词
char ch;//用户输入的字母
switch(key)
{
case 1:
{
cout<<"初级模式:请输入您想猜单词的字母数(1-5)"<<endl;
cin>>num;
if(!isdigit(num)&&(num<1||num>5))
{
cout<<"输入单词数目错误!请重新输入"<<endl;
system("pause");
goto inx;
}
}
break;
case 2:
{
cout<<"中级模式:请输入您想猜单词的字母数(5-10)"<<endl;
cin>>num;
if(!isdigit(num)&&(num<=5||num>=10))
{
cout<<"输入单词数目错误!请重新输入"<<endl;
system("pause");
goto inx;
}
}
break;
case 3:
{
cout<<"高级模式:请输入您想猜单词的字母数(>=10)"<<endl;
cin>>num;
if(!isdigit(num)&&(num<=10))
{
cout<<"输入单词数目错误!请重新输入"<<endl;
system("pause");
goto inx;
}
}
break;
}//清空输入流
f2.seekg(0);
for(int j=0;j<WORD_COUNT;j++)
{
getline(f2,str[j]);
//cout<<str[j]<<endl;
}
for(int j=0;j<WORD_COUNT;j++)
{
if(str[j].size()==num)
{
s1=str[j];
break;
}
}
//cout<<s1<<endl;
for(int k=0;k<s1.size();k++)
{
s2+='-';
}
system("pause");
/*注意!这里是核心的核心!*/
Time time;//开始计时
for(;;)
{
int count=0;//计数
iny:
cin.clear();
cin.sync();
system("cls");
cout<<"请输入字母!(输入‘$’可显示原单词一秒钟!)"<<endl;
cin>>ch;
if(ch=='$')
{
cout<<s1<<endl;
Sleep(1000);
goto iny;
}
int count2=0;
for(int k=0;k<s1.size();k++)
{
if(s1[k]==ch)
{
s2[k]=ch;
}
}
for(int k=0;k<s2.size();k++)
{
if(s2[k]==ch)
{
cout<<"字母输入正确!"<<endl;
cout<<"显示猜出的单词:"<<s2<<endl;
cout<<"请继续猜测剩余的单词字母!"<<endl;
user[i].score++;
break;
}
else
{
count2++;
}
}
if(count2==s2.size())
{
cout<<"字母输入错误!请继续输入!"<<endl;
user[i].score--;
system("pause");
goto iny;
}
for(int k=0;k<s2.size();k++)
{
if(s2[k]!='-')
{
count++;
}
}
if(count==s2.size())
{
break;
}
if(usedtime>20*key)
{
cout<<"超时!!"<<endl;
user[i].score--;
break;
}
system("pause");
}
system("cls");
usedtime=time.Timeused();//计算时间
cout<<"游戏结束!共用时"<<usedtime<<"秒"<<endl;
if(usedtime>10*key)
{
cout<<"但是用时太长!差评!"<<endl;
user[i].score--;
}
system("pause");
system("cls");
cout<<"是否继续游戏?‘Y’or‘N’"<<endl;
cin.get();
option=cin.get();
if(option=='Y'||option=='y')
{
goto inx;
}
system("pause");
}
void bubble_sort(vector<Users>&user,int n)//冒泡排序算法,n为数组a的元素个数
{
int i,j;
for(j=0;j<n-1;j++)
{
for(i=0;i<n-1-j;i++)
{
if(user[i].score<user[i+1].score)//数组元素大小按升序排列
{
swap(user[i],user[i+1]);
}
}
}
}
void two(fstream &f1,vector<Users>user,int tot)
{
for(string str;getline(f1,str);)//getline()逐行读取文本
{
cout<<str<<endl;
}
}
int main()
{
vector<Users>user(10);
int key=1;//游戏难度
int size=0;
//主要部分
int op;
do
{
menu();
cin>>op;
switch(op)
{
case 1:
{
system("cls");
cout<<"注意!未修改难度前,新游戏难度默认为初级。如要修改难度请返回主菜单!"<<endl;
system("pause");
system("cls");
int n;//玩家人数
cout<<"请输入玩家人数:"<<endl;
cin>>n;
size=n;
user.resize(n);
fstream f1("C:\\Users\\cimo\\Desktop\\user.txt",ios::out);
f1<<"玩家:"<<endl;
for(int i=0;i<n;i++)
{
fstream f2("C:\\Users\\cimo\\Desktop\\单词库.txt");
newgame(f2,user,i,key);
f2.close();
}
bubble_sort(user,size);
for(int i=0;i<size;i++)
{
f1<<"\t第"<<i+1<<"名:"<<user[i].getname()<<",分数为:"<<user[i].score<<"分"<<endl;
}
f1.close();
}
break;
case 2:
{
system("cls");
fstream f1("C:\\Users\\cimo\\Desktop\\user.txt");
two(f1,user,size);
f1.close();
system("pause");
}
break;
case 3:
{
system("cls");
cout<<"1.初级模式\n2.中极模式\n3.高级模式"<<endl;
cout<<"请输入你的选择:";
cin>>key;
cout<<"难度修改成功!"<<endl;
system("pause");
}
break;
case 4:
system("cls");
help();
system("pause");
break;
case 5:
{
for(;;)
{
system("cls");
char a;
string word;
fstream f2("C:\\Users\\cimo\\Desktop\\单词库.txt",ios::app|ios::out);
cout<<"请输入你想添加的单词:"<<endl;
cin>>word;
cin.get();
f2<<"\n"<<word;
cout<<"添加成功!"<<endl;
cout<<"是否继续添加?(‘Y’或‘N’)"<<endl;
a=cin.get();
if(a=='N'||a=='n')
{
break;
}
f2.close();
}
break;
}
case 6:
{
system("cls");
cout<<"显示已经按字母表排序的单词库:"<<endl;
vector<string>a;
char line[256];
fstream fin("C:\\Users\\cimo\\Desktop\\单词库.txt", ios::in);
while(fin.getline(line,256,'\n'))
{
a.push_back(line);
}
sort(a.begin(),a.end());
fin.close();
fstream fout("C:\\Users\\cimo\\Desktop\\单词库2.txt", ios::trunc | ios::out);
vector<string>::iterator unque_iter = unique(a.begin(), a.end());
a.erase(unque_iter, a.end());
for(vector<string>::iterator it = a.begin(); it!= a.end(); it++)
{
fout<<*it<<endl;
cout<<*it<<endl;
}
fout.close();
cout<<endl;
system("pause");
break;
}
case 0:
{
cout<<"谢谢使用!"<<endl;
break;
}
default:break;
}
}while(op);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我想说最近求课程设计的变多了。。看来是要考试放假了。话说10分真心抠门了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询