2回押したらダッシュの仕方
Posted: 2011年11月04日(金) 00:20
アクションゲームで素早く2回押したらダッシュの仕方がわかりません教えてください。
//インクルード
#include <stdio.h>
#include "gs.h"
#include "Player.h"
//定数の定義
#define WIDTHMAX 640 //画面の縦
#define HEIGTMAX 480 //画面の横
#define Player_XSIZE 125 //プレイヤーサイズ縦
#define Player_YSIZE 125 //プレイヤーサイズ横
//オン、オフ
enum
{
OFF=0, //オフ
ON=1 //オン
};
//左右方向
enum
{
RIGHT=0, //右
LEFT=1 //左
};
//オブジェクト
typedef struct
{
int flg; //存在フラグ
int X; //x座標
int Y; //y座標
float speed; //加速度
int dir; //向き
int jump; //ジャンプしているか?
int cnt; //アニメーション カウント
}OBJ;
//グローバル変数
OBJ gPlayer; //プレイヤー
int gHitkey; //連続押しを防ぐフラグ
//絵の変数
gsTexture sPlayer; //プレイヤー
gsTexture sBG; //背景
//ゲーム前処理
//プログラム開始時に1回のみシステムから呼ばれる
void GameInit(void)
{
//絵の読み込み
gsLoadTexture( &sPlayer, "BMP/Player.bmp", 0xff000000); //プレイヤー
gsLoadTexture( &sBG, "BMP/BG.bmp", 0 );//背景
//キーの初期化
gHitkey = ON;
}
//ゲームループ処理
//毎ループごとにシステムから呼ばれる
void GameLoop(void)
{
GameMain();
//キーを離したかのチェック(エンター、Z、xの3つが対象)
if( !gsKeyCheck(VK_RETURN) &&
!gsKeyCheck ('Z'))
{
gHitkey = OFF; //キーを押したことを記憶する
}
GameDraw();
}
//ゲーム後処理
//プログラム終了時に1回のみシステムから呼ばれる
void GameTerm(void)
{
//絵の解放
gsReleaseTexture( sPlayer ); //プレイヤー
gsReleaseTexture( sBG ); //背景
}
//1プレイ初期化
void PlayInit(void)
{
//プレイヤーの初期設定
gPlayer.X = 0;
gPlayer.Y = 0;
gPlayer.dir = RIGHT;
gPlayer.jump = OFF;
}
void GameMain()
{
PlayerMove(); //プレイヤー移動
}
void GameDraw(void)
{
int y;
//背景表示
gsDraw2D( sBG,0,0 );
//プレイヤーを表示
gsDraw2D( sPlayer,gPlayer.X,gPlayer.Y );
//向きによりyを決定
if(gPlayer.dir == RIGHT) y=0;
else y=1;
}
//プレイヤー移動
void PlayerMove(void)
{
int dashrightflag = 0;
int dashrighttime = 0;
if (gsKeyState(VK_RIGHT) == GSKS_DOWN )
{
if(dashrighttime >= 0)
{
dashrightflag=1;
dashrighttime--;
}
dashrighttime=30;//0.5sec
}
//右へ移動
if ( gsKeyCheck(VK_RIGHT))
{
if(dashrightflag==1)
{
gPlayer.X+=8;
}else{
gPlayer.X+=4;
}
dashrighttime--;
}
//左へ移動
if( gsKeyCheck(VK_LEFT))
{
gPlayer.X -= 4; //移動
}
//右はみ出し処理
if ( gPlayer.X > 540 )
{
gPlayer.X = 540;
}
// 左はみ出し処理
if ( gPlayer.X < -40 )
{
gPlayer.X = -40;
}
//ジャンプ処理
//ジャンプ中
if(gPlayer.jump == ON)
{
gPlayer.Y += gPlayer.speed;
gPlayer.speed += 0.5;
}
//ジャンプ開始
else
{
//前回、キーが押されていなければ
if ( gHitkey == OFF )
{
//Zキーを押したら
if( gsKeyCheck('Z'))
{
gHitkey = ON; //キーを押したことを記憶する
gPlayer.jump = ON; //ジャンプ中にする
gPlayer.speed = -10; //加速度を設定
}
}
}
//ジャンプ終了
if ( gPlayer.Y > 0 ) //基本位置より下に落ちたら
{
gPlayer.Y =0; //基本位置に戻す
gPlayer.jump = OFF; //ジャンプ終了する
}
}
//インクルード
#include <stdio.h>
#include "gs.h"
#include "Player.h"
//定数の定義
#define WIDTHMAX 640 //画面の縦
#define HEIGTMAX 480 //画面の横
#define Player_XSIZE 125 //プレイヤーサイズ縦
#define Player_YSIZE 125 //プレイヤーサイズ横
//オン、オフ
enum
{
OFF=0, //オフ
ON=1 //オン
};
//左右方向
enum
{
RIGHT=0, //右
LEFT=1 //左
};
//オブジェクト
typedef struct
{
int flg; //存在フラグ
int X; //x座標
int Y; //y座標
float speed; //加速度
int dir; //向き
int jump; //ジャンプしているか?
int cnt; //アニメーション カウント
}OBJ;
//グローバル変数
OBJ gPlayer; //プレイヤー
int gHitkey; //連続押しを防ぐフラグ
//絵の変数
gsTexture sPlayer; //プレイヤー
gsTexture sBG; //背景
//ゲーム前処理
//プログラム開始時に1回のみシステムから呼ばれる
void GameInit(void)
{
//絵の読み込み
gsLoadTexture( &sPlayer, "BMP/Player.bmp", 0xff000000); //プレイヤー
gsLoadTexture( &sBG, "BMP/BG.bmp", 0 );//背景
//キーの初期化
gHitkey = ON;
}
//ゲームループ処理
//毎ループごとにシステムから呼ばれる
void GameLoop(void)
{
GameMain();
//キーを離したかのチェック(エンター、Z、xの3つが対象)
if( !gsKeyCheck(VK_RETURN) &&
!gsKeyCheck ('Z'))
{
gHitkey = OFF; //キーを押したことを記憶する
}
GameDraw();
}
//ゲーム後処理
//プログラム終了時に1回のみシステムから呼ばれる
void GameTerm(void)
{
//絵の解放
gsReleaseTexture( sPlayer ); //プレイヤー
gsReleaseTexture( sBG ); //背景
}
//1プレイ初期化
void PlayInit(void)
{
//プレイヤーの初期設定
gPlayer.X = 0;
gPlayer.Y = 0;
gPlayer.dir = RIGHT;
gPlayer.jump = OFF;
}
void GameMain()
{
PlayerMove(); //プレイヤー移動
}
void GameDraw(void)
{
int y;
//背景表示
gsDraw2D( sBG,0,0 );
//プレイヤーを表示
gsDraw2D( sPlayer,gPlayer.X,gPlayer.Y );
//向きによりyを決定
if(gPlayer.dir == RIGHT) y=0;
else y=1;
}
//プレイヤー移動
void PlayerMove(void)
{
int dashrightflag = 0;
int dashrighttime = 0;
if (gsKeyState(VK_RIGHT) == GSKS_DOWN )
{
if(dashrighttime >= 0)
{
dashrightflag=1;
dashrighttime--;
}
dashrighttime=30;//0.5sec
}
//右へ移動
if ( gsKeyCheck(VK_RIGHT))
{
if(dashrightflag==1)
{
gPlayer.X+=8;
}else{
gPlayer.X+=4;
}
dashrighttime--;
}
//左へ移動
if( gsKeyCheck(VK_LEFT))
{
gPlayer.X -= 4; //移動
}
//右はみ出し処理
if ( gPlayer.X > 540 )
{
gPlayer.X = 540;
}
// 左はみ出し処理
if ( gPlayer.X < -40 )
{
gPlayer.X = -40;
}
//ジャンプ処理
//ジャンプ中
if(gPlayer.jump == ON)
{
gPlayer.Y += gPlayer.speed;
gPlayer.speed += 0.5;
}
//ジャンプ開始
else
{
//前回、キーが押されていなければ
if ( gHitkey == OFF )
{
//Zキーを押したら
if( gsKeyCheck('Z'))
{
gHitkey = ON; //キーを押したことを記憶する
gPlayer.jump = ON; //ジャンプ中にする
gPlayer.speed = -10; //加速度を設定
}
}
}
//ジャンプ終了
if ( gPlayer.Y > 0 ) //基本位置より下に落ちたら
{
gPlayer.Y =0; //基本位置に戻す
gPlayer.jump = OFF; //ジャンプ終了する
}
}