一个简易二维Minecraft——MBC

本文介绍了一个使用C++编程实现的简易二维Minecraft游戏,通过阅读代码和理解少量注释,读者可以了解游戏的基本构建过程。

具体思路详见代码,注释较少请自行理解
84KB

#include<iostream>
#include<cstdio>
#include<windows.h>
#include<time.h>
#include<winuser.h>
#include<string>
#define die; player.reboth();map.reborn();goto out;
#define end_of_make; cout<<"继续合成请按1,退出请按2"<<endl;while(true){if(KEY_DOWN('1'))goto make;if(KEY_DOWN('2'))goto out;Sleep(100);}
#define enter cout<<endl
#define wait Sleep(1000);system("pause");cout<<endl
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
const int mapsize=25;
using namespace std;
void sprint(string s){
   
   
    for(int i=0;i<s.size();i++){
   
   
        cout<<s[i];
        Sleep(50);
    }
}
void cprintf(char* str, int color){
   
   
    HANDLE h=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(h,color);
    cout<<str;
    h=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(h,7);
    /*
    蓝色字体:1
    绿色字体:2
    红色字体:4
    前景色高亮显示:8
    蓝色背景:16
    绿色背景:32
    红色背景:64
    背景色高亮显示:128
    (加起来)
    */
}
class Bag{
   
   
    private://变量
        int level;
        int wood,stone,cor,iron,irons,gold,golds,wire,hiron,dim,gem,apple,fish,goldapple,ex;
        //  木头 石头  煤   铁   铁矿  金   金矿 铜   钢  钻石 宝石 苹果  鱼  金苹果
        int levelsword,levelbow,levelpickaxe,levelaxe,levelarm;
        int abilitysword,abilitybow,abilitypickaxe,abilityaxe,abilityarm;
    public:
        void print(void){
   
   
            cout<<"背包容量为:"<<level<<endl;
            cout<<"木头:"<<wood<<endl;
            cout<<"石头:"<<stone<<endl;
            cout<<"煤炭:"<<cor<<endl;
            cout<<"铁:"<<iron<<endl;
            cout<<"铁矿:"<<irons<<endl;
            cout<<"金:"<<gold<<endl;
            cout<<"金矿:"<<golds<<endl;
            cout<<"铜:"<<wire<<endl;
            cout<<"钢:"<<hiron<<endl;
            cout<<"钻石:"<<dim<<endl;
            cout<<"宝石:"<<gem<<endl;
            cout<<"苹果:"<<apple<<endl;
            cout<<"鱼:"<<fish<<endl;
            cout<<"金苹果:"<<goldapple<<"个"<<endl;
            cout<<"剑\t等级:"<<levelsword<<endl;
            cout<<"弓\t等级:"<<levelbow<<endl;
            cout<<"镐\t等级:"<<levelpickaxe<<endl;
            cout<<"斧头\t等级:"<<levelaxe<<endl;
            cout<<"护甲\t等级:"<<levelarm<<endl;
        }
        int getlevel(void){
   
   return level;}
        int getwood(void){
   
   return wood;}
        int getstone(void){
   
   return stone;}
        int getcor(void){
   
   return cor;}
        int getiron(void){
   
   return iron;}
        int getirons(void){
   
   return irons;}
        int getgold(void){
   
   return gold;}
        int getgolds(void){
   
   return golds;}
        int getwire(void){
   
   return wire;}
        int gethiron(void){
   
   return hiron;}
        int getdim(void){
   
   return dim;}
        int getgem(void){
   
   return gem;}
        int getapple(void){
   
   return apple;}
        int getfish(void){
   
   return fish;}
        int getgoldapple(void){
   
   return goldapple;}
        int getex(void){
   
   return ex;}
        int getlevelsword(void){
   
   return levelsword;}
        int getlevelbow(void){
   
   return levelbow;}
        int getlevelpickaxe(void){
   
   return levelpickaxe;}
        int getlevelaxe(void){
   
   return levelaxe;}
        int getlevelarm(void){
   
   return levelarm;}
        int getabilitysword(void){
   
   return abilitysword;}
        int getabilitybow(void){
   
   return abilitybow;}
        int getabilitypickaxe(void){
   
   return abilitypickaxe;}
        int getabilityaxe(void){
   
   return abilityaxe;}
        int getabilityarm(void){
   
   return abilityarm;}
        void clear(void){
   
   
            wood=0,stone=0,cor=0,iron=0,irons=0,gold=0,golds=0,wire=0;
            hiron=0,dim=0,gem=0,apple=0,fish=0,goldapple=0,ex=ex/10;
        }
        int uplevelbag(void){
   
   
            switch(level){
   
   
                case 25:
                    if(stone>=10)    stone-=10;
                    else return -2;
                    level+=20;
                    return 2;
                    break;
                case 45:
                    if(iron>=10)    iron-=10;
                    else return -2;
                    level+=40;
                    return 3;
                    break;
                case 85:
                    if(hiron>=10)    hiron-=10;
                    else return -2;
                    level+=60;
                    return 4;
                    break;
                case 145:
                    if(gem>=10)    gem-=10;
                    else return -2;
                    level+=80;
                    return 5;
                    break;
                default:
                    return -1;
            }
        }
        int uplevelsword(void){
   
   
            switch(levelsword){
   
   
                case 1:
                    if(wood>=20)    wood-=20;
                    else return -2;
                    levelsword=2;
                    abilitysword/=10;
                    return 2;
                    break;
                case 2:
                    if(stone>=15)    stone-=15;
                    else return -2;
                    levelsword=3;
                    abilitysword/=10;
                    return 3;
                    break;
                case 3:
                    if(iron>=5)    iron-=5;
                    else return -2;
                    levelsword=4;
                    abilitysword/=10;
                    return 4;
                    break;
                case 4:
                    if(dim>=3)    dim-=3;
                    else return -2;
                    levelsword=5;
                    abilitysword/=10;
                    return 5;
                    break;
                default:
                    return -1;
            }
        }
        int uplevelbow(void){
   
   
            switch(levelbow){
   
   
                case 1:
                    if(wood>=20)    wood-=20;
                    else return -2;
                    levelbow=2;
                    abilitybow/=10;
                    return 2;
                    break;
                case 2:
                    if(stone>=15)    stone-=15;
                    else return -2;
                    levelbow=3;
                    abilitybow/=10;
                    return 3;
                    break;
                case 3:
                    if(iron>=5)    iron-=5;
                    else return -2;
                    levelbow=4;
                    abilitybow/=10;
                    return 4;
                    break;
                case 4:
                    if(dim>=3)    dim-=3;
                    else return -2;
                    levelbow=5;
                    abilitybow/=10;
                    return 5;
                    break;
                default:
                    return -1;
            }
        }
        int uplevelpickaxe(void){
   
   
            switch(levelpickaxe){
   
   
                case 1:
                    if(wood>=20)    wood-=20;
                    else return -2;
                    levelpickaxe=2;
                    abilitypickaxe/=10;
                    return 2;
                    break;
                case 2:
                    if(stone>=15)    stone-=15;
                    else return -2;
                    levelpickaxe=3;
                    abilitypickaxe/=10;
                    return 3;
                    break;
                case 3:
                    if(iron>=5)    iron-=5;
                    else return -2;
                    levelpickaxe=4;
                    abilitypickaxe/=10;
                    return 4;
                    break;
                case 4:
                    if(dim>=3)    dim-=3;
                    else return -2;
                    levelpickaxe=5;
                    abilitypickaxe/=10;
                    return 5;
                    break;
                default:
                    return -1;
            }
        }
        int uplevelaxe(void){
   
   
            switch(levelaxe){
   
   
                case 1:
                    if(wood>=20)    wood-=20;
                    else return -2;
                    levelaxe=2;
                    abilityaxe/=10;
                    return 2;
                    break;
                case 2:
                    if(stone>=15)    stone-=15;
                    else return -2;
                    levelaxe=3;
                    abilityaxe/=10;
                    return 3;
                    break;
                case 3:
                    if(iron>=5)    iron-=5;
                    else return -2;
                    levelaxe=4;
                    abilityaxe/=10;
                    return 4;
                    break;
                case 4:
                    if(dim>=3)    dim-=3;
                    else return -2;
                    levelaxe=5;
                    abilityaxe/=10;
                    return 5;
                    break;
                default:
                    return -1;
            }
        }
        int uplevelarm(void){
   
   
            switch(levelarm){
   
   
                case 1:
                    if(wood>=20)    wood-=20;
                    else return -2;
                    levelarm=2;
                    abilityarm/=10;
                    return 2;
                    break;
                case 2:
                    if(stone>=15)    stone-=15;
                    else return -2;
                    levelarm=3;
                    abilityarm/=10;
                    return 3;
                    break;
                case 3:
                    if(iron>=5)    iron-=5;
                    else return -2;
                    levelarm=4;
                    abilityarm/=10;
                    return 4;
                    break;
                case 4:
                    if(dim>=3)    dim-=3;
                    else return -2;
                    levelarm=5;
                    abilityarm/=10;
                    return 5;
                    break;
                default:
                    return -1;
            }
        }
        int upabilitysword(void){
   
   
            switch(levelsword){
   
   
                case 2:
                    if(hiron>=15)    hiron-=15;
                    else return -2;
                    abilitysword=3;
                    abilitysword+=100;
                    return 3;
                    break;
                case 3:
                    if(gold>=5)    gold-=5;
                    else return -2;
                    abilitysword=4;
                    abilitysword+=100;
                    return 4;
                    break;
                case 4:
                    if(dim>=5)    dim-=5;
                    else return -2;
                    abilitysword=5;
                    abilitysword+=100;
                    return 5;
                    break;
                default:
                    return -1;
            }
        }
        int upabilitybow(void){
   
   
            switch(levelbow){
   
   
                case 2:
                    if(hiron>=30)    hiron-=30;
                    else return -2;
                    abilitybow=3;
                    abilitybow+=100;
                    return 3;
                    break;
                case 3:
                    if(gold>=10)    gold-=10;
                    else return -2;
                    abilitybow=4;
                    abilitybow+=100;
                    return 4;
                    break;
                case 4:
                    if(dim>=10)    dim-=10;
                    else return -2;
                    abilitybow=5;
                    abilitybow+=100;
                    return 5;
                    break;
                default:
                    return -1;
            }
        }
        int upabilitypickaxe(void){
   
   
            switch(levelpickaxe){
   
   
                case 2:
                    if(hiron>=15)    hiron-=15;
                    else return -2;
                    abilitypickaxe=3;
                    abilitypickaxe+=100;
                    return 3;
                    break;
                case 3:
                    if(gold>=5)    gold-=5;
                    else return -2;
                    abilitypickaxe=4;
                    abilitypickaxe+=100;
                    return 4;
                    break;
                case 4:
                    if(dim>=5)    dim-=5;
                    else return -2;
                    abilitypickaxe=5;
                    abilitypickaxe+=100;
                    return 5;
                    break;
                default:
                    return -1;
            }
        }
        int upabilityaxe(void){
   
   
            switch(levelaxe){
   
   
                case 2:
                    if(hiron>=10)    hiron-=10;
                    else return -2;
                    abilityaxe=3;
                    abilityaxe+=100;
                    return 3;
                    break;
                case 3:
                    if(gold>=5)    gold-=5;
                    else return -2;
                    abilityaxe=4;
                    abilityaxe+=100;
                    return 4;
                    break;
                case 4:
                    if(dim>=3)    dim-=3;
                    else return -2;
                    abilityaxe=5;
                    abilityaxe+=100;
                    return 5;
                    break;
                default:
                    return -1;
            }
        }
        int upabilityarm(void){
   
   
            switch(levelarm){
   
   
                case 2:
                    if(hiron>=10)    hiron-=10;
                    else return -2;
                    abilityarm=3;
                    abilityarm+=150;
                    return 3;
                    break;
                case 3:
                    if(gold>=5)    gold-=10;
                    else return -2;
                    abilityarm=4;
                    abilityarm+=150;
                    return 4;
                    break;
                case 4:
                    if(dim>=3)    dim-=5;
                    else return -2;
                    abilityarm=5;
                    abilityarm+=150;
                    return 5;
                    break;
                default:
                    return -1;
            }
        }
        bool useabilitysword(int nem){
   
   
            if(levelsword==1) return true;
            if(abilitysword>=nem){
   
   
                abilitysword-=nem;
                return true;
            }
            else
                return false;
            if(abilitysword==0&&levelsword>1)    levelsword--;
        }
        bool useabilitybow(int nem){
   
   
            if(levelbow==1) return true;
            if(abilitybow>=nem){
   
   
                abilitybow-=nem;
                return true;
            }
            else
                return false;
            if(abilitybow
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值