hit   今日   昨日

DXライブラリのジャンプのプログラム

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: ひよこ
[URL]
Date: 2009年1月20日(火) 20:42
No: 1
(OFFLINE)

 DXライブラリのジャンプのプログラム

DXライブラリのジャンプのプログラムでゲームプログラムの館の知識で
ソースを少し変えてみたのですが左にも右にも、ジャンプもできません。どうすればいいでしょうか。
// ジャンプ
#include "DxLib.h"
int PlayerX , PlayerY ;
int JumpPower ;
int PlayerGraph ;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) return -1;

char Key[256];
SetGraphMode( 640 , 480 , 16 ) ;
// 描画先画面を裏画面にセット
SetDrawScreen( DX_SCREEN_BACK ) ;
// グラフィックのロード
PlayerGraph = LoadGraph( "Player.bmp" ) ;

// キャラクターの初期データをセット
PlayerX = 0 ;
PlayerY = 0 ;
JumpPower = 0 ;

// ループ
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 )
{

if (Key[KEY_INPUT_A]== 1) PlayerY -= 3; // 上を押していたら上に進む
if (Key[KEY_INPUT_B]== 1) PlayerY += 3 ; // 下を押していたら下に進む
if (Key[KEY_INPUT_C]== 1) PlayerX += 3 ; // 右を押していたら右に進む
if (Key[KEY_INPUT_D]== 1) PlayerX -= 3 ; // 左を押していたら左に進む

// 落下処理
PlayerY -= JumpPower ;

// 落下加速度を加える
JumpPower -= 1 ;

// もし地面についていたら止まる
if( PlayerY > 300 )
{
PlayerY = 300 ;
JumpPower = 0 ;
}

// ジャンプボタンを押していて、地面についていたらジャンプ
if ((Key[KEY_INPUT_A]==1) && PlayerY == 300 ) JumpPower = 20 ;

// 画面を初期化する
ClearDrawScreen() ;

// プレイヤーを描画する
DrawGraph( PlayerX , PlayerY , PlayerGraph , TRUE ) ;

// 裏画面の内容を表画面に反映させる
ScreenFlip() ;
}

DxLib_End() ; // DXライブラリ使用の終了処理

return 0 ; // ソフトの終了

}

Name: BEMANI
[URL]
Date: 2009年1月20日(火) 21:25
No: 2
(OFFLINE)

 Re:DXライブラリのジャンプのプログラム

>if (Key[KEY_INPUT_A]== 1) PlayerY -= 3; // 上を押していたら上に進む

この部分を

>PlayerY -= 3; // 上を押していたら上に進む

こう変えると画像自体は動きますか?

Name: Mikan
[URL]
Date: 2009年1月20日(火) 21:56
No: 3
(OFFLINE)

 Re:DXライブラリのジャンプのプログラム

GetHitKeyStateAll関数が入っていないので、

char Key[256];

は宣言した状態のまま中身は何も変更されていません。


char Key[ 256 ] ; //キーの押下状態を格納する変数

GetHitKeyStateAll( Key ) ;  //すべてのキーの押下状態を格納


上記の処理をしたあとで、

if (Key[KEY_INPUT_A]== 1) PlayerY -= 3; // 上を押していたら上に進む

とキーが押下状態にあるかどうかを判断し、処理をさせます。


ちなみに、

CheckHitKey( KEY_INPUT_ESCAPE ) は、

そのとき指定したキーが押下状態にあるかどうかだけ調べるだけで、

Keyの中には情報を何も残しません。

詳しくはDxLib本家のリファレンスを参照ください

http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_input.html#R5N28

Name: ひよこ
[URL]
Date: 2009年1月20日(火) 22:37
No: 4
(OFFLINE)

 Re:DXライブラリのジャンプのプログラム

回答ありがとうございます。GetHitKeyStateAllを見たら忘れてたなって思いました。
プログラムがちゃんと動きました。回答してくださったBEMANIさん、Mikanさん、本当にありがとうございました。


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: FUNK & ゲスト[30人]