note的
2025-02-13 17:00:09
发布于:北京
#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
using namespace std;
int ti(float a) {return ((int)(a10+5))/10;}
void Setpos(float x,float y){COORD pos;pos.X=ti(y4)/2;pos.Y=ti(x);SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
string mapp[100][100];
int a[100005], f[1005][1005];
struct item{
string name;
string use;
};
item _(string a,string b){
item h;
h.name=a;
h.use=b;
return h;
};
bool ftree,fwood,fcraft,froad,fsapling,fwtr,fgoal;
int fgoals;
const int th=9;
item its[th]={
_("手","用手撸掉并获取地面上的东西,按下'1'键撸掉你旁边所有的方块,树或石头"),
_("木材","来自森林的木材,可以放置在空地上也能用于制作物品,按下'1'键放置"),
_("树苗","树木掉落的树苗,放置在空地上后浇水可以长大,按下'1'键放置"),
_("苹果","你可以吃掉它,按下'1'键吃掉"),
_("石头","来自石堆或地下,你可以用它来合成一些工具"),
_("木棍","一根很好的棍子,可以用来合成一些工具"),
_("石铲","用来铺路的铲子,按下'1'把脚下铲成道路,按下'2'把脚下恢复成空地。用来连接地点。"),
_("木桶","用木桶搬水让树苗长大,在水边按'1'盛水"),
_("盛水的木桶","在树苗旁按'1'泼水")
}; int bkp[th]={ 1 };
struct recipe{
int done;
int r1,n1,r2,n2;
};
recipe o(int a,int b,int c,int d,int e){
recipe m;
m.done=a;
m.r1=b;
m.n1=c;
m.r2=d;
m.n2=e;
return m;
}
const int reth=4;
recipe rs[reth]={
o(5,1,2,0,0),
o(6,5,2,4,1),
o(1,3,3,0,0),
o(7,1,5,0,0)
};
int main(){
//■
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
system("cls");
cout<<" 林场模拟器"<<endl;
cout<<" 创造和开发游戏"<<endl<<endl;
cout<<" 》请按任意键开始《" <<endl;
getch();
system("cls");
cout<<"你是否要手动输入种子生成?(如果要请按'1',使用随机种子按其他键)\n";
int ll=getch();
if(ll=='1'){
cout<<"请输入一个小于 100000000(10^8) 的数:";
int hn;cin>>hn;
srand(hn);
}else{
srand(time(0));
}
cout<<"世界正在生成....."<<endl;
for(int i=0;i<100;i++){
for(int j=0;j<100;j++){
mapp[i][j]=" ";
}
}
for(int i=0;i<150;i++){
mapp[rand()%100][rand()%100]="树";
}
for(int i=0;i<20;i++){
int chix=rand()%100,chiy=rand()%100;
if(min(chix,chiy)<3) continue;
mapp[chix][chiy]="水";
int chir=(rand()rand())%4;
if(chir1){
mapp[chix-1][chiy]="水";
}else if(chir2){
mapp[chix][chiy-1]="水";
mapp[chix-1][chiy-1]="水";
}else if(chir3){
mapp[chix-1][chiy-1]="水";
mapp[chix-1][chiy]="水";
mapp[chix][chiy-1]="水";
}
}
for(int i=0;i<20;i++){
int chix=rand()%100,chiy=rand()%100;
if(min(chix,chiy)<3) continue;
mapp[chix][chiy]="石";
int chir=(rand()*rand())%4;
if(chir1){
mapp[chix-1][chiy]="石";
}else if(chir2){
mapp[chix][chiy-1]="石";
mapp[chix-1][chiy-1]="石";
}else if(chir3){
mapp[chix-1][chiy-1]="石";
mapp[chix-1][chiy]="石";
mapp[chix][chiy-1]="石";
}
}
int chux,chuy;
while(true){
chux=rand()%100;
chuy=rand()%100;
if(mapp[chux][chuy]" "){
break;
}
}
int mx=chux,my=chuy;
Sleep(2000);
system("cls");
cout<<"你生活在一个很缺木头的地方。\n";
Sleep(1000);
cout<<"今天村长委托你来到一片森林里。\n";
Sleep(1000);
cout<<"他说你需要在森林里建造一个可持续的林场,\n";
Sleep(1000);
cout<<"但森林里没有人,你也没有任何工具\n";
Sleep(1000);
cout<<"看来只能从0开始了\n";
Sleep(1000);
system("pause");
system("cls");
int nowt=0,nown=1;
while(true){
Setpos(0,0);
int lx=mx,ly=my;
cout<<"+------------------------------------------+"<<endl;
for(int i=-10;i<=10;i++){cout<<"|";
for(int j=-10;j<=10;j++){
if(i0&&j0) cout<<"我";
else if(mx+i<0||mx+i>99||my+j<0||my+j>99) cout<<"■";
else cout<<mapp[mx+i][my+j];
}
cout<<"|";
if(i-9) cout<<" 按下'e'键查看背包";
if(i==-8) cout<<" 按下'Esc'暂停游戏";
if(i==-7) cout<<" 使用'w','a','s','d'移动";
if(i==-6) cout<<" 按下'r'键进入合成区";
if(i==-5&&ftree) cout<<" 达成成就:伐木工";
if(i==-4&&fwood) cout<<" 达成成就:储存资源";
if(i==-3&&fcraft) cout<<" 达成成就:合成工具";
if(i==-2&&froad) cout<<" 达成成就:铺设道路 冷知识:走在道路上速度很快";
if(i==-1&&fsapling) cout<<" 达成成就:栽种树苗";
if(i0&&fwtr) cout<<" 达成成就:木桶取水";
if(i1&&fgoal) cout<<" 达成最终成就:植树造林 养大10棵树苗即可通关";
if(i2&&fgoal) cout<<" 目前已养大"<<fgoals<<"棵树";
if(i3&&fgoals>=10) cout<<" 任务已完成,按下'z'键结束游戏";
cout<<endl;
}
cout<<"+------------------------------------------+"<<endl;
cout<<"你现在正在使用:"<<its[nowt].name<<" "<<its[nowt].use<<" 按下'↓'切换正在使用的物品 "<<endl;
char k=getch();
if(k=='w'||k=='W') mx--;
else if(k=='a'||k=='A') my--;
else if(k=='s'||k=='S') mx++;
else if(k=='d'||k=='D') my++;
if(k=='1'||k=='!'){
if(nowt0){
if(mx!=0&&mapp[mx-1][my]"树"){ftree=1;bkp[1];bkp[2];mapp[mx-1][my]=" ";if(rand()%30) bkp[3]++;};
if(mx!=99&&mapp[mx+1][my]"树"){ftree=1;bkp[1];bkp[2];mapp[mx+1][my]=" ";if(rand()%30) bkp[3]++;};
if(my!=0&&mapp[mx][my-1]"树"){ftree=1;bkp[1];bkp[2];mapp[mx][my-1]=" ";if(rand()%30) bkp[3]++;};
if(my!=99&&mapp[mx][my+1]"树"){ftree=1;bkp[1];bkp[2];mapp[mx][my+1]=" ";if(rand()%30) bkp[3]++;};
if(mx!=0&&mapp[mx-1][my]"石"){bkp[4];mapp[mx-1][my]=" ";};
if(mx!=99&&mapp[mx+1][my]=="石"){bkp[4];mapp[mx+1][my]=" ";};
if(my!=0&&mapp[mx][my-1]"石"){bkp[4]++;mapp[mx][my-1]=" ";};
if(my!=99&&mapp[mx][my+1]"石"){bkp[4];mapp[mx][my+1]=" ";};
if(mx!=0&&mapp[mx-1][my]=="木"){bkp[1];mapp[mx-1][my]=" ";};
if(mx!=99&&mapp[mx+1][my]"木"){bkp[1]++;mapp[mx+1][my]=" ";};
if(my!=0&&mapp[mx][my-1]"木"){bkp[1];mapp[mx][my-1]=" ";};
if(my!=99&&mapp[mx][my+1]=="木"){bkp[1];mapp[mx][my+1]=" ";};
}else if(nowt3){
nown--;
bkp[3]--;
if(nown0) nowt=0;
}else if(nowt1){
cout<<"你要在哪里放置木头?(i上 j左 k下 L右)";
char tt=getch();
if(mx!=0&&(tt'i'||tt=='I')&&mapp[mx-1][my]" "){fwood=1;bkp[1]--;nown--;mapp[mx-1][my]="木";};
if(my!=0&&(tt'j'||tt=='J')&&mapp[mx][my-1]" "){fwood=1;bkp[1]--;nown--;mapp[mx][my-1]="木";};
if(mx!=99&&(tt'k'||tt=='K')&&mapp[mx+1][my]" "){fwood=1;bkp[1]--;nown--;mapp[mx+1][my]="木";};
if(my!=99&&(tt'l'||tt=='L')&&mapp[mx][my+1]" "){fwood=1;bkp[1]--;nown--;mapp[mx][my+1]="木";};
if(nown0){
nowt=0;
}
system("cls");
}else if(nowt2){
cout<<"你要在哪里放置树苗?(i上 j左 k下 L右)";
char tt=getch();
if(mx!=0&&(tt'i'||tt=='I')&&mapp[mx-1][my]" "){bkp[2]--;nown--;mapp[mx-1][my]="苗";fsapling=1;};
if(my!=0&&(tt'j'||tt=='J')&&mapp[mx][my-1]" "){bkp[2]--;nown--;mapp[mx][my-1]="苗";fsapling=1;};
if(mx!=99&&(tt'k'||tt=='K')&&mapp[mx+1][my]" "){bkp[2]--;nown--;mapp[mx+1][my]="苗";fsapling=1;};
if(my!=99&&(tt'l'||tt=='L')&&mapp[mx][my+1]" "){bkp[2]--;nown--;mapp[mx][my+1]="苗";fsapling=1;};
if(nown0){
nowt=0;
}
system("cls");
}else if(nowt6){
mapp[mx][my]="□"; froad=1;
}else if(nowt7){
if(mx!=0&&mapp[mx-1][my]"水"||mx!=99&&mapp[mx+1][my]"水"||my!=0&&mapp[mx][my-1]"水"||my!=99&&mapp[mx][my+1]"水"){bkp[7]--;bkp[8];nowt=8;fwtr=1;};
}else if(nowt8){
bool f=false;
if(mx!=0&&mapp[mx-1][my]"苗"){f=true;mapp[mx-1][my]="树";fgoal=1;fgoals;};
if(mx!=99&&mapp[mx+1][my]"苗"){f=true;mapp[mx+1][my]="树";fgoal=1;fgoals++;};
if(my!=0&&mapp[mx][my-1]"苗"){f=true;mapp[mx][my-1]="树";fgoal=1;fgoals++;};
if(my!=99&&mapp[mx][my+1]"苗"){f=true;mapp[mx][my+1]="树";fgoal=1;fgoals++;};
if(f){
bkp[7]++;bkp[8]--;nowt=7;
}
}
}
if(k'2'){
if(nowt6){
mapp[mx][my]=" ";
}
}
if(k'e'||k=='E'){
system("cls");
cout<<"背包\n\n";
for(int i=1;i<th;i++){
if(bkp[i]!=0){
cout<<its[i].name<<" "<<bkp[i]<<"个 "<<its[i].use<<endl;
}
}
cout<<"\n\n请按任意键退出";
getch();
system("cls");
}
if((k=='z'||k=='Z')&&fgoals>=10){
break;
}
if(k==80){int y;for(int i=(nowt+1)%th;i<2th;i++){if(bkp[i%th]!=0){y=i%th;break;}}nowt=y;nown=bkp[y];};
if(k27){system("cls");cout<<"游戏已暂停\n\n按下空格键继续游戏\n按下'q'键结束游戏";while(true){char tt=getch();if(tt' '){break;}else if(tt=='q'||tt=='Q'){return 0;}}};
if(k=='r'||k=='R'){
system("cls");
cout<<"合成区\n\n";
for(int i=0;i<reth;i++){
cout<<i+1<<":"<<its[rs[i].done].name<<"="<<its[rs[i].r1].name<<rs[i].n1<<"个";
if(rs[i].r2!=0){
cout<<"+"<<its[rs[i].r2].name<<rs[i].n2<<"个";
}
cout<<endl;
}
cout<<"\n输入合成编号合成物品,按下'Esc'键退出合成区";
while(true){
char tt=getch();
if(tt27){
break;
}else if(isdigit(tt)&&tt!=0&&tt-'0'<=reth){
if(bkp[rs[tt-'0'-1].r1]>=rs[tt-'0'-1].n1&&bkp[rs[tt-'0'-1].r2]>=rs[tt-'0'-1].n2){
cout<<"\n合成成功!";
bkp[rs[tt-'0'-1].r1]-=rs[tt-'0'-1].n1;
bkp[rs[tt-'0'-1].r2]-=rs[tt-'0'-1].n2;
bkp[rs[tt-'0'-1].done]++;
fcraft=1;
Sleep(1000);
break;
}else{
cout<<"\n材料不足,合成失败";
Sleep(1000);
break;
}
}
}
}
if(mx<0||mx>99||my<0||my>99){
mx=lx;my=ly;
}
if(mapp[mx][my]!=" "&&mapp[mx][my]!="□"){
mx=lx;my=ly;
}
if(mapp[mx][my]" ") Sleep(30);
}
system("cls");
cout<<"你带着好消息回到了村庄,\n";
Sleep(1000);
cout<<"村长听见了很开心。\n";
Sleep(1000);
cout<<"所以他送给你了1000道绿题以示感谢\n";
Sleep(1000);
cout<<"你开心的抱着绿题走了\n\n\n";
Sleep(1000);
cout<<"感谢游玩\n制作:ckr\n---------------\n\nFSOI\n10月20日";
return 0;
}
这里空空如也
有帮助,赞一个