HUST Online Judge WebBoard
Problem 114514 >> RPG游戏(测试版)
zhangwenbo @ 2024-06-16 16:36:47
[ Quote ] [ Edit ] [ Delete ] 1#
游戏名:末日生存
zhangwenbo @ 2024-06-16 16:37:15
[ Quote ] [ Edit ] [ Delete ] 2#
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
string d="“家”",wei="0",miao="这是你的家...";
string di[10]={"公园","???"},wi[10]={"1","???"},mi[10]={"家附近的公园,怪物中等,但弱","???"};
struct clas{
string name;
int shu;
}beba[65];int inbe=1;
int ti[10]={5,0};
int hp=100,san=200,Lv,tili=100,jie=100,exp1;
void x_1();void x_2();void x_3();void x_4();void x_6();void setsize(int col, int row);void Prepare();void cls(string a);void zh(string a,int s);void zhan(string le);
int main(){
srand(time(NULL));
setsize(200,150);
SetWindowLongPtrA(GetConsoleWindow(), GWL_STYLE, GetWindowLongPtrA(GetConsoleWindow(),GWL_STYLE)& ~WS_SIZEBOX & ~WS_MAXIMIZEBOX & ~WS_MINIMIZEBOX);\
Prepare();
cout<<"一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一末日生存一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一"<<endl;
cout<<"v.测试版"<<endl;
cls("j");
int j=0;
while(1){
if(j==0)j=1;
else{cout<<"一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一末日生存一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一"<<endl;cout<<"v.测试版"<<endl; }
zh("行动:1=出门,2=歇息,3=回家(若在家则无效),4=查看背包,5=查看属性,6=探索(若在家则无效),输入其他结束游戏\n",10);
string x1;
cin>>x1;
if(x1=="1")x_1();
else if(x1=="2")x_2();
else if(x1=="3")x_3();
else if(x1=="4")x_4();
else if(x1=="5"){zh("HP:",50);cout<<hp<<endl;zh("San:",50);cout<<san<<endl;zh("Lv.",50);cout<<Lv<<endl;zh("exp",50);cout<<exp1<<endl;zh("体力:",50);cout<<tili<<endl;zh("饱食度:",50);cout<<jie<<endl;zh("所在地点:"+d+"\n",50);zh("危险程度:"+wei+"\n",50);zh("描述:"+miao+"\n",50);cls("j");cls("cls");}
else if(x1=="6")x_6();
else{cls("cls");zh("感谢游玩\n\n\n",50);zh("作者:zhangwenbo\n\n\n",50);return 0;}
}
return 0;
}
void x_1(){
zh("去哪?\n",20);
for(int i=0;i<2;i++){
string b;b+=i+'1';
zh(b+"."+di[i]+"\n",20);
}
zh("3.不去了\n",20);
while(1){
int a;
cin>>a;
a-=1;
if(a==2){
cls("cls");
return;
}else if(a>2)zh("请重新输入!\n",20);
else if(di[a]=="???"){
zh("未开放\n请重新输入!\n",20);
}else{
if(tili-ti[a]<0){
zh("体力不足,无法前往\n请换一个\n",20);
}else{
zh("名称:"+di[a]+"\n",20);
zh("危险程度:"+wi[a]+"\n",20);
zh("描述:\n "+mi[a]+"\n",20);
string bb;
bb+=ti[a]+'0';
zh("消耗体力:"+bb+"\n\n",20);
zh("是否前往(y/n)\n",20);
string bbb;
cin>>bbb;
if(bbb=="y"){
d=di[a];wei=wi[a];miao=mi[a];tili-=ti[a];
zh("正在前往...\n",20);
Sleep(1000);
zh("已到达!\n",20);
cls("j");
break;
}else{
zh("那么请重新选择\n",20);
}
}
}
}
cls("cls");
}
void x_2(){
if(tili==100)zh("你的体力为满!\n",20);
if(jie-5>=0){
if(tili!=100&&tili+10<100){
tili+=10;
jie-=5;
zh("你的体力已增加\n",20);
}else if(tili+10>=100){
zh("你的体力已回满\n",20);
tili=100;jie-=5;
}
}else{
zh("你太饿了,无法歇息\n",20);
}
cls("j");
cls("cls");
}
void x_3(){
if(d=="“家”")zh("你已在家...",20);
else{
for(int i=0;i<2;i++){
if(d==di[i]){
zh("已回家",20);
tili-=ti[i];
break;
}
}
}
cout<<endl;
cls("j");
d="“家”";wei="0";miao="这是你的家...";
cls("cls");
}
zhangwenbo @ 2024-06-16 16:37:19
[ Quote ] [ Edit ] [ Delete ] 3#
void x_4(){
cout<<"未开发"<<endl;
cls("j");
cls("cls");
}
void x_6(){
srand(time(NULL));
if(d=="公园"){
int x=rand()%6;
if(x==0){
int ij=0;
zh("你发现了一个苹果\n",20);
for(int i=1;i<inbe;i++){if(beba[i].name=="苹果"){beba[i].shu++;ij=1;}}
if(ij!=1)beba[inbe].name="苹果";inbe++;
}else if(x==1)zh("你什么也没遇到\n",20);
else if(x==5){
int ij=0;
zh("你捡到了一个锋利的石子\n",20);
for(int i=1;i<inbe;i++){if(beba[i].name=="锋利的石子"){beba[i].shu++;ij=1;}}
if(ij!=1)beba[inbe].name="锋利的石子";inbe++;
}else if(x==3){
int ij=0;
zh("你捡到了一袋面包\n",20);
for(int i=1;i<inbe;i++){if(beba[i].name=="一袋面包"){beba[i].shu++;ij=1;}}
if(ij!=1)beba[inbe].name="一袋面包";inbe++;
}else{
zh("你遇到了丧尸!!!",20);
zhan("丧尸");
}
}else{
zh("你在家",20);
}
cls("j");
cls("cls");
}
void setsize(int col, int row){
char cmd[64];
sprintf(cmd, "mode con cols=%d lines=%d", col, row);
system(cmd);
}
void Prepare(){
HANDLE hOut;
CONSOLE_CURSOR_INFO curInfo;
hOut=GetStdHandle(STD_OUTPUT_HANDLE);
curInfo.dwSize=1;
curInfo.bVisible=0;
SetConsoleCursorInfo(hOut,&curInfo);
SetConsoleTitle("末日生存");
}
void cls(string a){
if(a=="j")system("pause");
else system("cls");
}//自己看
void zh(string a,int s){
for(int i=0;i<a.size();i++){
cout<<a[i];
Sleep(s);
}
}//逐字说话 (文本 ,等待时间)
void zhan(string le){
if(le=="丧尸"){
srand(time(NULL));
int xue=rand()%10+10;
zh("对手血为:",20);cout<<xue<<endl;
int x2=0,x2i=0;
for(int i=1;i<inbe;i++){
if(beba[i].name=="锋利的石子"){x2=beba[i].shu;x2i=i;}
}
zh("1.拳击(10伤害,但对手会还击)\n",20);
zh("2.用锋利的石子砸(5伤害,对手不会还击,一个一次)\n 拥有:",20);cout<<x2<<endl;
zh("选择(1,2...)(没有自动用拳击)\n",20);
while(1){
if(hp<=0){
cls("cls");
system("color 4E");
Sleep(500);
cout<<"GAME OVER"<<endl<<endl<<endl;
Sleep(500);
zh("你被丧尸所杀...",100);
exit(0);
}
cout<<"你的HP:"<<hp<<endl<<"对手的血:"<<xue<<endl;
int a;
cin>>a;
if(a==2&&x2>0){
xue-=5;
beba[x2i].shu--;
if(xue<=0)break;
}else{
xue-=10;
if(xue<=0)break;
hp-=rand()%3+2;
}
}
}
zh("你赢了!!!\n",20);
tili-=10;
cls("j");
cls("cls");
}
zhaodongqiang @ 2024-06-18 20:54:25
[ Quote ] [ Edit ] [ Delete ] 4#
额~~我C++好像输出不了中文
zhangwenbo @ 2024-06-19 19:16:48
[ Quote ] [ Edit ] [ Delete ] 5#
怎么可能呢
zhangwenbo @ 2024-06-23 14:56:45
[ Quote ] [ Edit ] [ Delete ] 6#
zhangwenbo @ 2024-07-03 11:47:12
[ Quote ] [ Edit ] [ Delete ] 7#
咳咳,这是我用c++1个小时30分钟桌游做的,不喜勿喷
zhaodongqiang @ 2024-07-03 12:42:22
[ Quote ] [ Edit ] [ Delete ] 8#
6