C++プロジェクト実戦-ミニゲーム-連視(CUI)
5158 ワード
概要
最近、ビジュアル化プログラムの設計を学んでいますが、選択したプロジェクトは小さなゲームをすることです.連続して見て、本編は主にこのゲームのコンソールウィンドウの実現過程を整理します.
プログラムフレームワーク
実装プロセスが簡単なため、最終コードのみが貼られています
main.cpp
gameview.h
gameview.cpp
gamedata.h
gamedata.cpp
gamerule.h
gamerule.cpp
転載先:https://www.cnblogs.com/tryitboy/p/4231156.html
最近、ビジュアル化プログラムの設計を学んでいますが、選択したプロジェクトは小さなゲームをすることです.連続して見て、本編は主にこのゲームのコンソールウィンドウの実現過程を整理します.
プログラムフレームワーク
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