给学生的简单的模拟题

 环境WIN7 64

 工具VS 2008

////

#include "stdafx.h"


#include<iostream>

using namespace std;

//装备模板
struct FireOlt
{
    //装备名称
    char name[20];
    //装备防御值
    int lrpt;
    

};




//角色模板
struct RoleTemplate
{
    //人物名称
    char name[20];

    //人物攻击力
    int attp;

    //占位符
    char pex;
    struct FireOlt filt;

};


//创建人物最大数量
const unsigned short int  MAX_ROLE_COUNT = 2;

//定义全局人物列表
struct RoleTemplate roleList[2];



//保存当前人物列表个数
static int roleListCount = sizeof(roleList)/sizeof(RoleTemplate);

//保存实际占位个数
static int roleListPexCount = 0;

//显示游戏人物
void pRole();
//创建游戏人物
void CreateRole();



int main()
{

    system("cls");   
    char param;
    
    
    cout<<"----------------------------主菜单-------------------------"<<endl;
    cout<<"--------------功能:C创建人物,P打印人物列表--------------"<<endl;
    while(cin>>param)
    {
        
        if (param=='c')
        {
    
            CreateRole();

        }else if (param=='p')
        {
            pRole();
        }

    }





}


void pRole()
{

    system("cls"); 

    cout<<"----------------------------人物列表-------------------------"<<endl;
    cout<<"--------------------------R返回主菜单 C创建人物------------------------"<<endl;
    char t;
    for(int i=0;i<roleListCount;i++)
    {
        if (roleList[i].pex == 'x')
        {
            cout<<"人物名称:"<<roleList[i].name<<" "<<"攻击力:"<<roleList[i].attp<<endl;
        }
    }


    while(cin>>t)
    {

        if (t=='c')
        {

            CreateRole();

        }else if (t=='r')
        {
            main();
        }

    }



}




void CreateRole()
{


    system("cls");   
    //最大数检查
    if ( roleListPexCount >= MAX_ROLE_COUNT)
    {
        cout<<"人物已达到创建最大数,R键返回主菜单"<<endl;
        char t;
        while(cin>>t)
        {
            if (t=='r')
            {


                main();
            }
        }
    }




    cout<<"开始创建人物"<<endl;
    cout<<"格式:人物名 攻击力"<<endl;


    
    
    //遍历整个结构体数组,找出没有被占位的数组,这是笨方法,以后可以看看二分算法 
    for(int i=0;i<roleListCount;i++)
    {
        if (roleList[i].pex != 'x')
        {
            cin>>roleList[i].name>>roleList[i].attp;
            roleList[i].pex = 'x';

            //更新实际占位数
            roleListPexCount = roleListPexCount + 1;

            //任意找到一个没有被占位的马上退出循环
            //注意这里使用break并非使用continue (break退出整体循环,continue退出当前循环并进入下一个循环)
            break;
        }
    }


    cout<<"继续创建按C,退出创建按R"<<endl;

    char t;
    while(cin>>t)
    {
        if (t=='c')
        {
            CreateRole();
        }else
        {
            main();
        }
    }



}

 

 

posted @ 2013-05-24 23:28  方东信  阅读(304)  评论(0编辑  收藏  举报