この5年間ほど入門レベルのプログラミングばっかりやってきた私ですが、最近になってプログラミングに対する
意欲が再燃してきて、ちょっとずつではありますが、プログラミングらしいプログラミング(?)をするようになりました。
具体的にいうと機能ごとに分けて独立した(なんちゃって)管理ができるようになってからです。
ただ思いついた処理を描くだけでなくて、ある程度枠組みみたいなのを作って、俗に設計といわれるモノをしたからでしょうかねぇ
まぁまだpureCで書いてる(つもり)ので、オブジェクト指向とは程遠い位置にあるモノなんでしょうけども...
こういうことを小さい頃からできる人って凄いですよねぇ、尊敬します。
► スポイラーを表示
Main.cpp
BMPmgr.h
BMPmgr.cpp
#include "DxLib.h"
#include "BMPMgr.h" //マネージャーのインクルード
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
ChangeWindowMode(TRUE), SetDrawScreen(DX_SCREEN_BACK), DxLib_Init();
BMPMgr_Load(); //読み込みさせて
BMPMgr_Convert(); //変換させて
BMPMgr_Draw(); //描画
printfDx("何かキーを押すと終了します。");
WaitKey();
DxLib_End();
return 0;
}
BMPmgr.h
//多重インクルード防止
#ifndef DEF_BMPMGR_H
#define DEF_BMPMGR_H
bool BMPMgr_Load();
bool BMPMgr_Write();
void BMPMgr_Convert();
void BMPMgr_Draw();
void BMPMgr_Encode();
void BMPMgr_Decode();
#endif
BMPmgr.cpp
/*
BMPの手動なロード及び二値化、圧縮
解凍、表示を行うモジュール(?)
Hiragi */
#include "DxLib.h"
#include "BMP.h"
//描画するオブジェクトの量
static const int NUM = 1;
//画像サイズ分の量のデータ確保
unsigned char data[TOTAL];
//オブジェクト分のイメージ情報を確保
img_t img[NUM];
//ロードさせる
bool BMPMgr_Load()
{
for (int i = 0; i = 0; y--)
{
//x方向へのロード
for (x = 0; x pixel[x][y].color[c] = data[t]; //ヘッダ以降のデータを実際に代入
t++; //次のデータにイクリメント(unsigned char分足す)
}
//ついでに二値化も行ってしまう
if (img->pixel[x][y].color[0] + img->pixel[x][y].color[1] + img->pixel[x][y].color[2] / 3 > BMP_BLACKORWHITE)
img->bin_pixel[x][y] = true;
else
img->bin_pixel[x][y] = false;
}
}
}
//描画
void BMP_Draw(img_t *img,int MODE)
{
int x, y;
//y方向へ描画
for (y = BMP_HEIGHT - 1; y >= 0; y--)
{
//x方向へ描画
for (x = 0; x pixel[x][y].color[2], img->pixel[x][y].color[1], img->pixel[x][y].color[0]));
break;
case GLAY:
DrawPixel(x, y, GetColor(img->pixel[x][y].color[0], img->pixel[x][y].color[0], img->pixel[x][y].color[0]));
break;
case MONO:
//白か?黒か?
if (img->bin_pixel[x][y])
DrawPixel(x, y, white); //白く描画
else //そうでなければ
DrawPixel(x, y, black); //黒く描画
break;
}
}
}
}
//未実装でーす
void BMP_Encode(img_t *img)
{
int x, y;
for (y = BMP_HEIGHT - 1; y >= 0; y--)
{
for (x = 0; x < BMP_WIDTH; x++)
{
//ココに圧縮する処理を書く?(たぶんzipと同じ方式にするか? 0 or 1)
}
}
}
//未実装でーす
void BMP_Decode()
{
//デコードの処理
}