哈喽大家好,周末没事在家编了个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
———————————————————————————————————————————