C++プロジェクト実戦-ミニゲーム-連視(CUI)

5158 ワード

概要
最近、ビジュアル化プログラムの設計を学んでいますが、選択したプロジェクトは小さなゲームをすることです.連続して見て、本編は主にこのゲームのコンソールウィンドウの実現過程を整理します.
プログラムフレームワーク
main.cpp	//       

gamedata.h	//      
gamedata.cpp

gameview.h	//      
gameview.cpp

gamerule.h	//      
gamerule.cpp

実装プロセスが簡単なため、最終コードのみが貼られています
main.cpp
#include 
#include 

#include "gamedata.h"
#include "gameview.h"
#include "gamerule.h"

using namespace std;

int main(int argc, char *argv[])
{
    //      
    GameData data;
    data.initData();
    
    //   
    int x1,y1,x2,y2;
    while(true)
    {
        //      
        GameView view;
        view.display();
        //      
        for(int j=0; j>x1>>y1>>x2>>y2;
        //      ,    ,    
        GameRule rule;
        if( rule.canClear(x1,y1,x2,y2) )
        {
            gameData[y1][x1] = 0;
            gameData[y2][x2] = 0;    
        }
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}

gameview.h
class GameView
{
public:

    /***************************************************************
    *   :displayTitle 
    *    :       
    *    :  
    *   : 
    ****************************************************************/
    void displayTitle();
       
    /***************************************************************
    *   :display 
    *    :       
    *    :  
    *   : 
    ****************************************************************/
    void display();   
};

gameview.cpp
#include "gameview.h"

#include 

#include "gamedata.h"

using namespace std;

void GameView::displayTitle()
{
     cout<

gamedata.h
const int ROW = 4;      //        
const int COL = 4;      //        
extern int gameData[ROW][COL];

class GameData
{      
public:
    /***************************************************************
    *   :initData 
    *    :       ,    。        ,     
    *    :  
    *   : 
    ****************************************************************/
    void initData();
};

gamedata.cpp
#include "gamedata.h"

#include 
#include 

int gameData[ROW][COL];

void GameData::initData()
{   
   //      
   int number = 0;
   for(int i=0; i

gamerule.h
class GameRule
{
private:
    /***************************************************************
    *   :connect0 
    *    :                    
    *    :int x1 -          
    *        int y1 -         
    *        int x2 -         
    *        int y2 -         
    *   :         ,  true;    false 
    ****************************************************************/
    bool connect0(int x1, int y1, int x2, int y2);

    /***************************************************************
    *   :connect1 
    *    :                    
    *    :int x1 -          
    *        int y1 -         
    *        int x2 -         
    *        int y2 -         
    *   :         ,  true;    false 
    ****************************************************************/
    bool connect1(int x1, int y1, int x2, int y2);


public:
    /***************************************************************
    *   :canClear 
    *    :                 
    *    :int x1 -          
    *        int y1 -         
    *        int x2 -         
    *        int y2 -         
    *   :     ,  true;    false 
    ****************************************************************/
    bool canClear(int x1, int y1, int x2, int y2);
};

gamerule.cpp
#include "gamerule.h"
#include "gamedata.h"

bool GameRule::canClear(int x1, int y1, int x2, int y2)
{
    //           ,   
    if( x1 == x2 && y1 == y2 )
    {
        return false;
    }
     
    //         ,   
    if(gameData[y1][x1]!=gameData[y2][x2])
    {
        return false;
    }
     
    //          
    if( connect0(x1,y1,x2,y2) )
    {
        return true;
    }
    
    //          
    if( connect1(x1,y1,x2,y2) )
    {
        return true;
    } 
    
    return false;
}  
    
bool GameRule::connect0(int x1, int y1, int x2, int y2)
{
    //      
    if(y1 == y2)
    {
        int y = y1;
        //            ,  
        int sum = 0;
        //  x1    x2
        if(x1>x2)
        {
            int temp = x1;
            x1 = x2;
            x2 = temp;        
        } 
        for(int x=x1+1; xy2)
        {
            int temp = y1;
            y1 = y2;
            y2 = temp;        
        } 
        for(int y=y1+1; y

転載先:https://www.cnblogs.com/tryitboy/p/4231156.html