画像オブジェクトの変数の隠蔽 ソースコードにして、ほんの40行だった しかし、これを組み込めば、画像のロード処理を完全に隠蔽し、 全く書かなくてすむ これは画像オブジェクトをロード・生成する関数だ Create( "img" , x , y ); その中身は、 Create( char*file , int x , int y) { static char FILE[ 1024 ][ 256 ]; ↑こいつにどんどんfileを追加してゆく!! static 画像OBJ [ 1024 ]; static int N;//画像オブジェクトの数 if もしも、FILE[]の中にfileがあったら 生成のみを行う if もしも、FILE[]の中にfileがなかったら 画像をロードしてから生成を行う そして、FILEにfileを追加し、Nを一つカウントする たったこれだけである } しかしたったのこれだけで、こういう事ができるようになる 先のplayer関数だ player(){ Create( "shot.bmp" , x, y, speed, angle , shot_func); ここで生成 & ロードが出来るという事だ } 何? メインループ中に画像のロードなんてしたくない それならば、 プログラムの起動時に -500という 画面の外を指定する事によって、 生成した次のフレームに消去される Create( "shot.bmp" , -500, -500); Create( "teki.bmp" , -500, -500); Create( "player.bmp" , -500, -500); こんな風にやっておけば、 メインループ中に画像のロードはされる事がなく Createは、ただの生成関数の役割をする事になる Create関数の中には、FILE[]の中に画像パスが保存され 画像OBJの中には、しっかりと残っているのである コードにして、たったの40行 これは ロード関数 と 生成関数 の結合だ これをオブジェクトの生成ではなく、 ロード関数 と 描画関数 を結合すれば、 このような擬似コードを、本当に実装する事ができるようになる mainloop(){ for(;;) { haikei(); tokutengazou(); player(); teki(); } } //例:背景 void haikei(){ Load_to_Draw("haikei.bmp" , 0, 0); } 先にも書いたが、はじめに全てをロードしたいのなら mainloop(){ Load_to_Draw("haikei.bmp" , 0, 0); //ここに 全く同じ記述をするだけだ for(;;) { haikei(); tokutengazou(); player(); teki(); } } これで、メインループに入る前に、ロードされる この仕組みを使う上である、誰かがやりそうな失敗は、 "haikei.bmp" をdefineにしてしまう事、 それでは、この仕組みの良さを半分を使えない事になる 動的に中身を書き換えられる char[]にしとけ!!!クズどもが!