C++写养成类游戏

小公举养成记

游戏界面如下图
星座是函数内部计算得来的
C++写养成类游戏_第1张图片
C++写养成类游戏_第2张图片
C++写养成类游戏_第3张图片
这个游戏和我上次写游戏《笑傲江湖之鸿蒙》相似,不过代码量更少,而且是用C++语言写的,
当然凭我现在的水平也只能写这种人物动作全靠文字描述的游戏,虽然不难,但也挺经典

代码如下:

main.cpp文件

#include 
#include 
#include 
#include 
#include 
#include          //导入声音头文件
#pragma comment(lib,"Winmm.lib")

#include "XGG.h"
#define left 20

using namespace std;
const string heng="--------------------------------------------------";   //宏定义
int * my_attribute;     //定义指向女儿属性指针
//界面设计
void show()
{

    set_color(2,0);
    set_position(left,0);
    cout <>fathername;
    set_position(left+2,4);
    cout <<"请输入女儿姓名:";
    cin >>daughtername;
    set_position(left+2,5);
    cout <<"请输入女儿出生日期(几月几日):";
    set_position(left+34,5);
    cout <<"月";
    set_position(left+38,5);
    cout <<"日";
    set_position(left+32,5);
    cin >>birth_month;
    set_position(left+36,5);
    cin >>birth_day;
    //当获取到出生日期后,打印星座
    set_position(left+2,6);
    string my_constell;
    my_constell=constell[birth_month-1][birth_day/constell_day[birth_month-1]];
    cout <<"星座:" <>blood;
    bloods(blood);
    //清空界面一
    cclear(left+1,3,8);
    //开场描述
    set_position(left+5,3);
    cout <<"1852年的"<>operation;
            switch(operation)
            {
                case 1:
                    {
                        //显示女儿各种信息
                        cclear(left+1,12,7);
                        set_position(left+2,12);
                        cout <<"姓名:"<>operation2;
                        if(operation2==1)
                        {
                            set_position(left+2,17);
                            cout <<"上课什么的最无聊了,毕竟我是个学霸,不用学也会!";

                            srand((unsigned)time(NULL));
                            m=rand()%8;
                            my_attribute[m]+=m;
                            my_attribute[m-1]+=m-1;
                            my_attribute[m+1]+=m+1;
                            set_position(left+2,18);
                            cout <=10000)
    {
        cout <<"在不断努力下,小女孩成为了让所有人敬佩的女王!";
    }
    if(sum>=8000&&sum<10000)
    {
        cout <<"小女孩嫁给了王子,收获了爱情,成为了王妃!";
    }
    if(sum>=5000&&sum<8000)
    {
        cout <<"小女孩凭借武艺,当上了皇室的女将军,风光无限!";
    }
    if(sum>=3000&&sum<5000)
    {
        srand((unsigned)time(NULL));
        m=rand()%4;
        if(m==0)
        {
            cout <<"小女孩成为了皇家学院的院长!教书育人!";
        }
        if(m==1)
        {
            cout <<"小女孩深的皇室喜爱,被封为异性公主!";
        }
        if(m==2)
        {
            cout <<"近卫团长官聘请小女孩担任团长!";
        }
        if(m==3)
        {
            cout <<"小女孩智慧过人,经商有成,成为了皇城有名的富豪!";
        }
        if(m==4)
        {
            cout <<"小女孩被决定当个悬壶济世的医生!救人无数!";
        }


    }
    if(sum<3000)
    {
        srand((unsigned)time(NULL));
        m=rand()%4;
        if(m==0)
        {
            cout <<"小女孩资质平平,最后还是个平民!";
        }
        if(m==1)
        {
            cout <<"小女孩发挥自己的长处,加入了狩猎小队!入山打猎!";
        }
        if(m==2)
        {
            cout <<"小女孩文笔不错,最后选择了成为一名作家!";
        }
        if(m==3)
        {
            cout <<"小女孩苦于经济,只好在酒吧当了个女郎!";
        }
        if(m==4)
        {
            cout <<"小女孩信仰上帝,选择去了修女院进修!";
        }



    }
    set_position(left,20);
    cout <<"游戏结束!"<

GXX.h文件

#ifndef XGG_H_INCLUDED
#define XGG_H_INCLUDED



#include 




//改变控制台颜色(前景色、背景色)
//0-黑色,1-蓝色,2-绿色,3-浅绿色,4-红色,5-紫色,6-黄色,7-白色,8-灰色,9-淡蓝色,
//10-淡绿色,11-淡浅绿色,12-淡红色,13-淡紫色,14-淡黄色,15-亮白色
void set_color(int upcolor,int backcolor);
//设置光标位置
void set_position(int x,int y);
//清屏函数
void cclear(int x,int y,int hang);



void set_color(int upcolor,int backcolor)
{
        HANDLE winHandle;   //句柄
        winHandle=GetStdHandle(STD_OUTPUT_HANDLE);  //将控制台窗口赋值给定义的句柄
        //设置文字颜色
        SetConsoleTextAttribute(winHandle,upcolor+backcolor*0x10);//设置控制台文本属性
}

void set_position(int x,int y)
{
        HANDLE winHandle;   //句柄
        COORD pos={x,y};        //定义一个位置
        winHandle=GetStdHandle(STD_OUTPUT_HANDLE);  //将控制台窗口赋值给定义的句柄
        SetConsoleCursorPosition(winHandle,pos);         //设置光标位置
}
void cclear(int x,int y,int row)
{
    int i,j;

    for(i=0;i

在这个项目中没有像前一个游戏一样大量是用自定义函数,而是将很多功能都在main函数里写,总的来说层次还是很清晰的

一些数据我都是参考这张图片,当然很多内容也有自家的想法

C++写养成类游戏_第4张图片

** 背景音乐实现**

头文件

#include          //导入声音头文件
#pragma comment(lib,"Winmm.lib")

main函数里

 PlaySound("wen.wav",NULL, SND_FILENAME | SND_ASYNC|SND_LOOP);       //背景音乐循环播放

这些源代码里都有,这里只是挑出来细讲

注意:

如果使用code:block软件写的话,还需要自己链接库

C++写养成类游戏_第5张图片
C++写养成类游戏_第6张图片
文件具体位置如下:

C:\Program Files (x86)\CodeBlocks\MinGW\lib\libwinmm.a

谢谢大家
如果哪里有错误和不足,可以告诉我,一起学习,一起进步!

你可能感兴趣的:(C/C++游戏开发)