stoneage8.5/石器时代8.5客户端最新源代码/石器源码/ohta/ohta.cpp
2020-06-23 15:27:59 +08:00

888 lines
21 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/************************/
/* 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で右回り )
pAct->anim_ang = 0;
/* */
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 ) ); //
//MakeJikiTama( pAct->x, pAct->y -16, 0, -8, Rnd( 31000, 31069 ) ); // モンスター
// MakeJikiTama( pAct->x, pAct->y -16, 0, -8, Rnd( 30100, 30135 ) ); //
//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で右回り )
pAct->anim_ang = Rnd( 0, 7 );
///* スプライト番号 */
//pAct->bmpNo = bmpNo;
/* 表示優先度 */
pAct->dispPrio = 2;
/* */
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;
/* */
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;
/* */
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;
/* */
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
};
}