いつもお世話になっております。今、C言語について勉強中です。困ったことに26節の「シューティング基本。」をサンプル通りにやってみたのですが、エラーメッセージは無いのですが画面が真っ暗なんですが、
どうしたらいいのですか?
OS;WindowsXP SP3
です。どうかご指導お願いします!!
C言語~ゲームプログラミングの館~について
Re:C言語~ゲームプログラミングの館~について
多分画像の保存場所がおかしいのではないでしょうか?
画像を使っている他の章のプログラムならうまくいきますか?
まず、1章は済んでいますか?
画像を使っている他の章のプログラムならうまくいきますか?
まず、1章は済んでいますか?
Re:C言語~ゲームプログラミングの館~について
いえ、キャラクター移動等はちゃんとできるのですが、何故か26節からできなくなってしまいました。
保存位置もしっかりとできているのですが、どうしたらいいのでしょうか?
保存位置もしっかりとできているのですが、どうしたらいいのでしょうか?
Re:C言語~ゲームプログラミングの館~について
うむむ・・そんなはずは・・。
では
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウィンドウモードに変更
if( DxLib_Init() == -1 ) return -1 ; // DXライブラリ初期化処理
SetDrawScreen( DX_SCREEN_BACK ) ; // 描画先を裏画面に設定
int i ;
for( i = 0 ; i < 300 ; i ++ )
{
ClearDrawScreen(); // 裏画面のデータを全て削除
LoadGraphScreen( i, 0, "char.png" , TRUE ) ; //裏画面へ画像を描写
ScreenFlip() ; // 裏画面データを表画面へ反映
}
WaitKey(); // 何かキー入力があるまで待つ
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
これと
#include "DxLib.h"
struct shot{
int x,y;
int flag;
};
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; //DXライブラリ初期化 エラーが起きたら終了
int image[16],i,counter=0; //counter=発射してからのカウントをする変数。
char Key[256];
struct shot tama[10]; //tamaを10個作る。
for(i=0;i<10;i++){ //初期化処理
tama.x=640/2; tama.y=480; //座標代入
tama.flag=0; //飛んでいない事を示すフラグ=0
}
SetDrawScreen( DX_SCREEN_BACK ) ;//描画先を裏画面に設定
LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , image ) ;//画像を分割してimage配列に保存
while(1){
ClearDrawScreen(); //裏画面のデータを全て削除
GetHitKeyStateAll( Key ) ; // すべてのキーの状態を得る
if( ProcessMessage() == -1 ) break ; //異常がおきたら終了
if(counter<5) //前にエンターを押してから5カウント未満なら
counter++; //カウントアップ
else if( Key[ KEY_INPUT_RETURN ] == 1 ){//5カウント以上たっていたら
counter=0; //カウンターを戻す
for(i=0;i<10;i++){
if(tama.flag==0){ //発射していない玉を探し、
tama.flag=1; //発射フラグを立てる
break;
}
}
}
for(i=0;i<10;i++){
if(tama.flag==1){ //発射している玉なら
tama.y-=8; //座標を8減らす
DrawGraph( tama.x , tama.y , image[1] , TRUE );//玉を描画
if(tama.y < -32){ //もし画面外まで来たら
tama[i].y=480; //初期値に戻し、
tama[i].flag=0; //発射フラグを戻す
}
}
}
if( Key[ KEY_INPUT_ESCAPE ] == 1 ) break;//Escボタンが押されたらブレイク
ScreenFlip() ;//裏画面データを表画面へ反映
}
DxLib_End() ;// DXライブラリ使用の終了処理
return 0 ;// ソフトの終了
}
これ、両方画像が表示されることを確認してみてください。
では
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウィンドウモードに変更
if( DxLib_Init() == -1 ) return -1 ; // DXライブラリ初期化処理
SetDrawScreen( DX_SCREEN_BACK ) ; // 描画先を裏画面に設定
int i ;
for( i = 0 ; i < 300 ; i ++ )
{
ClearDrawScreen(); // 裏画面のデータを全て削除
LoadGraphScreen( i, 0, "char.png" , TRUE ) ; //裏画面へ画像を描写
ScreenFlip() ; // 裏画面データを表画面へ反映
}
WaitKey(); // 何かキー入力があるまで待つ
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
これと
#include "DxLib.h"
struct shot{
int x,y;
int flag;
};
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; //DXライブラリ初期化 エラーが起きたら終了
int image[16],i,counter=0; //counter=発射してからのカウントをする変数。
char Key[256];
struct shot tama[10]; //tamaを10個作る。
for(i=0;i<10;i++){ //初期化処理
tama.x=640/2; tama.y=480; //座標代入
tama.flag=0; //飛んでいない事を示すフラグ=0
}
SetDrawScreen( DX_SCREEN_BACK ) ;//描画先を裏画面に設定
LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , image ) ;//画像を分割してimage配列に保存
while(1){
ClearDrawScreen(); //裏画面のデータを全て削除
GetHitKeyStateAll( Key ) ; // すべてのキーの状態を得る
if( ProcessMessage() == -1 ) break ; //異常がおきたら終了
if(counter<5) //前にエンターを押してから5カウント未満なら
counter++; //カウントアップ
else if( Key[ KEY_INPUT_RETURN ] == 1 ){//5カウント以上たっていたら
counter=0; //カウンターを戻す
for(i=0;i<10;i++){
if(tama.flag==0){ //発射していない玉を探し、
tama.flag=1; //発射フラグを立てる
break;
}
}
}
for(i=0;i<10;i++){
if(tama.flag==1){ //発射している玉なら
tama.y-=8; //座標を8減らす
DrawGraph( tama.x , tama.y , image[1] , TRUE );//玉を描画
if(tama.y < -32){ //もし画面外まで来たら
tama[i].y=480; //初期値に戻し、
tama[i].flag=0; //発射フラグを戻す
}
}
}
if( Key[ KEY_INPUT_ESCAPE ] == 1 ) break;//Escボタンが押されたらブレイク
ScreenFlip() ;//裏画面データを表画面へ反映
}
DxLib_End() ;// DXライブラリ使用の終了処理
return 0 ;// ソフトの終了
}
これ、両方画像が表示されることを確認してみてください。
Re:C言語~ゲームプログラミングの館~について
上のサンプルプログラムでは正常に動くのですが、下のサンプルプログラムは真っ暗な画面が出るだけです。
あと、どちらのサンプルプログラムも、エラーメッセージはありませんでした。
どうしたらいいのですか?
あと、どちらのサンプルプログラムも、エラーメッセージはありませんでした。
どうしたらいいのですか?
Re:C言語~ゲームプログラミングの館~について
こんばんは。
私も、ガジェットさんと同じ現象が起こります。^^;
OS:Windows7(Pro)
DXライブラリ:Ver 3.00f
VC++2008(たぶんSP1)
私も、ガジェットさんと同じ現象が起こります。^^;
OS:Windows7(Pro)
DXライブラリ:Ver 3.00f
VC++2008(たぶんSP1)
Re:C言語~ゲームプログラミングの館~について
おかしいなぁ・・こちらでは正常に動きます。
プロジェクトごとアップしてみました。
これなら動くはずです。
これを見ながらちょっと何が違うのか見比べてみてください。
これで表示されないとなるとエンターキーの入力が取得出来ていないとしか思えません・・。
http://dixq.net/zip/StgSample.zip
ブレイクポイントなどを使ってなぜ表示されないのか調べてみてください。
プロジェクトごとアップしてみました。
これなら動くはずです。
これを見ながらちょっと何が違うのか見比べてみてください。
これで表示されないとなるとエンターキーの入力が取得出来ていないとしか思えません・・。
http://dixq.net/zip/StgSample.zip
ブレイクポイントなどを使ってなぜ表示されないのか調べてみてください。
Re:C言語~ゲームプログラミングの館~について
ああっ!?もしかして、エンターキー押して無いとか言う落ち・・・?
でした。
エンターキー押したら出ました。
相変わらず、どじ間抜けでした。失礼します。<(_ _)>
---↓編集・追記---
>相変わらず、どじ間抜けでした。
は、ガジェットさんの事では無く、私の事ですので。^^
でした。
エンターキー押したら出ました。
相変わらず、どじ間抜けでした。失礼します。<(_ _)>
---↓編集・追記---
>相変わらず、どじ間抜けでした。
は、ガジェットさんの事では無く、私の事ですので。^^

Re:C言語~ゲームプログラミングの館~について
解決したようでよかったです。
・・が、私のプロジェクトはDXライブラリのサンプルフォルダと同じなので、
違いがあるはずがないのですが・・
ガジェットさんの不具合は何だったのでしょうか?
・・が、私のプロジェクトはDXライブラリのサンプルフォルダと同じなので、
違いがあるはずがないのですが・・
ガジェットさんの不具合は何だったのでしょうか?