64,636
社区成员
发帖
与我相关
我的任务
分享
#include <time.h>
#include<iostream>
#include<windows.h>
using namespace std;
#include <stdio.h>
enum choose{wood,meat,coal,meathouse,tradehouse,woodmaker,meatmaker,house,view};//设置n种,枚举类型,就是输入的各种情况
class Resource//资源类
{protected:
int wood;//木头
int meat; //肉
int coal;//煤矿
int house;//房屋,一个房屋可以增加8个人口,最大值10
int meathouse;//腌肉房最大值1
int tradehouse;//贸易坊最大值1
int woodmaker;//伐木工,可生产木头,猎人和伐木工的总数,不能超过人口上限。
int meatmaker;//猎人,可产生肉。猎人和伐木工的总数,不能超过人口上限。
int peoplemax;//人口上限,初始值为8,house的8倍,上限为10;
public:
Resource();//构造函数
void set(int a,int b,int c,int d,int e,int f,int g,int h,int i);
void build(choose k);//建造函数,包括建筑物和工人
}
int build(choose k)//建造建筑所需资源参数,猎人小屋5块木头,贸易坊2块木头1块肉,小屋4块木头
{switch(k)
{case tradehouse:if((Resource1.wood>=2)&&(Resource1.meat>=1)&&(Resource1.tradehouse==0)){Recource1.wood-=2;Resource1.meat-=2;Resource1.tradehouse=1;return Resource1.tradehouse;else return 0; }
//必须要木头大于2,肉大于1,贸易坊为0,才可建造,建造好后,贸易坊的个数变为1,木头减少2,肉减少1
case meathouse:if((Resource1.wood>=5)&&(Resource1.meathouse==0)){Resource1.wood-=5;Resource1.meathouse=1;return Resource1.meathouse;else
return 0; //必须要要大于5块木头,猎人小屋为0,才可建造。建造好后,猎人小屋的数量增加1,木头减少5. }
case house:if((Resource1.wood>=4*(Resource1.house)*Resource1.house)&&(Resource1.house<=10))
{Resource1.wood-=4*Resource1.house*Resource1.house; Resource1.house+=1;return Resource1.house;else return 0}
//小屋,每建造一次,人口上限增加8,最多可以建造10次。下次建造所耗费的木头=4*小屋数量的平方(如,3个小屋,耗费的木头就是4*9=36)
case woodmaker:if((Resource1.woodmaker+Resource1.meatmaker)<Resource1.peoplemax){Resource1.woodmaker+=1;Resource1.wood+=1;
}
//伐木工,每次生产一个伐木工,木头资源增加1,伐木工个数增加1,要求伐木工和猎人的总数不能大于人口上限
case meatmaker:if( ((Resource1.woodmaker+Resource1.meatmaker)<Resource1.peoplemax)&&(Resource1.wood>0)){Resource1.meatmaker
//猎人,同上,但是生产一个猎人,会增加一个肉同食消耗掉一个木头
+=1;Resource1.meat+=1;Resource1.wood-=1;
}
case view:draw()
{cout<<"木头"<<Resource1.wood<<"肉"<<Resource1.meat<<"煤"<<Resource1.coal<<"小屋数量"<<Resource1.house;
cout<<"腌肉坊"<<Resource1.meathouse<<"贸易站"<<Resource1.tradehouse<<"人口上限"<<Resource1.peoplemax;
}
;//显示函数,用来观察整个生产的状态,同时检测数值是否正确。
default:return 0;
}
int main()
{Resource Resource1;//构造函数赋初值
Resource::Resource()
{set(0,0,0,1,0,0,0,0,8)};//初值,人口上限8,小屋1,其他都是0
void Resource1.set(int a,int b,int c, int d,int e,int f, int g,int h,int i)
{Resource1.wood=a;Resource1.meat=b;Resource1.coal=c;Resource1.house=d;Resource1.meathouse=e;Resource1.tradehouse=f;
Resource1.woodmaker=g;Resource1.meatmaker=h;Resource1.peoplemax=k;};enum choose{wood,meat,coal,meathouse,tradehouse,woodmaker,meatmaker,house,view};//设置n种,枚举类型
int Resource1.peoplemax=int Resource1.house*8;//人口上限=小屋数量*8
while(Resource1.meat<10000)//假设游戏胜利目标为木头1000
{cout<<"欢迎来到小黑屋测试版,请输入你要选择的命令/n"<<"请输入你的指令:house建造房子,meathouse建造腌肉坊,woodmaker增加伐木工,meatmaker增加猎人,view查看状态/n";
choose temp;system("cls");cin>>temp;Resource1.build(temp);//choose为自定义的枚举类型,有house,meathouse,woodmaker等等
}return 0;}
#include <vector>
main()
测试下公司网络能发表不~~
#include <time.h>
#include<iostream>
#include<windows.h>
using namespace std;
#include <stdio.h>
enum _choose
{//设置n种,枚举类型,就是输入的各种情况
wood,
meat,
coal,
meathouse,
tradehouse,
woodmaker,
meatmaker,
house,
view
}choose;
class Resource//资源类
{
public:
Resource(){};// 构造函数
void set(int a,int b,int c,int d,int e,int f,int g,int h,int i);
int build(int k);//建造函数,包括建筑物和工人
int m_wood;//木头
int m_meat; //肉
int m_coal;//煤矿
int m_house;//房屋,一个房屋可以增加8个人口,最大值10
int m_meathouse;//腌肉房最大值1
int m_tradehouse;//贸易坊最大值1
int m_woodmaker;//伐木工,可生产木头,猎人和伐木工的总数,不能超过人口上限。
int m_meatmaker;//猎人,可产生肉。猎人和伐木工的总数,不能超过人口上限。
int m_peoplemax;//人口上限,初始值为8,house的8倍,上限为80;
protected:
};
//
int Resource::build(int k)//建造建筑所需资源参数,猎人小屋5块木头,贸易坊2块木头1块肉,小屋4块木头
{
switch(k)
{
case 1:
if((m_wood>=2)&&(m_meat>=1)&&(m_tradehouse==0))
{
m_wood-=2;
m_meat-=2;
m_tradehouse=1;
return m_tradehouse;
}
else
{
return 0;
}
break;
//必须要木头大于2,肉大于1,贸易坊为0,才可建造,建造好后,贸易坊的个数变为1,木头减少2,肉减少1
case 2:
if((m_wood>=5)&&(m_meathouse==0))
{
m_wood-=5;
m_meathouse=1;
return m_meathouse;
}
else
{
return 0; //必须要要大于5块木头,猎人小屋为0,才可建造。建造好后,猎人小屋的数量增加1,木头减少5. }
}
break;
case 3:
if((m_wood>=4*m_house)&&(m_house<=16))
{
m_wood-=4*m_house;
m_house+=1;m_peoplemax=8+4*(m_house-1);
return m_house;
}
else
{
return 0;
}
break;
//小屋,每建造一次,人口上限增加8,最多可以建造10次。下次建造所耗费的木头=4*小屋数量的平方(如,3个小屋,耗费的木头就是4*9=36)
case 4:
if((m_woodmaker+m_meatmaker)<m_peoplemax)
{
m_woodmaker+=1;
m_wood+=1;
}
else
{
}
break;
//伐木工,每次生产一个伐木工,木头资源增加1,伐木工个数增加1,要求伐木工和猎人的总数不能大于人口上限
case 5:
if(((m_woodmaker+m_meatmaker)<m_peoplemax)&&(m_wood>0)&&m_meathouse==1)
{//猎人,同上,但是生产一个猎人,会增加一个肉同食消耗掉一个木头
m_meatmaker+=1;
m_meat+=1;
m_wood-=1;
}
break;
case view://显示函数,用来观察整个生产的状态,同时检测数值是否正确。
//draw()
{
cout<<"木头"<<m_wood<<"肉"<<m_meat<<"煤"<<m_coal<<endl;
cout<<"小屋数量"<<m_house<<"当前人口"<<m_woodmaker+m_meatmaker<<endl;
cout<<"腌肉坊"<<m_meathouse<<"贸易站"<<m_tradehouse<<"人口上限"<<m_peoplemax<<endl;
break;}
default: return 0;
}
return 0;
}
void Resource::set(int a,int b,int c,int d,int e,int f,int g,int h,int i)
{
m_wood=a;
m_meat=b;
m_coal=c;
m_house=d;
m_meathouse=e;
m_tradehouse=f;
m_woodmaker=g;
m_meatmaker=h;
m_peoplemax=8;
};
int main()
{
Resource Res;//构造函数赋初值
Res.set(20,0,0,1,0,0,0,0,0);//初值,人口上限8,小屋1,其他都是0
cout<<"欢迎来到小黑屋测试版,请输入你要选择的命令"<<endl;
cout<<"1建造贸易坊,2建造腌肉坊(耗费5个木头,可生产猎人),3建造小屋(增加人口4,耗费木头4)"<<endl;
cout<<"4增加伐木工(增加1的木头),5增加猎人(增加1的肉,耗费1的木头)"<<endl<<endl<<endl;
while(Res.m_meat<4)//假设游戏胜利目标为肉1000
{ int temp;
Res.build(view);
cin>>temp;
Res.build(temp);
}
cout<<"恭喜你完成目标";
return 0;
}
你这个代码能运行,但是不能进行游戏,我自己调试了一下解决了,感谢你对我的帮助,我该怎么送分给你呢?
另外还有个问题,int temp的话,输入值就是整数了,可实际上是字符串,我为了偷懒,把switch改成了常数,但是这样一来enum的枚举值就没意义了,如果要输入字符串,并能进入switch语句判断,该怎么做呢?用指针?或者是库里的字符串函数?如果可以的话,我想看看用指针,怎么解决这个问题的,麻烦你了。#include <time.h>
#include<iostream>
#include<windows.h>
using namespace std;
#include <stdio.h>
class Resource//资源类
{protected:
int wood;//木头
int house;//房屋,一个房屋可以增加8个人口,最大值10
int woodmaker;//伐木工,可生产木头,猎人和伐木工的总数,不能超过人口上限。
public:
Resource();//构造函数
void set(int wood,int house,int woodmaker);
int build(Choose choose);//建造函数,包括建筑物和工人
}
int Resource::build(Choose choose)//建造建筑所需资源参数,小屋4块木头
{switch(Choose choose)
{case house:if((wood>=4*house*house)&&(house<=10))
{wood-=4*house*house; house+=1;returnhouse;else return 0}
//小屋,每建造一次,人口上限增加8,最多可以建造10次。下次建造所耗费的木头=4*小屋数量的平方(如,3个小屋,耗费的木头就是4*9=36)
case woodmaker:woodmaker+=1;wood+=1;
//伐木工,每次生产一个伐木工,木头资源增加1,伐木工个数增加1,要求伐木工和猎人的总数不能大于人口上限
case view:draw()
{cout<<"木头"<<wood<<"小屋数量"<<house<<"伐木工"<<woodmaker;}
//显示函数,用来观察整个生产的状态,同时检测数值是否正确。
default:return 0;
}
Resource::Resource()//构造函数赋初值
{set(0,1,0)};//初值,小屋1,其他都是0
void Resource::set(int wood,int house,int woodmaker)
{Resource1.wood=wood;Resource1.house=house;
Resource1.woodmaker=woodmaker;}
int main()
{enum Choose{wood,woodmaker,house,view};Resource Resource1;//将Resource1定义成Resource类
//设置n种,枚举类型,就是输入的各种情况
while(Resource1.wood<10000)//假设游戏胜利目标为木头1000
{cout<<"欢迎来到小黑屋测试版,请输入你要选择的命令/n"<<"请输入你的指令:house建造房子,
meathouse建造腌肉坊,woodmaker增加伐木工,meatmaker增加猎人,view查看状态/n"<<endl;
choose temp;system("cls");cin>>temp;Resource1.build(temp);//choose为自定义的枚举类型,有house,meathouse,woodmaker等等
}return 0;}