#include<iostream>
#include<fstream>
#include<time.h>
#include<windows.h>
using namespace std;
class Game{
public:
Game(){
system("title 秘密小镇");
}
void mainloop(){
load();
while(true){
system("cls");
cout << "选择:\n1.开始小镇\n2.保存并退出游戏\n3.读取存档" << endl;
choose = choose_one(3);
if(choose == 2){
save();
return;
}
else if(choose == 3){
if(read()){
cout << "存档错误!" << endl;
system("pause");
continue;
}
if(vitality <= 0){
cout << "该存档游戏已结束" << endl;
system("pause");
continue;
}
}
start_game();
}
}
private:
int vitality;//定义主角初始生命力
int difficulty;//定义难度
int aggressivity;//定义主角初始攻击力
int defense;//定义主角初始防御力
int money;//定义主角初始金钱数量
int energy;//定义主角精力,精力小于10会有几率死亡
bool is_pass;//定义是否通关判定
int choose;//定义选择
int choose_one(int end,bool clear = true){
int n;
while(true){
cout << "请选择:";
cin >> n;
if(n <= end&&n >= 1){
if(clear){
system("cls");
}
return n;
}
cout << "输入错误!!!" << endl;
}
}
void load(){
int len;
for(int i = 0;i <= 100;i++){
system("cls");
cout << "加载中……" << i << "%" << endl;
len = i / 4;
for(int j = 0;j < len;j++){
cout << "=";
}
for(int j = 0;j + len < 25;j++){
cout << "-";
}
cout << endl;
if(i < 34){
cout << "妇人会告诉你怎样通关游戏!";
}
else if(i < 67){
cout << "如果实在没钱,可以看一段广告!";
}
else{
cout << "精力小于10会有概率暴毙哟!";
}
Sleep(1);
}
cout << "\r游戏加载成功! " << endl;
Sleep(3000);
}
void save(){
ofstream outfile;
outfile.open("$pos");
outfile << aggressivity << endl;
outfile << money << endl;
outfile << energy << endl;
outfile << defense << endl;
outfile << difficulty << endl;
outfile.close();
}
bool read(){
ifstream infile;
infile.open("$pos");
if(!infile){
return true;
}
infile >> aggressivity;
infile >> money;
infile >> energy;
infile >> defense;
infile >> difficulty;
infile.close();
return false;
}
void set(int vitality,int aggressivity,int defense,int money,int energy){
this->vitality = vitality;
this->aggressivity = aggressivity;
this->defense = defense;
this->money = money;
this->energy = energy;
}
void wuqidian(){
cout<<"欢迎来到武器店!"<<endl;
while(true){
cout<<"1.买小刀(10M加2攻击力)"<<endl;
cout<<"2.买短剑(80M加20攻击力)"<<endl;
cout<<"3.买大砍刀(140M加40攻击力)"<<endl;
cout<<"4.买双节棍(200M加60攻击力)"<<endl;
cout<<"5.买盾牌(60M加30防御力)"<<endl;
cout<<"6.买铠甲(100M加60防御力)"<<endl;
cout<<"7.离开武器店"<<endl;
int wuqidian = choose_one(7);
switch(wuqidian) {
case 1:
if(money<10)
cout<<"你的钱不够"<<endl;//钱不够时返回Flase
else {
cout<<"购买成功!"<<endl;//钱足够时返回True
aggressivity+=2;
money-=10;
}
break;
case 2:
if(money<80)
cout<<"你的钱不够"<<endl;
else {
cout<<"购买成功!"<<endl;
aggressivity+=20;
money-=80;
}
break;
case 3:
if(money<140)
cout<<"你的钱不够"<<endl;
else {
cout<<"购买成功!"<<endl;
aggressivity+=40;
money-=140;
}
break;
case 4:
if(money<200)
cout<<"你的钱不够"<<endl;
else {
cout<<"购买成功!"<<endl;
aggressivity+=60;
money-=200;
}
break;
case 5:
if(money<60)
cout<<"你的钱不够"<<endl;
else {
cout<<"购买成功!"<<endl;
defense+=30;
money-=60;
}
break;
case 6:
if(money<100)
cout<<"你的钱不够"<<endl;
else {
cout<<"购买成功!"<<endl;
defense+=60;
money-=100;
}
break;
case 7:
cout<<"欢迎下次再来!"<<endl;
system("pause");
return;
}
system("pause");
system("cls");
}
} /* yaodian()的设置与wuqidian()相同,可参照阅读. */
void yaodian() {
cout<<"欢迎来到药品店!"<<endl;
while(true){
cout<<"1.买1号补血药(10M加200生命和1精力)"<<endl;
cout<<"2.买2号补血药(50M加1000生命和6精力)"<<endl;
cout<<"3.买3号补血药(100M加2200生命和12精力)"<<endl;
cout<<"4.离开药店"<<endl;
int yaodian = choose_one(4);
switch(yaodian) {
case 1:
if(money<10)
cout<<"你的钱不够"<<endl;
else {
cout<<"购买成功!"<<endl;
vitality+=200;
money-=10;
energy++;
}
break;
case 2:
if(money<50)
cout<<"你的钱不够"<<endl;
else {
cout<<"购买成功!"<<endl;
vitality+=1000;
money-=50;
energy+=6;
}
break;
case 3:
if(money<100)
cout<<"你的钱不够"<<endl;
else {
cout<<"购买成功!"<<endl;
vitality+=2200;
money-=100;
energy+=12;
}
break;
case 4:
cout<<"欢迎下次再来!"<<endl;
system("pause");
return;
}
system("pause");
system("cls");
}
}
void guaiwu1() {
cout << "开始与小怪物战斗!!!" << endl;
int g_vitality;//定义怪物生命
int g_aggressivity;//定义怪物攻击力
int g_defense;//定义怪物防御力
int g_money;//定义怪物金钱
int g_suiji;
srand(unsigned(time(NULL)));
g_vitality=rand()%100+300;
g_aggressivity=rand()%100+30;
g_defense=rand()%100+30;
g_money=rand()%20+20;
g_suiji = 0;
int tongji1;//用来计算主角对怪物的杀伤
int tongji2;//用来计算怪物对主角的杀伤
int huihe = 1;//定义回合数
while(true){
cout << endl << "现在是第" << huihe << "回合" << endl;
cout << "1.攻击\n2.逃跑" << endl;
int xuanze = choose_one(2,false);
switch(xuanze){
case 1:
cout << "你对小怪物发动了攻击,精力-1" << endl;
energy--;
tongji1 = max(0,aggressivity * 2 - g_defense);
g_vitality -= tongji1;
cout << "你打掉了小怪物" << tongji1 << "点生命" << endl;
cout << "小怪物还剩" << max(0,g_vitality) << "点生命" << endl;
if(g_vitality <= 0){
//杀死怪物后的返回
cout << "小怪物被你杀死了" << endl;
cout << "你挣了" << g_money << "M币" << endl;
money += g_money;
cout << "你精力大涨,精力+2" << endl;
energy += 2;
system("pause");
return;
}
cout << "小怪物对你发动了攻击" << endl;
if(!(huihe % 4) && difficulty > 4){
cout<<"小怪物使用了技能“斩将”,你减少3000生命!"<<endl;
vitality-=3000;
}
else{
if(difficulty > 2){
srand(unsigned(time(NULL)));
g_suiji = rand()%111+5;
}
tongji2 = max(0,g_aggressivity * 2 - defense + g_suiji);
vitality -= tongji2;
cout << "小怪物打掉了你" << tongji2 << "点生命" << endl;
}
cout << "你还剩" << max(0,vitality) << "点生命" << endl;
if(vitality <= 0){
return;
}
break;
case 2:
cout<<"你决定逃跑!"<<endl;
if(rand()%30==1) {
cout << "你在逃跑过程中扭伤了腿,精力-1,但";
energy--;
}
cout << "逃跑成功!" << endl;
system("pause");
return;
}
huihe++;
}
}
void guaiwu2() {
srand(unsigned(time(NULL)));
cout<<"开始与大怪物战斗!!!"<<endl;
cout<<"你与大怪物战斗,精力-1"<<endl;
energy--;
double g_vitality;
int g_aggressivity;
int g_defense;
g_vitality=10000;
g_aggressivity=210;
g_defense=rand()%30+85;
double tongji1;
double tongji2;
tongji1=0;
tongji2=0;
int huihe;
huihe=1;
cout<<"你开始对大怪物进行攻击!"<<endl;
int xuanze;
char xuan;
while(g_vitality>0 && vitality>0 && xuanze!=2) {
srand(unsigned(time(NULL)));
int suiji=rand()%100+23,g_suiji=rand()%88+22;
cout<<"现在是第"<<huihe<<"回合!"<<endl;
cout<<"请选择你的动作:\n";
cout<<"1、攻击\n2、逃跑\n";
cin>>xuan;
xuanze=xuan-'0';
switch(xuanze) {
case 1:
cout<<"你对大怪物发动了攻击!"<<endl;
g_vitality-=int(aggressivity*3.5-g_defense+suiji);
tongji1=int(aggressivity*3.5-g_defense+suiji);
cout<<"你打掉了大怪物"<<tongji1<<"的生命!"<<endl;
cout<<"大怪物还剩"<<max(0.0,g_vitality)<<"点生命"<<endl;
if(g_vitality<=0) {
cout<<"大怪物被你杀死了!你真厉害!!!"<<endl;
is_pass=true;
Sleep(3000);
break;
}
vitality-=int(g_aggressivity*2-defense+g_suiji);
tongji2=int(g_aggressivity*2-defense+g_suiji);
cout<<"大怪物对你发动了攻击!"<<endl;
if(huihe==4&&difficulty>4){
cout<<"大怪物杀神附身,你一不小心被刀砍中,流血身亡。"<<endl;
vitality=0;
}
else cout<<"大怪物打掉了你"<<tongji2<<"的生命!"<<endl;
cout<<"你还剩"<<max(0,vitality)<<"点生命"<<endl;
break;
case 2:
cout<<"你决定逃跑!"<<endl;
cout<<"大怪物把你吓到了,你还在逃跑时扭伤了腿,精力值减2"<<endl;
energy-=2;
continue;
default:
cout<<"请不要乱选!"<<endl;
}
huihe++;
}
if(vitality<=0) {
cout<<"你被大怪物杀死了!游戏结束!!!"<<endl;
cout<<"即将返回主页面..."<<endl;
Sleep(3000);
} else if(xuanze==2) {
cout<<"你逃回了小镇!"<<endl;
cout<<"即将返回小镇..."<<endl;
Sleep(3000);
}
}
void jiaotan() {
cout<<"一个妇人:你好。(面无表情)"<<endl;
cout<<"你要:\n1.说:“你怎么这么冷漠???\n2.说:“你也好。\n3.离开。"<<endl;
int xuanze = choose_one(3);
switch(xuanze) {
case 1:
cout<<"妇人:当然是为了试探你呀!"<<endl;
cout<<"你与妇人谈的很投合,妇人告诉你,杀了大怪物,就可以离开这里。"<<endl;
break;
case 2:
cout<<"妇人:嗯嗯,你想知道怎么离开这里吗?"<<endl;
cout<<"1.想 2.算了"<<endl;
xuanze = choose_one(2);
switch(xuanze) {
case 1:
cout<<"你与妇人谈的很投合,妇人告诉你,杀了大怪物,就可以离开这里。"<<endl;
break;
case 2:
cout<<"妇人:哦,再见。"<<endl;
break;
}
break;
}
if(xuanze<3&&xuanze>0)system("pause");
}
void link() {
srand(unsigned(time(NULL)));
int guangg = rand()%4;
switch(guangg){
case 0:
cout<< "在洛谷,来我们的团队!https://www.luogu.com.cn/team/27254" << endl;
break;
case 1:
cout<<"公开版已经删除。" << endl;
break;
case 2:
cout<<"秘密之路,2020年3月制作,已经更新完成,欢迎找我下载,纯免费。"<<endl;
cout<<"你是否要玩一下小游戏?输1开始,其他跳过"<<endl;
int x;
cin>>x;
if(x==1)xiaoyou();
break;
case 3:
cout<<"此栏暂无广告,可以花2元在此放置自己的广告!(要求:广告字数需小于80;广告中不得拥有粗鲁、下流的语言,不得发布有政治敏感,针对某人的广告。"<<endl;
break;
}
for(int i = 14;i >= 0;i--){
cout << "还剩" << i << "秒";
Sleep(1000);
cout << "\r";
}
srand(unsigned(time(NULL)));
int n=rand()%200*2+30;
cout<<"完成观看,获得"<<n<<"元。"<<endl;
money+=n;
system("pause");
}
void xunlian(){
cout<<"正在训练,需要花费8秒………………"<<endl;
Sleep(8000);
srand(unsigned(time(NULL)));
int xz=rand()%12+3,gz=rand()%15+4;
if(difficulty>=2) {
xz-=1*difficulty;
gz-=2*difficulty;
}
if(xz<1)xz=1;
if(gz<1)gz=1;
cout<<"训练完成,精力-1,血量增加" <<xz<<",攻击增加"<<gz;
energy--;
vitality+=xz;
aggressivity+=gz;
system("pause");
}
void xiaoyou(){
cout<<"欢迎来到小游戏,你的收益:350金币已经到账。"<<endl;
money+=350;
int a1,a2,a3;//定义:输入的三个变量
cout<<"你是一个探险家,前面有5条路,你会选择:"<<endl;
cout<<"1.一条蜿蜒的小路"<<endl;
cout<<"2.一条大马路"<<endl;
cout<<"3.一条通往城市的路"<<endl;
cout<<"4.一条通往秘密小镇的路"<<endl;
cout<<"5.一条通往乡村的路"<<endl;
//============//
//初始定义结束//
//============//
a1 = choose_one(5);
switch(a1){
case 1 :cout<<"你选择了蜿蜒的小路"<<endl;
cout<<"(剧情)你走了走,发现有一个古庙......"<<endl;
cout<<"你要选择:" <<endl;
cout<<"1.回到岔路口"<<endl;
cout<<"2.走进去" <<endl;
a2 = choose_one(2);
switch(a2){
case 1 :cout<<"你退了回去,但你已经饥肠辘辘,你饿死了。"<<endl;
cout<<"游戏结束"<<endl;break;
case 2 :cout<<"你进了古庙,并没有收获。"<<endl;
cout<<"你走时看见了一块肉,你吃了,并睡了一晚。"<<endl;
cout<<"第二天......"<<endl;
cout<<"你醒了,请问你下一步要......"<<endl;
cout<<"1.随便走走"<<endl;
cout<<"2.回到岔路口"<<endl;
a3 = choose_one(2);
switch(a3){
case 1 :cout<<"你随便走了走,回到了原点。"<<endl;
cout<<"你已经饥肠辘辘了,你饿死了。"<<endl;
cout<<"游戏结束"<<endl;break;
case 2 :cout<<"你退了回去,但你已经饥肠辘辘,你饿死了。"<<endl;
cout<<"游戏结束"<<endl;break;
}break;
}break;
case 2 :cout<<"你选择了大马路"<<endl;
cout<<"你走了走,因为缺水而死。"<<endl;
cout<<"游戏结束"<<endl;break;
case 3 :cout<<"你选择了大城市"<<endl;
cout<<"你下一步要......"<<endl;
cout<<"1.成就一番事业"<<endl;
cout<<"2.平凡生活"<<endl;
a2 = choose_one(2);
switch(a2){
case 1 :cout<<"你打算入股,你要选......"<<endl;
cout<<"1.瑞和股 市值1299.99一股,十股起步"<<endl;
cout<<"2.x股 市值50.45一股,十股起步"<<endl;
a3 = choose_one(2);
switch(a3){
case 1 :cout<<"你大赚了一笔,触发了结局1......"<<endl;
cout<<"你解锁了成就“大富翁”"<<endl;break;
case 2 :cout<<"你小赚了一笔,触发了结局2......"<<endl;
cout<<"你解锁了成就“快乐一生”"<<endl;break;
}break;
case 2 :cout<<"你安乐度过了一生,触发了结局3......"<<endl;
cout<<"你解锁了成就“安乐公”"<<endl;break;
}break;
case 4 :cout<<"你回到了秘密小镇."<<endl;break;
case 5 :cout<<"你选择了乡村小路"<<endl;
cout<<"你发现了一个无人村......"<<endl;
cout<<"请静待更新!"<<endl;break;
}
system("pause");
}
void jineng(){
cout << "等待更新中....." << endl;
system("pause");
}
void start_game(){
is_pass = false;
cout << "难度:\n1.简单\n2.正常\n3.精英\n4.噩梦\n5.挑战不可能" << endl;
choose = choose_one(5);
switch(choose){
case 1:
set(2500,140,250,65,20);
break;
case 2:
set(2150,115,180,45,20);
break;
case 3:
set(1890,90,145,25,20);
break;
case 4:
set(1500,75,120,15,20);
break;
case 5:
cout << "这是非常困难的,所以要做好准备!!!" << endl;
system("pause");
system("cls");
set(700,45,75,1000,15);
break;
}
difficulty = choose;
while(true){
if(vitality <= 0){ //主角生命力小于等于0时游戏结束
cout << "你死啦!" << endl;
system("pause");
return;
}
if(energy < 10){
srand(unsigned(time(NULL)));
if(rand() % energy == 1){
cout << "你精力不足,在散步的过程中吐血身亡了。" << endl;
}
system("pause");
return;
}
if(is_pass){
cout << "恭喜通关!" << endl;
system("pause");
return;
}
cout << "你来到了一个已有1000年的小镇。周围有一条河,有一片树林,很多房子和很多人" << endl;
cout << "有一家药店和一家武器店" << endl;
cout<<"1.去武器店"<<endl;
cout<<"2.去药品店"<<endl;
cout<<"3.去打小怪物"<<endl;
cout<<"4.去打大怪物"<<endl;
cout<<"5.退出游戏"<<endl;
cout<<"6.显示你的状态"<<endl;
cout<<"7.交谈"<<endl;
cout<<"8.看广告得随机奖励"<<endl;
cout<<"9.去训练场"<<endl;
cout<<"10.学习技能"<<endl;
choose = choose_one(10);
switch(choose){
case 1:
wuqidian();
break;
case 2:
yaodian();
break;
case 3:
guaiwu1();
break;
case 4:
guaiwu2();
break;
case 5:
cout<<"欢迎下次来玩!!!!"<<endl;
system("pause");
return;
case 6:
cout<<"你的生命力:"<<vitality<<endl;
cout<<"你的攻击力:"<<aggressivity<<endl;
cout<<"你的防御力:"<<defense<<endl;
cout<<"你拥有的钱:"<<money<<endl;
cout<<"你的精力:"<<energy<<endl;
system("pause");
break;
case 7:
jiaotan();
break;
case 8:
if(difficulty > 3){
cout << "此难度不开放广告!" << endl;
system("pause");
break;
}
link();
break;
case 9:
xunlian();
break;
case 10:
jineng();
break;
}
system("cls");
}
}
};
int main(){
Game game;
game.mainloop();
return 0;
}
|