[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
| |
チェック
1
:
aaaaaa
:2013/05/09(木) 12:00:27
//メインループ
void MyMain(){
//ゲーム開始からの時間を計る
g_stage.gametime = g_lasttime - g_stage.gamestarttime;
//b2bの時間を進める
g_world.Step(g_frametime, VELOCITYITE, POSITIONITE);
//各画面の描画
switch(g_gamestate){
case GAME_TITLE:
DrawGameTitle();
break;
case GAME_MAIN:
DrawGameMain();
break;
case GAME_CLEAR:
DrawGameClear();
break;
case GAME_OVER:
DrawGameOver();
break;
}
}
//ファイルの読み込み
int LoadFiles(){
//ファイルの読み込み処理をここに書く
if( LoadDivGraph("media\\chara_hero_l.png",
6, 6, 1, 46, 96, g_images.hero) == -1)
{
return -1;
}
//読み込み成功
return 1;
}
//ステージ初期化
void InitStage(){
//ゲームデータ全体のゼロ初期化
ZeroMemory(&g_stage, sizeof(g_stage));
//全ボディ・ジョイント削除
DeleteAllBody();
//ボールを追加
b2Body* ball = CreateDynamicBall(PHS(300) , PHS(0) , PHS(40));
g_stage.wall = CreateBox(PHS(320), PHS(400),
PHS(200), PHS(20) , false);
g_stage.hero = CreateBox(PHS(140) , PHS(300),
PHS(23), PHS(48), true);
//ゲーム開始時刻の記録
g_stage.gamestarttime = g_lasttime;
}
2
:
aaaaaa
:2013/05/09(木) 12:01:05
//タイトル画面描画
void GoGameTitle(){
g_gamestate = GAME_TITLE;
}
void DrawGameTitle(){
//テキスト表示
DrawStringToHandle(100, 340, "Zキーでゲームスタート",
0x666666, g_middlefont);
//キーをチェックして画面切り替え
int key = GetJoypadInputState( DX_INPUT_KEY_PAD1 );
if(IsAKeyTrigger(key)==true) GoGameMain();
}
//ゲーム本編描画
void GoGameMain(){
g_gamestate = GAME_MAIN;
InitStage(); //ステージデータの初期化
}
void DrawGameMain(){
//衝突チェック
g_stage.isontheground = false;
Collision();
HeroState hstate = HERO_STANDING;
int key = GetJoypadInputState( DX_INPUT_KEY_PAD1 );
//主人公の位置と移動ベクトル
b2Vec2 pos = g_stage.hero->GetPosition();
b2Vec2 vec = g_stage.hero->GetLinearVelocity();
float angle = g_stage.hero->GetAngle();
//キーチェック
if(g_stage.isontheground == true){
//左右移動
if(key & PAD_INPUT_LEFT) {
vec.x = -PHS(120.0f);
g_stage.hero->SetLinearVelocity(vec);
hstate = HERO_RUNNING;
g_stage.isheroleft = true;
}
if(key & PAD_INPUT_RIGHT) {
vec.x = PHS(120.0f);
g_stage.hero->SetLinearVelocity(vec);
hstate = HERO_RUNNING;
g_stage.isheroleft = false;
}
//ジャンプ
if(IsBKeyTrigger(key) == true){
vec.x= 0;
vec.y = -62.0f;
g_stage.hero->ApplyLinearImpulse(vec, pos);
hstate = HERO_JUMP;
g_stage.isontheground = false;
}
}
//ジャンプ姿勢
if(g_stage.isontheground == false) hstate = HERO_JUMP;
//キャラクター描画
int animpat = (g_lasttime / (1000 / 12)) % 4;
switch(hstate){
case HERO_STANDING:
DrawRotaGraph(VIWX(pos.x), VIWY(pos.y), 1, angle,
g_images.hero[0],TRUE,g_stage.isheroleft);
break;
case HERO_RUNNING:
DrawRotaGraph(VIWX(pos.x), VIWY(pos.y), 1, angle,
g_images.hero[1 + animpat], TRUE,
g_stage.isheroleft);
break;
case HERO_JUMP:
DrawRotaGraph(VIWX(pos.x), VIWY(pos.y), 1, angle,
g_images.hero[5], TRUE,g_stage.isheroleft);
break;
}
}
//ゲームクリア画面描画
void GoGameClear(){
g_gamestate = GAME_CLEAR;
g_stage.timerstart = g_lasttime;
}
void DrawGameClear(){
//5秒経ったらタイトル画面へ
if(g_lasttime - g_stage.timerstart > 5000) GoGameTitle();
}
//ゲームオーバー画面描画
void GoGameOver(){
g_gamestate = GAME_OVER;
g_stage.timerstart = g_lasttime;
}
void DrawGameOver(){
//5秒経ったらタイトル画面へ
if(g_lasttime - g_stage.timerstart > 5000) GoGameTitle();
}
b2Body* CreateDynamicBall(float x, float y, float radius){
//ボディ定義
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody; //動的ボディ
bodyDef.position.Set(x, y);
bodyDef.angle = 0.1f;
//ボディ作成
b2Body* body = g_world.CreateBody(&bodyDef);
//シェイプ作成
b2CircleShape dynamicBall;
dynamicBall.m_radius = radius;
//フィクスチャ定義
b2FixtureDef fixtureDef;
fixtureDef.shape = &dynamicBall;
fixtureDef.density = 4.0f; //密度
fixtureDef.restitution = 0.7f; //反発力
body->CreateFixture(&fixtureDef);
return body;
}
新着レスの表示
名前:
E-mail
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板