C++小游戏:你是伐木工(附源码)

哈喽大家好,周末没事在家编了个C++小游戏。学过一点C++的小伙伴们都能看懂!

目录

结构:

作用:

源码

这是一个伐木工游戏的C++代码,包含了砍树、购买食物、出售木材、工具升级、存档、读档、购买生命、游戏结束等功能。

代码:

结构:

1.头文件
2.全局变量声明与初始化
3.等级转字符串函数
4.砍树函数
5.商店函数
6.公司函数
7.工具升级函数
8.购买生命函数
9.游戏结束函数
10.判断生命值和饥饿值是否符合游戏规则
11.存档函数
12.读档函数
13.游戏菜单函数
14.游戏运行函数
15.main函数

游戏中有生命值和饥饿值等限制,若生命值小于1或饥饿值大于3,游戏结束。以下是代码中各个函数的

作用:

  • lv2str(int lv):将工具等级转为字符串。
  • cuttree(int lv):砍树函数,根据工具等级计算每次砍树的数量。
  • shop():商店函数,花费10个金币买吃的,饥饿值-1。
  • comp():木材批发公司函数,卖掉木材获得金币,每棵树卖2个金币。
  • lv_up(int lv_up_coin):工具升级函数,花费lv_up_coin个金币升级工具。
  • buylive():购买生命函数,花费30个金币获得生命+1。
  • die():游戏结束函数,打印失败信息。
  • judge():判断生命值和饥饿值是否符合游戏规则,若不符合调用die()函数。
  • save():存档函数,打印存档码。
  • load():读档函数,读入存档码恢复游戏状态。
  • menu():游戏菜单函数,打印游戏各项状态和可操作选项。
  • run(int s):根据玩家输入的选项执行对应的游戏操作。
  • main():程序入口,执行游戏循环,直到玩家选择退出。

整个代码采用了函数化的编程方式,使程序逻辑更加清晰,每个函数的功能简单,内容清晰。

 

源码:

#include<bits/stdc++.h> //头文件

using namespace std;

int s,live=3,hungry=0,coin=0; //变量声明与初始化
int lv=1,lv_up_coin=5;
int treenum=0;
int t;
string t1,t2;

string lv2str(int lv) //等级转字符串函数
{
    switch(lv)
    {
        case 1:return "石头斧";break;
        case 2:return "铁斧";break;
        case 3:return "金斧";break;
        case 4:return "锯子";break;
        case 5:return "大电锯";break;
        case 6:return "大砍刀";break;
        case 7:return "巨齿轮";break;
        case 8:return "无敌超级激光箭";break;
        case 9:return "满级";break;
        default:return "错误";break; 
    }
}

void cuttree(int lv) //砍树函数
{
    system("cls"); //清屏
    cout<<"你有"<<treenum<<"棵树"<<endl;
    cout<<"你的工具:"<<lv2str(lv)<<endl;
    cout<<"每下树的数量+"<<lv<<endl;
    for(int i=0;i<=8;i++)
    {
        system("cls");
        cout<<"已砍"<<i*lv<<"棵树"<<endl;
        cout<<"输入1砍树,输入2退出";
        cin>>t;
        if(t==1)treenum+=lv;
        else break;
    }
    hungry++;
    cout<<"砍过树了,饥饿+1"<<endl;
    system("pause"); //暂停
}

void shop() //商店函数
{
    system("cls");
    if(coin<=10)cout<<"金币不够了"<<endl;
    else
    {
        coin-=10;
        hungry--;
        cout<<"已买!金币还剩:"<<coin<<endl;
    }
    system("pause");
}

void comp() //木材批发公司函数
{
    system("cls");
    cout<<"卖掉多少:"<<endl;
    cin>>t;
    if(t>treenum)cout<<"树不够!你有"<<treenum<<"棵树"<<endl;
    else
    {
        treenum-=t;
        coin+=t*2;
        cout<<"卖掉了!你还有树"<<treenum<<"棵,有"<<coin<<"个金币。"<<endl;
    }
    system("pause");
}

void lv_up(int lv_up_coin) //工具升级函数
{
    coin-=lv_up_coin;
    lv++;
    lv_up_coin+=10;
    cout<<"OK,工具升级为:"<<lv2str(lv)<<endl;
    system("pause");
}

void buylive() //购买生命函数
{
    coin-=30;
    live++;
    cout<<"OK"<<endl;
    system("pause");
}

void die() //游戏结束函数
{
    system("cls");
    system("color 4F"); //改变字体颜色
    cout<<"你 输 啦 ! ! !"<<endl<<endl;
    getchar();
}

void judge() //判断生命值和饥饿值是否符合游戏规则
{
    if(live<1)die();
    if(hungry>3)
    {
        hungry=0;
        live--;
    }
}

void save() //存档函数
{
    system("cls");
    cout<<"存档码如下:(请复制)";
    cout<<938273<<" "<<live<<" "<<hungry<<" "<<coin<<" ";
    cout<<lv<<" "<<lv_up_coin<<" ";
    cout<<treenum<<" "<<416392;
    system("pause");
    system("pause");
    system("cls");
}

void load() //读档函数
{
    system("cls");
    cout<<"请输入存档码:(空格不能少,并且前后无空格、换行)"<<endl;
    cin>>t1>>live>>hungry>>coin>>lv>>lv_up_coin>>treenum>>t2;
    cout<<"OK!"<<endl;
    system("pause");
    system("cls");
}

void menu() //游戏菜单函数
{
    system("cls");
    cout<<"C++小游戏-你是伐木工"<<endl;
    cout<<"_____________________"<<endl;
    cout<<"1.去砍树赚钱"<<endl;
    cout<<"2.去商店10个金币买吃的(饥饿值-1)"<<endl;
    cout<<"3.去木材批发公司(金币+)"<<endl;
    cout<<"4."<<lv_up_coin<<"个金币升级工具"<<endl;
    cout<<"5.存档"<<endl;
    cout<<"6.读档"<<endl;
    cout<<"7.退出"<<endl;
    cout<<"8.买生命值(生命+1,金币-30)"<<endl;
    cout<<"_____________________"<<endl;
    cout<<"金币:"<<coin<<endl;
    cout<<"生命值:"<<live<<"(当生命值<1时,游戏结束)"<<endl;
    cout<<"饥饿值:"<<hungry<<"(当饥饿值>3时,生命值-1)"<<endl;
    cout<<"工具:"<<lv2str(lv)<<endl;
    cout<<"请输入序号:";
}

void run(int s) //游戏运行函数
{
    if(s==1)cuttree(lv);
    else if(s==2)shop();
    else if(s==3)comp();
    else if(s==4)lv_up(lv_up_coin);
    else if(s==5)save();
    else if(s==6)load();
    else if(s==7)
    {
        system("cls");
        cout<<"感谢游玩!"<<endl;
        getchar();
    }
    else if(s==8)buylive();
    else
    {
        cout<<"不要乱输入";
        system("pause");
    }
}
int main()
{
    for(;;) //无限循环,直到玩家选择退出
    {
        menu();
        cin>>s;
        if(s==7)break;
        run(s);
        judge(); //每轮结束判断游戏状态
    }
    system("cls");
    cout<<"感谢游玩!"<<endl;
    return 0;
}

作者编写了吉利的188行代码,就差你的关注支持了!awa

———————————————————————————————————————————

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,我可以回答你的问题。以下是一个使用 switch 语句实现猜拳游戏C++ 代码: ```c++ #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { int playerChoice; int computerChoice; // 生成随机数种子 srand(time(0)); // 让玩家输入选择(1:石头,2:剪刀,3:布) cout << "请出拳(1:石头,2:剪刀,3:布):" << endl; cin >> playerChoice; // 生成计算机的选择(1-石头,2-剪刀,3-布) computerChoice = rand() % 3 + 1; // 根据玩家和计算机的选择确定胜负 switch (playerChoice) { case 1: // 玩家出石头 if (computerChoice == 1) { cout << "平局!" << endl; } else if (computerChoice == 2) { cout << "你赢了!" << endl; } else { cout << "你输了!" << endl; } break; case 2: // 玩家出剪刀 if (computerChoice == 1) { cout << "你输了!" << endl; } else if (computerChoice == 2) { cout << "平局!" << endl; } else { cout << "你赢了!" << endl; } break; case 3: // 玩家出布 if (computerChoice == 1) { cout << "你赢了!" << endl; } else if (computerChoice == 2) { cout << "你输了!" << endl; } else { cout << "平局!" << endl; } break; default: cout << "选择无效!" << endl; break; } return 0; } ``` 这段代码首先让玩家输入选择(1:石头,2:剪刀,3:布),然后生成计算机的选择。接着使用 switch 语句判断玩家和计算机的选择,输出对应的胜负结果。注意,这里使用了 srand 函数来生成随机数种子,以保证每次运行程序生成的随机数不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值