[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
| |
P203までの「main.cpp」
1
:
AF
:2013/05/08(水) 14:54:27
#include "main.h"
//グローバル変数
GameState g_gamestate = GAME_TITLE;
//box2d関連
b2Vec2 gravity(0.0f, GRAVITY_Y); //重力加速度
b2World g_world(gravity, true); //Box2DWorld
//ゲームデータ
Images g_images; //画像データ
Sounds g_sounds; //音声データ
StageInfo g_stage; //ステージデータ
//メインループ
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;
}
//壁
g_images.wall[WALL_568] = LoadGraph("media\\wall_s.png");
if(g_images.wall[WALL_568] == -1) return -1;
g_images.wall[WALL_48] = DerivationGraph(0, 0, 48, 48,
g_images.wall[WALL_568]);
g_images.wall[WALL_192] = DerivationGraph(0, 0, 192, 48,
g_images.wall[WALL_568]);
g_images.wall[WALL_284] = DerivationGraph(0, 0, 284, 48,
g_images.wall[WALL_568]);
//ゴールの旗
g_images.wall[GOAL_FLAG] = LoadGraph("media\\goalflag.png");
if(g_images.wall[GOAL_FLAG] == -1) return -1;
//読み込み成功
return 1;
}
//タイトル画面描画
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;
}
//転倒対策
if( fabs(angle) > 0.2f ){
g_stage.hero->SetAngularVelocity(-angle*2);
}
}
新着レスの表示
名前:
E-mail
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板