初めまして、虹風 虹奈と申します。
「14歳からはじめる C言語 わくわくゲームプログラミング」
を用いて、STGを作成しているのですが、
自キャラの弾が表示されなくなってしまいました。
プログラムを打った日には、ちゃんと表示されていたのですが、
次の日もう一度実行してみると表示されなくなってしまいました。
弾の画像を自キャラの画像など、他の画像に差し替えてみたところ、
ちゃんと表示させることができました。
ですが、弾の画像だけは表示されません。
ファイル名は間違っていません。
もう一度その画像を保存しなおしたり、
ファイル名を変えたりしてみましたが、変化はありませんでした。
ソースコードは、
#include "DxLib.h"
//構造体の宣言
struct CharaData{
//左上座標
int x;
int y;
//画像ハンドル
int ghandle;
//ライフ
int life;
};
//プロトタイプ宣言
void JitamaMove();
//グローバル変数
struct CharaData jikidata;
struct CharaData jitama[3];
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
ChangeWindowMode(TRUE); //ウィンドウモードで起動
if(DxLib_Init() == -1) return(-1); //DXライブラリ初期化
//透過色を指定
SetTransColor(126, 102, 144);
//自キャラ画像の読み込み
jikidata.ghandle = LoadGraph(".\\img\\dot_hiu-001.png");
jikidata.x=0;
jikidata.y=0;
//透過色を指定
SetTransColor(126, 102, 144);
//自弾画像の読み込み
int g = LoadGraph(".\\img\\shot_hiu-2-01.png");
for(int i=0; i<3; i=i+1) jitama[i].ghandle = g;
//キー入力チェック・プロセスメッセージ
while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){
//消去
ClsDrawScreen();
//色箱
DrawBox(270,190,370,290, GetColor(255,0,0), TRUE);
//自キャラ移動
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if(key & PAD_INPUT_UP) jikidata.y=jikidata.y-4;
if(key & PAD_INPUT_DOWN) jikidata.y=jikidata.y+4;
if(key & PAD_INPUT_LEFT) jikidata.x=jikidata.x-4;
if(key & PAD_INPUT_RIGHT) jikidata.x=jikidata.x+4;
//画像表示
DrawGraph(jikidata.x, jikidata.y, jikidata.ghandle, TRUE);
JitamaMove();
//ちらつき防止
ScreenFlip();
}
DxLib_End(); //DXライブラリ初期化
return(0); //終了
}
//自弾
void JitamaMove(){
//弾の発射
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if( key & PAD_INPUT_A ){
for(int i=0; i<3; i=i+1){
if( jitama[i].life == 0){
jitama[i].life = 1;
jitama[i].x = jikidata.x+120;
jitama[i].y = jikidata.y+40;
break;
}
}
}
//弾の移動
for(int i=0; i<3; i=i+1){
if( jitama[i].life > 0 ){
jitama[i].x = jitama[i].x + 10;
DrawGraph( jitama[i].x, jitama[i].y, jitama[i].ghandle, TRUE);
//画面外に出たときの処理
if( jitama[i].x > 640 ) jitama[i].life = 0;
}
}
}
です。
原因の分かる方が居ましたら、どうかご教授お願いします。