|
发表于 2022-2-9 21:08:05
|
显示全部楼层
- #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;
- }
复制代码 |
评分
-
查看全部评分
|