/************************/ /* ohta.c */ /************************/ #include "../systeminc/version.h" #include "../systeminc/system.h" #include "ohta.h" #include "../systeminc/loadsprbin.h" #include "../systeminc/t_music.h" ACTION *MakeJiki( void ); void Jiki( ACTION *pAct ); ACTION *MakeJikiTama( int x, int y, int dx, int dy, int bmpNo ); void JikiTama( ACTION *pAct ); ACTION *MakeEnemy( void ); void Enemy( ACTION *pAct ); ACTION *MakeEnemyTama( ACTION *pOya ); void EnemyTama( ACTION *pAct ); ACTION *MakeBg( void ); void Bg( ACTION *pAct ); ACTION *MakeKen( void ); void Ken( ACTION *pAct ); ACTION *MakeGameOver( void ); void GameOver( ACTION *pAct ); /* 爆発データ */ int bomData[] = { 21, 22, 23, 23, 22, 21 }; /* 自機のポインタ */ ACTION *pJiki; /* 攻撃の種類 */ enum{ TAMA_NORMAL, /* ノーマル */ TAMA_TWIN, /* ツイン */ TAMA_3WAY, /* 3方向 */ TAMA_DIR, /* 全方向 */ TAMA_END /* 終わり */ }; /********************************************/ /* 自機 */ /********************************************/ /* 自機予備構造体 */ typedef struct{ int cnt,cnt2,cnt3; /* 汎用カウンタ */ int tamaDir; /* 弾の方向 */ int tamaDx; /* 弾のX増分 */ int attackKind; /* 攻撃の種類 */ STR_BUFFER strTestBuffer; /* テスト文字列 */ }JIKI; static int No = 36000; /* 自機作成 *******************************************************************/ ACTION *MakeJiki( void ) { ACTION *pAct; JIKI *pYobi; /* アクションリストに登録 */ pAct = GetAction( PRIO_JIKI, sizeof( JIKI ) ); if( pAct == NULL ) return NULL; /* 予備構造体のアドレス */ pYobi = ( JIKI *)pAct->pYobi; /* 実行関数 */ pAct->func = Jiki; /* 表示優先度 */ pAct->dispPrio = DISP_PRIO_JIKI; // 当たり判定 + ボックス表示 pAct->atr |= ACT_ATR_HIT_BOX; /* スプライト番号 */ //pAct->bmpNo = 31; //pAct->anim_chr_no = 20001; // anim_tbl.h の番号 pAct->anim_chr_no = 31555; // イノシシ //pAct->anim_chr_no = 5200; // マウスカーソル //pAct->anim_chr_no = 9350; // SCORE // 動作番号 //pAct->anim_no = ANIM_ATTACK; pAct->anim_no = ANIM_STAND; pAct->anim_no = ANIM_STAND + 1; // アニメーション向き( 0~7 )( 下が0で右回り ) pAct->anim_ang = 0; /* HP */ pAct->hp = 100; /* 初期位置 */ pAct->x = 304; pAct->y = 400; /* 敵作成 */ // MakeEnemy(); /* BG作成 */ //MakeBg(); /* ケン作成 */ // MakeKen(); /* 攻撃の種類 */ //pYobi->attackKind = TAMA_DIR; pYobi->attackKind = TAMA_3WAY; /* 弾方向 */ pYobi->tamaDir = 1; pYobi->tamaDx = 1; /* グローバルに保存 */ pJiki = pAct; // 文字列の長さ pYobi->strTestBuffer.len = 10; // 文字列の色 pYobi->strTestBuffer.color = 1; pYobi->strTestBuffer.x = 320; pYobi->strTestBuffer.y = 260; return pAct; } /* 自機処理 *******************************************************************/ void Jiki( ACTION *pAct ) { JIKI *pYobi = ( JIKI *)pAct->pYobi; //int i; /* 攻撃受けた時 */ if( pAct->damage > 0 ){ pAct->hp -= pAct->damage; if( pAct->hp <= 0 ){ pAct->state = ACT_STATE_DEAD; pYobi->cnt = 0; pYobi->cnt2 = 0; pYobi->cnt3 = 0; } pAct->damage = 0; } // 取出す座標 // rcX = Rnd( 0,608 ); // rcY = Rnd( 0,400 ); // SetRect( &Rc[ pAct->bmpNo ], rcX, rcY, rcX + 32, rcY + 32 ); // マウス移動 //pAct->x = mouse.nowPoint.x; //pAct->y = mouse.nowPoint.y; // マウスで弾発射 if( pYobi->cnt3 <= 0 ){ // 弾発射 //if( mouse.state == MOUSE_LEFT_CRICK ){ if( mouse.onceState & MOUSE_LEFT_CRICK ){ // 入力フォーカス取得 //GetKeyInputFocus( &pYobi->strTestBuffer ); /* 弾作成 */ //MakeJikiTama( pAct->x , pAct->y -16, 0, -8, Rnd( 0, BMP_FILE - 1 ) ); //MakeJikiTama( pAct->x , pAct->y -16, 0, -8, 1034 ); //MakeJikiTama( pAct->x, pAct->y -16, 0, -8, 25 ); //MakeJikiTama( pAct->x, pAct->y -16, 0, -8, Rnd( 0, BMP_FILE - 2 ) ); //MakeJikiTama( pAct->x, pAct->y -16, 0, -8, Rnd( 31554, 31557 ) ); // TGS //MakeJikiTama( pAct->x, pAct->y -16, 0, -8, Rnd( 31000, 31069 ) ); // モンスター // MakeJikiTama( pAct->x, pAct->y -16, 0, -8, Rnd( 30100, 30135 ) ); // PC //MakeJikiTama( pAct->x + 10, pAct->y -16, 0, -8, Rnd( 0, BMP_FILE - 1 ) ); //MakeJikiTama( pAct->x, pAct->y -16, 0, -8, 29 ); //MakeJikiTama( pAct->x - 10, pAct->y -16, 0, -8, 29 ); //MakeJikiTama( pAct->x + 10, pAct->y -16, 0, -8, 29 ); pYobi->cnt3 = 5; #if 0 for( i = 0; i < (int)256; i++ ){ // 明るくする Palette[i].peRed *= 0.95; Palette[i].peGreen *= 0.95; Palette[i].peBlue *= 0.95; } // パレットの中身を設定 lpDraw->lpPALETTE->SetEntries( 0, 0, 256, Palette ); #endif } // 真中ボタン if( GetAsyncKeyState( VK_MBUTTON ) ){ //MakeJikiTama( pAct->x, pAct->y -16, 0, -8, 29 ); //MakeJikiTama( pAct->x, pAct->y -16, 0, -8, Rnd( 0, BMP_FILE - 1 ) ); // MakeJikiTama( pAct->x, pAct->y -16, 0, -8, 32 ); pYobi->cnt3 = 5; } // 弾発射 //if( mouse.onceState & MOUSE_RIGHT_CRICK ){ if( mouse.state & MOUSE_RIGHT_CRICK ){ // 入力フォーカス取得 //GetKeyInputFocus( &MyChatBuffer ); //if( GetAsyncKeyState( VK_RBUTTON ) & 0x8000 ){ // MakeJikiTama( pAct->x, pAct->y -16, 0, -8, 29 ); // サーフェスがあったら //if( lpSurface[ 0 ] != NULL ){ // // リリース // lpSurface[ 0 ]->Release( ); // lpSurface[ 0 ] = NULL; //} // MakeBg(); #if 0 MakeJikiTama( pAct->x - 10, pAct->y -16, -6, -8, Rnd( 0, BMP_FILE - 2 ) ); MakeJikiTama( pAct->x - 5, pAct->y -16, -3, -8, Rnd( 0, BMP_FILE - 2 ) ); MakeJikiTama( pAct->x, pAct->y -16, 0, -8, Rnd( 0, BMP_FILE - 2 ) ); MakeJikiTama( pAct->x + 5, pAct->y -16, 3, -8, Rnd( 0, BMP_FILE - 2 ) ); MakeJikiTama( pAct->x + 10, pAct->y -16, 6, -8, Rnd( 0, BMP_FILE - 2 ) ); #else // MakeJikiTama( pAct->x - 10, pAct->y -16, -6, -8, No ); // MakeJikiTama( pAct->x - 5, pAct->y -16, -3, -8, No ); // MakeJikiTama( pAct->x, pAct->y -16, 0, -8, No ); // MakeJikiTama( pAct->x + 5, pAct->y -16, 3, -8, No ); // MakeJikiTama( pAct->x + 10, pAct->y -16, 6, -8, No ); #endif pYobi->cnt3 = 5; #if 0 for( i = 0; i < (int)256; i++ ){ // 暗くする Palette[i].peRed *= 1.05; Palette[i].peGreen*= 1.05; Palette[i].peBlue *= 1.05; } //パレットの中身を設定 lpDraw->lpPALETTE->SetEntries( 0, 0, 256, Palette ); #endif } }else pYobi->cnt3--; /* 状態で分岐 */ switch( pAct->state ){ /* 通常時 */ case ACT_STATE_ACT: /* 敵弾との当たり判定 */ //Hit( pAct, PRIO_ENEMY_TAMA ); /* 敵との当たり判定 */ //Hit( pAct, PRIO_ENEMY ); /* 移動 */ if( joy_con[ 0 ] & JOY_UP ){ /* 上 */ pAct->y -= 2; if( pAct->y < 0 ) pAct->y = 0; } if( joy_con[ 0 ] & JOY_DOWN ){ /* 下 */ pAct->y += 2; if( pAct->y > 448 ) pAct->y = 448; } if( joy_con[ 0 ] & JOY_LEFT ){ /* 左 */ pAct->x -= 2; if( pAct->x < 0 ) pAct->x = 0; } if( joy_con[ 0 ] & JOY_RIGHT ){ /* 右 */ pAct->x += 2; if( pAct->x > 608 ) pAct->x = 608; } // 敵作成 //if( joy_con[ 0 ] & JOY_B ) MakeEnemy(); /* 弾発射 */ if( pYobi->cnt3 <= 0 ){ /* 弾ウェイト */ if( joy_con[ 0 ] & JOY_A ){ /*DeathAllAction();*/ /* 弾の種類で分岐 */ switch( pYobi->attackKind ){ case TAMA_NORMAL: /* 弾作成 */ MakeJikiTama( pAct->x, pAct->y -16, 0, -8, 28 ); break; case TAMA_TWIN: /* 弾作成 */ MakeJikiTama( pAct->x - 10, pAct->y -16, 0, -8, 29 ); MakeJikiTama( pAct->x + 10, pAct->y -16, 0, -8, 29 ); break; case TAMA_3WAY: MakeJikiTama( pAct->x - 10, pAct->y -16, -4, -8, 29 ); MakeJikiTama( pAct->x, pAct->y -16, 0, -8, 29 ); MakeJikiTama( pAct->x + 10, pAct->y -16, 4, -8, 29 ); break; case TAMA_DIR: MakeJikiTama( pAct->x, pAct->y -16, pYobi->tamaDx, -8, 29 ); MakeJikiTama( pAct->x, pAct->y -16, -pYobi->tamaDx, -8, 29 ); /* 弾方向 */ pYobi->tamaDx += pYobi->tamaDir; if( pYobi->tamaDx <= -10 || 10 <= pYobi->tamaDx ){ pYobi->tamaDir *= -1; } break; } pYobi->cnt3 = 2; /* 弾ウェイト */ //pYobi->cnt3 = 0; /* 弾ウェイト */ } }else{ if( pYobi->cnt3 > 0 ) pYobi->cnt3--; } /* 点滅 */ /* if( ( int )pAct->x % 2 ) pAct->atr |= ACT_ATR_HIDE; else pAct->atr &= ~ACT_ATR_HIDE; */ /* 敵作成 */ pYobi->cnt++; if( pYobi->cnt >= 1 ){ //MakeEnemy(); pYobi->cnt2++; if( pYobi->cnt2 >= 5 ){ pYobi->cnt2 = 0; /* 弾変更 */ //pYobi->attackKind++; if( pYobi->attackKind >= TAMA_END ){ pYobi->attackKind = 0; } } pYobi->cnt = 0; } break; /* 死亡時 */ case ACT_STATE_DEAD: if( pYobi->cnt == 0 ){ pAct->bmpNo = bomData[ 0 ]; pYobi->cnt = 1; } /* 爆発アニメーション */ pYobi->cnt2++; if( pYobi->cnt2 >= 5 ){ pAct->bmpNo = bomData[ pYobi->cnt ]; pYobi->cnt++; pYobi->cnt2 = 0; /* 終わったら死ぬ */ if( pYobi->cnt == 6 ){ DeathAction( pAct ); MakeGameOver( ); } } break; } // 表示データをバッファに溜める //StockDispBuffer( pAct->x + 32, pAct->y, pAct->dispPrio, pAct->anim_chr_no, 0 ); //StockDispBuffer( pAct->x - 32, pAct->y, pAct->dispPrio, pAct->anim_chr_no, 0 ); { char szMoji[ 256 ]; wsprintf( szMoji,"BmpNo = %d",No ); // StockFontBuffer( pAct->x, pAct->y, FONT_PRIO_FRONT, 2, szMoji, 0 ); } // アニメーション pattern( pAct, ANM_NOMAL_SPD, ANM_LOOP ); // テスト文字列表示 //StockFontBuffer( 320, 200, FONT_PRIO_FRONT, pYobi->strTestBuffer.color, pYobi->strTestBuffer.buffer, 0 ); StockFontBuffer2( &pYobi->strTestBuffer ); } /********************************************/ /* 自機弾 */ /********************************************/ /* 自機弾作成 *********************************************************************/ ACTION *MakeJikiTama( int x, int y, int dx, int dy, int bmpNo ) { ACTION *pAct; /* アクションリストに登録 */ pAct = GetAction( PRIO_JIKI_TAMA, 0 ); if( pAct == NULL ) return NULL; /* 実行関数 */ pAct->func = JikiTama; // anim_tbl.h の番号 pAct->anim_chr_no = bmpNo; // イノシシ // 動作番号 //pAct->anim_no = ANIM_ATTACK; pAct->anim_no = Rnd( ANIM_ATTACK, ANIM_WALK ); //pAct->anim_no = ANIM_WALK; // アニメーション向き( 0~7 )( 下が0で右回り ) pAct->anim_ang = Rnd( 0, 7 ); ///* スプライト番号 */ //pAct->bmpNo = bmpNo; /* 表示優先度 */ pAct->dispPrio = 2; /* HP */ pAct->hp = 10000; /* 初期位置 */ pAct->x = x - dx; pAct->y = y - dy; /* 増分 */ pAct->dx = dx / 2; pAct->dy = dy / 2; return pAct; } /* 自機弾処理 *********************************************************************/ void JikiTama( ACTION *pAct ) { /* 攻撃受けた時 */ if( pAct->damage > 0 ){ pAct->hp -= pAct->damage; if( pAct->hp <= 0 ){ pAct->state = ACT_STATE_DEAD; } pAct->damage = 0; } /* 状態で分岐 */ switch( pAct->state ){ /* 通常時 */ case ACT_STATE_ACT: /* 敵との当たり判定 */ //Hit( pAct, PRIO_ENEMY ); /* 移動 */ pAct->x += pAct->dx; pAct->y += pAct->dy; /* リミット */ if( pAct->y <= -32 ){ pAct->y = -32; MakeEnemyTama( pAct ); DeathAction( pAct ); }else if( lpDraw->ySize <= pAct->y ){ pAct->y = lpDraw->ySize; DeathAction( pAct ); } if( pAct->x <= -32 ){ pAct->x = -32; DeathAction( pAct ); }else if( lpDraw->xSize <= pAct->x ){ pAct->x = lpDraw->xSize; DeathAction( pAct ); } break; /* 死亡時 */ case ACT_STATE_DEAD: DeathAction( pAct ); break; } // アニメーション pattern( pAct, ANM_NOMAL_SPD, ANM_LOOP ); } /********************************************/ /* 敵 */ /********************************************/ /* 敵予備構造体 */ typedef struct{ int cnt,cnt2,cnt3,animCnt; /* 汎用カウンタ */ }ENEMY; /* 敵作成 *********************************************************************/ ACTION *MakeEnemy( void ) { ACTION *pAct; ENEMY *pYobi; short bmpTbl[] = { 1, 3, 5, 7, 9, 29 }; /* アクションリストに登録 */ pAct = GetAction( PRIO_ENEMY, sizeof( ENEMY ) ); if( pAct == NULL ) return NULL; /* 予備構造体のアドレス */ pYobi = ( ENEMY *)pAct->pYobi; /* 実行関数 */ pAct->func = Enemy; /* スプライト番号 */ pAct->bmpNo = bmpTbl[ ( int )Rnd( 0, 4 ) ]; //pAct->bmpNo = Rnd( 1, 10 ); /* 表示優先度 */ pAct->dispPrio = 1; /* HP */ pAct->hp = 10;//Rnd( 10, 50 ); /* 初期位置ランダム */ // pAct->x = Rnd( 0, 608 ); pAct->x = Rnd( 0, lpDraw->xSize ); ATR_CRS(pAct) = 16; ATR_SPD(pAct) = Rnd( 28, 36 ); pAct->dx = 0; pAct->y = 0; /* 増分ランダム */ pAct->dx = Rnd( -3, 3 ); pAct->dy = Rnd( 1, 3 ); return pAct; } /* 敵弾処理 *********************************************************************/ void enemy_missile( ACTION *a0 ) { gemini(a0); //移動 //画面外なら if(ATR_H_POS(a0)>=lpDraw->xSize || ATR_H_POS(a0)<-32 || ATR_V_POS(a0)>lpDraw->ySize || ATR_V_POS(a0)<-32) DeathAction( a0 ); //終了 } /* 敵処理 *********************************************************************/ void Enemy( ACTION *pAct ) { ENEMY *pYobi = ( ENEMY *)pAct->pYobi; /* 攻撃受けた時 */ if( pAct->damage > 0 ){ pAct->hp -= pAct->damage; if( pAct->hp <= 0 ){ pAct->state = ACT_STATE_DEAD; pYobi->cnt = 0; pYobi->cnt2 = 0; pYobi->cnt3 = 0; } pAct->damage = 0; } /* 状態で分岐 */ switch( pAct->state ){ /* 通常時 */ case ACT_STATE_ACT: /* 移動 */ // pAct->x += pAct->dx; // pAct->y += pAct->dy; /* リミットチェック */ // if( pAct->x < 0 ){ // pAct->x = 0; // pAct->dx *= -1; // } // else // if( pAct->x > lpDraw->xSize ){ // pAct->x = lpDraw->xSize; // pAct->dx *= -1; // } // if( pAct->y > lpDraw->ySize ){ // pAct->y = -32; // } pAct->dx++; //2割り込みに1回スピード変更する pAct->dx&=1; // gemini(pAct); //移動 if(ATR_CRS(pAct)==0){ //上移動中なら if( pAct->y < -32 ){ //上端なら ATR_CRS(pAct)=16; //下移動開始 ATR_SPD(pAct) = Rnd( 28, 36 ); pAct->x = Rnd( 0, lpDraw->xSize ); // } else { if(pAct->dx) ATR_SPD(pAct)++; //スピードアップ } } else { if(pAct->dx){ ATR_SPD(pAct)--; //スピードダウン if(!ATR_SPD(pAct)){ //停止したなら ATR_CRS(pAct)=0; //上移動開始 ACTION *a1; //ミサイル発射 int d1,d2; /* アクションリストに登録 */ a1 = GetAction( PRIO_ENEMY_TAMA, 0 ); if( a1 == NULL ) break; /* 実行関数 */ a1->func = enemy_missile; /* スプライト番号 */ a1->bmpNo = No++; /* 表示優先度 */ a1->dispPrio = 3; /* 初期位置 */ ATR_H_POS(a1) = ATR_H_POS(pAct)+16; ATR_V_POS(a1) = ATR_V_POS(pAct)+16; d1 = pJiki->x; //自機の方向セット d2 = pJiki->y; // radar(a1, &d1, &d2); // ATR_CRS(a1)=d1; // ATR_SPD(a1)=16; //移動速度 play_se( 2, ATR_H_POS(a1), ATR_V_POS(a1) ); //ミサイル発射音 } } } // アニメーション /* pYobi->cnt3 += pAct->dy; if( pYobi->cnt3 >= 20 ){ pYobi->cnt3 = 0; pYobi->animCnt = pYobi->animCnt * ( -2 ) + 1; pAct->bmpNo += pYobi->animCnt; } */ /* pAct->cnt++; if( pAct->cnt >= 300 ){ pAct->state = ACT_STATE_DEAD; pAct->cnt = 0; } */ //if( Rnd( 0, 300 ) == 0 ) MakeEnemyTama( pAct ); //MakeEnemyTama( pAct ); break; /* 死亡時 */ case ACT_STATE_DEAD: if( pYobi->cnt == 0 ){ pAct->bmpNo = bomData[ 0 ]; pYobi->cnt = 1; } /* 爆発アニメーション */ pYobi->cnt2++; if( pYobi->cnt2 >= 5 ){ pAct->bmpNo = bomData[ pYobi->cnt ]; pYobi->cnt++; pYobi->cnt2 = 0; /* 終わったら死ぬ */ if( pYobi->cnt == 6 ){ DeathAction( pAct ); } } break; } } /********************************************/ /* 敵弾 */ /********************************************/ /* 敵弾作成 *********************************************************************/ ACTION *MakeEnemyTama( ACTION *pOya ) { ACTION *pAct; //float dir; /* アクションリストに登録 */ pAct = GetAction( PRIO_ENEMY_TAMA, 0 ); if( pAct == NULL ) return NULL; /* 実行関数 */ pAct->func = EnemyTama; /* スプライト番号 */ pAct->anim_chr_no = Rnd( 31554, 31556 ); //スライム // 当たり判定 + ボックス表示 pAct->atr |= ACT_ATR_HIT_BOX; //pAct->anim_no = Rnd( ANIM_ATTACK, ANIM_SATTACK ); //pAct->anim_no = ANIM_ATTACK; pAct->anim_no = ANIM_WALK; /* 表示優先度 */ pAct->dispPrio = DISP_PRIO_JIKI; /* HP */ pAct->hp = 0; /* 初期位置 */ //pAct->x = pOya->x + 16; //pAct->y = pOya->y + 32 ; pAct->x = Rnd( 100, 500 ); pAct->y = Rnd( 100, 400 ); // 移動方向 radar2( pAct, pJiki->x, pJiki->y, 1 ); //移動速度 pAct->spd = 16; // アニメーション pattern( pAct, ANM_NOMAL_SPD, ANM_LOOP ); return pAct; } /* 敵弾処理 *********************************************************************/ void EnemyTama( ACTION *pAct ) { /* 攻撃受けた時 */ if( pAct->damage > 0 ){ pAct->hp -= pAct->damage; if( pAct->hp <= 0 ){ pAct->state = ACT_STATE_DEAD; } pAct->damage = 0; } /* 状態で分岐 */ switch( pAct->state ){ /* 通常時 */ case ACT_STATE_ACT: // マウスカーソルがヒットしていたら if( pAct->hitDispNo == HitDispNo ){ // 左クリックが押されている時 if( mouse.state & MOUSE_LEFT_CRICK ){ // ドラッグ移動 pAct->x = mouse.nowPoint.x; pAct->y = mouse.nowPoint.y; } // 左クリックが押されている時 if( mouse.state & MOUSE_RIGHT_CRICK ){ // ドラッグ移動 DeathAction( pAct ); } } /* 移動 */ //pAct->x += pAct->dx; //pAct->y += pAct->dy; //gemini( pAct ); //移動 #if 0 /* リミット */ if( pAct->y <= 0 ){ pAct->y = 0; DeathAction( pAct ); }else if( pAct->y >= 481 ){ DeathAction( pAct ); } if( pAct->x <= -8 ){ DeathAction( pAct ); }else if( lpDraw->xSize <= pAct->x ){ DeathAction( pAct ); } #endif break; /* 死亡時 */ case ACT_STATE_DEAD: DeathAction( pAct ); break; } // 移動方向 radar2( pAct, pJiki->x, pJiki->y, Rnd( 0, 10 ) ); // アニメーション pattern( pAct, ANM_NOMAL_SPD, ANM_LOOP ); } /* ゲームオーバー作成 *******************************************************************/ ACTION *MakeGameOver( void ) { ACTION *pAct; /* アクションリストに登録 */ pAct = GetAction( PRIO_GAME_OVER, 0 ); if( pAct == NULL ) return NULL; /* 実行関数 */ pAct->func = GameOver; // 非表示 pAct->atr |= ACT_ATR_HIDE; /* スプライト番号 */ pAct->bmpNo = 0; // pAct->bmpNo = 30; /* HP */ pAct->hp = 100; /* 初期位置 */ pAct->x = 250; pAct->y = 200; return pAct; } /* ゲームオーバー処理 *******************************************************************/ void GameOver( ACTION *pAct ) { //char szMoji[128]; // GAME OVER 表示 } /* BG作成 *********************************************************************/ ACTION *MakeBg( void ) { ACTION *pAct; /* アクションリストに登録 */ pAct = GetAction( PRIO_BG, NULL ); if( pAct == NULL ) return NULL; /* 実行関数 */ pAct->func = Bg; /* スプライト番号 */ //pAct->bmpNo = 30; // pAct->bmpNo = 44; pAct->anim_chr_no = 9376; /* 表示優先度 */ pAct->dispPrio = 0; /* 初期位置 */ pAct->x = 320; pAct->y = 240; // 取出す座標 //pYobi->rcX = 0; //pYobi->rcY = lpDraw->ySize; //SetRect( &Rc[ pAct->bmpNo ], pYobi->rcX, pYobi->rcY, pYobi->rcX + lpDraw->xSize, pYobi->rcY + lpDraw->ySize ); return pAct; } /* BG処理 *********************************************************************/ void Bg( ACTION *pAct ) { // 取出す座標 // 取出す座標 //pAct->y++; //if( pAct->y >= 240 ) pAct->y = -240; pattern( pAct, ANM_NOMAL_SPD, ANM_LOOP ); //アニメーション処理 //StockDispBuffer( pAct->x, pAct->y+lpDraw->ySize, 0, pAct->anim_chr_no, 0 ); //StockDispBuffer( pAct->x, pAct->y, 0, pAct->anim_chr_no, 0 ); //StockDispBuffer( pAct->x, pAct->y+lpDraw->ySize, 0, pAct->anim_chr_no, 0); } /* ケン作成 *********************************************************************/ ACTION *MakeKen( void ) { ACTION *pAct; /* アクションリストに登録 */ pAct = GetAction( PRIO_BG, NULL ); if( pAct == NULL ) return NULL; /* 実行関数 */ pAct->func = Ken; /* スプライト番号 */ pAct->bmpNo = 33; /* 表示優先度 */ pAct->dispPrio = 100; /* 初期位置 */ pAct->x = 100; pAct->y = 100; // 取出す座標 //pYobi->rcX = 0; //pYobi->rcY = lpDraw->ySize; //SetRect( &Rc[ pAct->bmpNo ], pYobi->rcX, pYobi->rcY, pYobi->rcX + lpDraw->xSize, pYobi->rcY + lpDraw->ySize ); return pAct; } /* ケン処理 *********************************************************************/ void Ken( ACTION *pAct ) { int anim[] = { 0,0,0,0, 1,1,1,1, 2,2,2,2, 3,3,3,3, 2,2,2,2, 1,1,1,1 }; }