したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

P203までの「main.cpp」

1AF: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);
}
}

2AF:2013/05/08(水) 14:54:57
//衝突判定
void Collision(){
//接触確認ループ
for(b2Contact* c = g_world.GetContactList(); c!=NULL;
c = c->GetNext())
{
if(c->IsTouching() == false) continue;
//接触しているボディを取り出す
b2Body* b1 = c->GetFixtureA()->GetBody();
b2Body* b2 = c->GetFixtureB()->GetBody();
//主人公のチェック
b2Body* hb = NULL;
b2Body* ob = NULL;
if(b1 == g_stage.hero) {hb = b1; ob = b2;}
if(b2 == g_stage.hero) {hb = b2; ob = b1;}
if(hb != NULL){
//主人公の足下確認
g_stage.isontheground = true;
}
}
}

//ステージ初期化
void InitStage(){
//ゲームデータ全体のゼロ初期化
ZeroMemory(&g_stage, sizeof(g_stage));
//全ボディ・ジョイント削除
DeleteAllBody();


if(LoadMapData("media\\stage01.txt")==-1){
MessageBox(NULL,"失敗","DXライブラリ",MB_OK);
}
//ボールを追加
//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;
}


//ゲームクリア画面描画
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);
//ボディ作成
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;
}

3AF:2013/05/08(水) 14:55:56
b2Body* CreateBox(float x, float y, float w, float h, float angle,bool dynamic){
//ボディ定義
b2BodyDef bodyDef;
if(dynamic) bodyDef.type = b2_dynamicBody; //動的ボディ
else bodyDef.type = b2_staticBody; //静的ボディ
bodyDef.position.Set(x, y);
bodyDef.angle=angle;

//bodyDef.angle = 0.1f;
//ボディ作成
b2Body* body = g_world.CreateBody(&bodyDef);
//シェイプ作成
b2PolygonShape staticBox;
staticBox.SetAsBox(w, h);
//フィクスチャ定義
b2FixtureDef fixtureDef;
fixtureDef.shape = &staticBox;
fixtureDef.density = 4.0f; //密度
fixtureDef.restitution = 0.2f; //反発力
fixtureDef.friction = 0.2f; //摩擦係数
body->CreateFixture(&fixtureDef);
return body;
}


//マップの読み込み
int LoadMapData(char *filepath){
int f; //ファイルハンドル
char buf[1024]; //テキスト読み込みバッファ

f = FileRead_open(filepath);
if (f==0) return -1; //読み込みエラー

//マップサイズと主人公初期位置読み込み
if(FileRead_gets( buf, 1023, f ) == -1) return -1;
float w, h, sx, sy;
sscanf_s(buf, "%f, %f, %f, %f", &w, &h, &sx, &sy);
g_stage.mapsize_w = w;
g_stage.mapsize_h = h;

//主人公キャラクター
g_stage.hero = CreateBox(PHS(sx), PHS(sy),
PHS(23), PHS(48), 0, true);

//地形オブジェクト読み込み
if(FileRead_gets( buf, 1023, f ) == -1) return -1;
int imax;
sscanf_s(buf, "%d" , &imax); //行数取得
float x, y, angle;
int id;
for(int i=0; i<imax; i++){
if(FileRead_gets( buf, 1023, f ) == -1) return -1;
sscanf_s( buf, "%f, %f, %f, %f, %f, %d",
&x, &y, &w, &h, &angle, &id);
//ボディ作成
Character ch;
ch.body = CreateBox(PHS(x), PHS(y),PHS(w/2), PHS(h/2), angle, false);

if((int)w == 48) ch.ID = WALL_48;
if((int)w == 192) ch.ID = WALL_192;
if((int)w == 284) ch.ID = WALL_284;
if((int)w == 568) ch.ID = WALL_568;
if(id == 1) ch.ID = GOAL_FLAG;
ch.used = true;
g_stage.wall[g_stage.num_mapchara] = ch;
g_stage.num_mapchara++;
}

FileRead_close(f);
return 0;
}

4MP610 インク:2013/08/30(金) 13:08:25
比較的早く咲くかわづ<a href="http://5xhomo5g90.d4vid.com" title="EPSON インク 残量">EPSON インク 残量</a>も開花が遅いと思ったら、いきなり満開になり、そして葉っぱがちらほらになった。 <a href="http://5jmniccdfv.d4vid.com" title="EPSON インク 出ない">EPSON インク 出ない</a>レプリカのハンドバッグは、 DBE27C120BC21EDF803E176AC4C03F53 現在頻繁にハイストリートに見られる。 MP610 インク http://wmfd81rpvh.d4vid.com

5LOUIS VUITTON 長財布:2013/09/01(日) 22:05:05
就職の為の読書就活<a href="http://ijbcesiebf.drshores.com" title="ルイヴィトン ベルト">ルイヴィトン ベルト</a>による読書記録最初に読んだ本は、松下幸之助氏の「社員心得帖」ですこの本はある金融機関のOBで、人事部長も担当された事もある方から紹介していただきました今から25年も前に発表された本ですが、古さを感じません。 ラグビーブーツは、<a href="http://v1ye0pl6ah.drshores.com" title="ルイヴィトン 財布">ルイヴィトン 財布</a>、アーマー下で最適アシックス、カンタベリー、ギルバート、ジョマ、カッパ、Kooga、ミズノ、ナイキ、Nomis、プーマ、アンブロ、およびWebエリスなどの国際ラグビー選手が着用しているトップブランドの大規模な選択に来る。
LOUIS VUITTON 長財布 http://2iq9msag98.drshores.com

6グッチ 財布 新作:2013/09/07(土) 22:21:11
世界中に500以上の種類があるといわれるアロエの中でも特に研究者の間で注目されているのがラテン語で「真実のアロエ」を意味する「ア<a href="http://81oo42baw1.re-l.com" title="GUCCI メンズ 長財布">GUCCI メンズ 長財布</a>ラ」。 価格320,000円 (税込336,000円) 送料別<a href="http://94u83mybqd.re-l.com" title="グッチ ストール">グッチ ストール</a> HERMES エブリンPM SV トリヨンクレマンス アニスグリーン(抹茶っぽい緑) J刻印楽天 <a href="http://fppm03xyep.re-l.com" title="グッチ ボストンバッグ">グッチ ボストンバッグ</a> HERMES バッグ がそろっています!
グッチ 財布 新作 http://26x86pmcdx.re-l.com

7グッチ 財布 コピー:2013/09/09(月) 14:46:10
彼らは香水のベストセラーリストのようなものを保持していないが、それは<a href="http://ixwthqob07.re-l.com" title="GUCCI メンズ">GUCCI メンズ</a>ナンバー5は、過去80年にわたって一貫していくつかの人気が残っている可能性があります。 <a href="http://8cp0p4uy5b.re-l.com" title="グッチ ネックレス">グッチ ネックレス</a>財布PRADAシルバーパイピング長財布ROSA17時までのご注文で明日届きます代引きで翌日着は可能ですが、電話確認が必要です。
グッチ 財布 コピー http://vfmapf8a9l.re-l.com


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板