[snake] 1.初期設定
概要
期末試験も終わり、やることもなく何をすべきか悩んでいましたが、C++の対象性を正確に知るためにc++でSnakeゲームを作ることにしました.
Snakeゲームとは?
方向キーで操作する簡単なゲーム.ヘビは食べ物(写真ではりんご)を食べ、その長さはますます大きくなります.これでずっと食べ物を食べて自分にぶつかるとゲームは終わります.
実行環境
zsh shellで操作します.c++をg++にコンパイルします.
n/a.ターゲット
対象を学ぶことを目標にしているので、段階的にプロジェクトを育成していきます.
第1段階-一般的なSnakeゲームを作成します.
第2段階-ネット通信を通じて友達のランキングを知る.
第3段階-リアルタイムで友達と競争することができます.
ファイル構成
ファイルは次のように分類されます.
-Maingame//ゲームロジックに関するものが含まれています.
-graphic//コンソールウィンドウでゲームを描画します.
-Info//データが含まれています.
思ったほど多くのファイルが分割されていません.作成するともっと書類が増えるのではないでしょうか.
Info class
Info.h
#ifndef INFO_H
#define INFO_H
class Info {
private :
const int Width = 15,Height = 15;
public:
int ** data;
Info();
int getWidth();
int getHeight();
};
#endif
widthとheightは定数に設定されておらず、後でユーザーが変更できるようにしていません.いつでも機能を追加する道を開きたい.dataは本来カプセル化すべきであるが,getter処理を用いてもアドレス値を持ち去り,勝手に値を変更するのでpublicに直接削除する.その部分を考えるべきだ.c++はポインタのせいで、思ったよりカプセル化が難しいことがわかりました.
graphic class
graphic.h
#ifndef GRAPHIC_H
#define GRAPHIC_H
#include "../info/info.h"
class graphic {
private :
Info * UserData;
public:
graphic(Info * a);
void draw();
void title();
void clear();
};
#endif
ユーザーデータストレージデータ、drawペイントコンソール、clearパージコンソールウィンドウ、titleペイントタイトル.今考えてみると、なぜgraphicクラスにuserdataがあるべきか分かりません.でもポインタであちこち移動して、どうしても取り除かなければならないので、パラメータで受け入れますか?針の存在でカプセル化が完全に壊れたような気がします.maingame class
maingame.h
#ifndef MAINGAME_H
#define MAINGAME_H
#include "../info/info.h"
#include "../graphic/graphic.h"
class Maingame {
private:
graphic * window;
Info * UserInfo;
public:
Maingame();
void init();
void start();
};
#endif
ゲームロジックのクラスを管理します.私はまだあまり書いていないので、ここまで書きました.😓書類はダウンジャケットに置いてあります.Master Branchは、最終バージョンのFirst Branchにソースコードをアップロードします.
バニラショートカット
Reference
この問題について([snake] 1.初期設定), 我々は、より多くの情報をここで見つけました https://velog.io/@head022/snake-1.초기설정テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol