プログラミングを春休みの自由研究にしてみる 13日目[本編1日目]
六花です。
https://komochiduki.net/ikupro/2020/03/12/268/の続き、13日目[本編1日目]です。
シリーズリスト :
1日目 : https://komochiduki.net/ikupro/2020/03/01/234/
2日目 : https://komochiduki.net/ikupro/2020/03/03/238/
3日目 : https://komochiduki.net/ikupro/2020/03/03/245/
4日目 : https://komochiduki.net/ikupro/2020/03/04/250/
5日目 : https://komochiduki.net/ikupro/2020/03/04/253/
6日目 : https://komochiduki.net/ikupro/2020/03/09/259/
7、8、9日目 : https://komochiduki.net/ikupro/2020/03/11/263/
10、11、12日目 : https://komochiduki.net/ikupro/2020/03/12/268/
13日目[本編1日目] : https://komochiduki.net/ikupro/2020/03/13/286/
14日目[本編2日目] : https://komochiduki.net/ikupro/2020/03/15/289/
15-21日目[本編3-9日目] : https://komochiduki.net/ikupro/2020/03/21/302/
画像の作成などは最初から娘が参加していましたが、ソースコードまで任せるという意味では今日こそが本当の1日目です。
ライブラリの初期化と後始末、メインループ部分などの骨組みのみを私が作り、残りは娘に任せることにしてみました。
娘にVisual Studioをインストールしたノートパソコンを貸与し、少しずつ書かせることにしました。
最初のenum class のところはほぼ私の記述を参考に書いていますが、ひらがなを増やすなど、娘にとって読みやすいものに変わっています。
struct s_キャラクターを書く際は、ぼんやりと理解していたことがうまく形にできず、かなり詰まりました。
半泣きになりながらも私の手を変え品を変えた説明で理解を深めた娘は、構造はともかく変数名は娘好みのものになりました。
今日の分を書き終えるころには、半角と全角をしっかり把握し、自信を持って書けるようになっていました。
(本来はそういうところを丁寧にやるべきなのですが……)
真面目な娘は自分が書こうとするものに対して正しいか頻繁に訊ねてくるのですが、その段階では判断できないことが多くありました。
プログラミングは目的を達成するための手段であって、コンパイルが通って不具合がないものであれば全て正しい記述です。
すぐに答えが返ってこないことに娘は癇癪を起こしてしまいましたが、そればかりは「どのように書きたい?」とやりたいことを訊ね返すことしかできませんでした。
様々な困難を乗り越えながら、途中の所々でビルドを行い、エラーなしで正常終了するたびに笑顔いっぱいの娘でした。
#include "DxLib.h"
//==============================================
// グローバル変数や構造体、関数の宣言
//==============================================
enum class e_ブロック : int {空気,水,草,丸太,いちご};
enum class e_キャラクター :int {決まってない, マスくん, ドリル,こぐま,おやぐま,はりせんぼん,くじら};
enum class e_むき: bool {右むき=false,左むき=true};
struct s_キャラクター
{
e_キャラクター キャラクターの名前 = e_キャラクター::決まってない;
//いち
double いちx;
double いちy;
//はやさ
double はやさx;
double はやさy;
//かそくど
double かそくどx;
double かそくどy;
e_むき むき = e_むき::左むき;
};
struct s_ステージ
{
};
//==============================================
// main関数
//==============================================
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//==============================================
// DXライブラリの下準備
//==============================================
ChangeWindowMode(true); // ウインドウモードで起動
SetWindowStyleMode(7); // 7:最大化ボタンが存在するウインドウモードに変更
SetGraphMode(640, 480, 32);
SetWindowSize(640, 480); // 初期ウインドウの大きさ
SetWindowSizeChangeEnableFlag(true, true); // ウインドウサイズ変更を可能にする(縦横比変更不可)
if (DxLib_Init() == -1) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
SetTransColor(255, 255, 255);
SetUsePremulAlphaConvertLoad(true); // 画像を読み込んだ後、乗算済みアルファ画像に変換する設定を有効にする
SetDrawScreen(DX_SCREEN_BACK);//裏画面
//==============================================
// その他の下準備
//==============================================
//==============================================
// メインループ
//==============================================
while (ProcessMessage() != -1)
{
ClearDrawScreen(); // 画面を掃除する
ScreenCopy(); // 描画を反映する
}
//==============================================
// ループ終了時の処理
//==============================================
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}